歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 在2.4內核上使用ext3文件系統

在2.4內核上使用ext3文件系統

日期:2017/2/27 14:19:36   编辑:更多Linux
簡介 本文簡要敘述了如何在2.4版內核上安裝並運行ext3日志文件系統。

ext3是由 Stephen C. Tweedie 博士為2.2版內核編寫的。

這一文件系統由 Peter Braam 、 Andreas Dilger 、 Andrew Morton 和 Stephen Tweedie 遷移到2.4版內核上。 Ted Ts'o 維護著極為重要的e2fsprogs工具,並為ext3功能設計與實現提供了寶貴建議。 Alexander Viro 貢獻了ext3目錄搜索部分代碼。

對本文的任何評注,請電郵至 Andrew Morton 。

如對本軟件有懷疑、問題或者bug報告,請電郵至 ext3用戶郵件列表 。 該郵件列表訂閱指南參見 https://listman.redhat.com/mailman/listinfo/ext3-users/ 現狀 到七月末,ext3開發有些減緩,因為我們正為發布1.0版而努力。 對2.4.7內核而言,ext3補丁已經相當穩定、性能優越。在x86體系SMP環境下的測試已經完成。其它系統結構的測試報告(不論成功還是失敗),請發送到 ext3用戶 列表。

一個比較突出的問題是磁盤限額。在2.4.7內核的磁盤限額代碼中,有一些已知的因素會引起死鎖,ext3又增加了新的不穩定因素。這與在-ac內核中的磁盤限額代碼有很大不同,一旦這部分並入Linus的內核中,我們會繼續開發並測試ext3的磁盤限額代碼。這並不是說ext3加上磁盤限額一定會引起崩潰--但如果你長時間大負荷使用文件系統,代碼將會引起鎖死,你必須重啟才能恢復受影響的文件系統操作。我們只對-ac內核進行了磁盤限額代碼測試--在這種情況下工作完全正常。 安裝 從 http://www.zip.com.au/~akpm/Linux/ext3/ 下載最新的內核補丁 cd /usr/src/linux gunzip < ~/ext3-2.4-0.x.y.patch.gz patch -p1 注:原文如此,但實際需要用cat命令代替gunzip命令。 make menUConfig

在filesystems菜單中選取ext3。請同時勾選“JBD debugging support”,因為如果出了什麼錯,這可以給出有用的診斷信息。通常不用選取“Buffer head tracing”--它將耗用大量內存。然而如果你遇到ext3的‘聲明失敗'錯,請在提出bug報告前,設置為允許“緩沖跟蹤”,看看能否重復產生這個問題--那會產生大量有用信息。

ext3文件系統支持可以編譯進內核,也可以編譯成可掛載模塊。編進內核的好處在於,如果出現錯誤,可以簡化診斷信息的收集工作。

編譯並安裝內核。 其它軟件 你需要從 http://www.kernel.org/pub/linux/utils/util-linux/ 下載最新的 util-linux 包。 其中 mount 命令的改進如後文所述。

你需要從 http://e2fsprogs.sourceforge.net/ 下載e2fsprogs 1.25或更新的版本。 從ext2文件系統轉換 ext2文件系統可以通過創建一個日志文件轉換成ext3。新建日志文件,只要在目標文件系統(可以是已掛載的)上運行 tune2fs -j /dev/hdXX 命令。文件系統現在就成為ext3了。換句話說,只要簡單的卸載/重掛載它(當然要在相應修改/etc/fstab之後),你就可以把這個區作為ext3格式使用了。要用ext3格式掛載根分區,最簡單的方法是重啟。 建立新的ext3文件系統 只要運行 mke2fs -j /dev/hdXX 命令在該設備上建立新的ext3文件系統。 在ext2和ext3間切換 在正常卸載的情況下,ext3文件系統可以被當作ext2來掛載。未正常關機的ext3文件系統不能作為ext2被掛載,因為日志中仍有ext2無法處置的臨時數據。




e2fsprogs提供的e2fsck程序可以進行日志回溯,因此在已經破壞的ext3文件系統上運行 e2fsck -fy /dev/hdXX 就可以修復它,並允許以ext2格式掛載。

ext3軟件將拒絕掛載ext2文件系統--目前文件系統上一定要有日志文件才可以。 根文件系統的LILO選項 如果你的根文件系統是ext3,缺省情況下,支持ext3的內核將用ext3格式掛載根分區。你可以通過下述LILO選項取代缺省操作: LILO: linux rootfstype=ext2 你還可以通過LILO的 rootflags 向根文件系統提供掛載選項。例如: LILO: linux rootflags=data=journal 非LILO引導管理器 引導管理器LILO跟文件系統無關--它用預先定義好的塊表來定位和加載操作系統映像到內存中。 然而其它(更聰明的?)引導管理器例如SILO(SPARC上用的)和Open Firmware(PowerPC上用的)自帶文件系統驅動,它們可以直接打開和裝載ext2文件系統上的文件。

這在根文件系統是ext3,並且未正常關機的情況下會引起問題。處在這種狀態下的ext3與ext2不兼容--需要首先執行恢復操作。這一不兼容性記錄在文件系統的超級塊中,完全兼容ext2的引導管理器 應該 給出錯誤提示,並拒絕打開這個文件系統上的文件。這就是我們不希望見到的,系統不能啟動!

看來Open Firmware沒做完整的超級塊兼容性檢查,所以它仍然會從需要修復的ext3文件系統載入文件。只能說萬幸。

然而SILO 要進行 完整的兼容性檢查,從需要修復的ext3文件系統引導會令SILO產生“too many symlinks”錯誤,或別的什麼問題。要避免這類嚴重問題的發生,你需要確保引導區文件系統是ext2類型而不是ext3的(或打上補丁讓SILO略過兼容性檢查?)。 透明銜接文件系統 在只支持ext2和支持ext3的內核之間來回切換的問題之一是,需要告訴內核,用什麼文件系統類型來掛載所有設備。通常這需要修改 /etc/fstab 。

最新版的 mount 能認識ext3並自動選擇ext3文件系統類型。The version of fsck in e2fsprogs-1.23 and later can also do this if the fstype is auto . Here's the state of play: 如果 mount 命令沒有指定目標分區的fstype,而它自動檢測到了ext3,它將首先嘗試用ext3掛載,如果失敗,再嘗試用ext2。 如果 mount 命令帶 auto 參數來指定fstype,它將首先檢測ext3並嘗試掛載,如果失敗,再嘗試用ext2。 如果 fsck 命令帶 auto 參數來指定fstype,它將自動檢測文件系統類型,然後運行相應檢查(對ext2和ext3而言都是fsck.ext2)。 建議使用最新的e2fsprogs穩定版本,並在 /etc/fstab 中用 auto 指定fstype。

注意 :要使fstype auto 能正常工作,你 必須 使用e2fsprogs-1.23或更高版本!

注意 :如果你使用的是最近的Red Hat發行版,並且從官方安裝包自己編譯util-linux,你可能會在掛載文件系統時遇到掛載失敗問題。這是由於Red Hat在他們發行的版本中,給 mount 命令加上了“-O”參數。這一選項加在他們的 /etc/rc.d/rc.sysinit 裡,這就使得標准的 mount 命令返回“unrecognised option -O”錯誤。

解決方法是,編輯 /etc/rc.d/rc.sysinit ,去掉任何“-O no_netdev”字符串。

注意 :使用“自動”來指定根文件系統類型將使 /bin/df 不正常,從而使根文件系統的信息不能輸出。 解決方法:始終在 /etc/fstab 中指定根文件系統為ext3。 周期性文件系統檢查 e2fsck的功能之一是對文件系統進行常規的強制檢查,即使文件系統被標志為正常的。一般情況下,每二十次掛載或者每180天,兩個條件之一滿足就進行檢查。

這一例行檢查對ext3同樣有效,很可能你不希望這樣--我們選擇ext3的目的之一就是減少由fsck引起的漫長的停機時間。

因此對於ext3來說,關閉這一功能比較好。用以下命令 tune2fs -i 0 -c 0 /dev/hdxx 來禁止檢查。



注意:這意味著周期性的停機並手動檢查磁盤是 你的 責任。多數Linux發行版中,通過建立 /forcefsck 文件然後重啟,很容易做到。 外部日志 在0.9.5版上,ext3支持把日志放到另外



因此對於ext3來說,關閉這一功能比較好。用以下命令 tune2fs -i 0 -c 0 /dev/hdxx 來禁止檢查。

注意:這意味著周期性的停機並手動檢查磁盤是 你的 責任。多數Linux發行版中,通過建立 /forcefsck 文件然後重啟,很容易做到。 外部日志 在0.9.5版上,ext3支持把日志放到另外



Copyright © Linux教程網 All Rights Reserved