歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 深入認識Linux中的ext2與ext3文件系統

深入認識Linux中的ext2與ext3文件系統

日期:2017/2/28 17:26:19   编辑:Linux教程

概要:

在Red Hat Linux 7.2中,Red Hat首次支持日志文件系統ext3。ext3文件系統是對穩定的ext2文件系統的改進,有幾項優點。本文概述這些優點,解釋Red Hat公司對ext3進行了何種測試,略述性能調試(為高級用戶)。

有數種基於Linux的日志文件系統正在開發之中。本文不言及這些日志文件系統,也不准備與這些日志文件系統進行比較。

ext3的優點

為什麼你需要從ext2遷移到ext3呢?以下有四個主要原因:可用性、數據完整性、速度、易於遷移。

可用性

在非正常當機後(停電、系統崩潰),只有在通過e2fsck進行一致性校驗後,ext2文件系統才能被裝載使用。運行e2fsck的時間主要取決於 ext2文件系統的大小。校驗稍大一些的文件系統(幾十GB)需要很長時間。如果文件系統上的文件數量多,校驗的時間則更長。校驗幾百個GB的文件系統可能需要一個小時或更長。這極大地限制了可用性。

相比之下,除非發生硬件故障,即使非正常關機,ext3也不需要文件系統校驗。這是因為數據是以文件系統始終保持一致方式寫入磁盤的。在非正常關機後,恢復ext3文件系統的時間不依賴於文件系統的大小或文件數量,而依賴於維護一致性所需“日志”的大小。使用缺省日志設置,恢復時間僅需一秒(依賴於硬件速度)。

數據完整性

使用ext3文件系統,在非正常關機時,數據完整性能得到可靠的保障。你可以選擇數據保護的類型和級別。你可以選擇保證文件系統一致,但是允許文件系統上的數據在非正常關機時受損;這是可以在某些狀況下提高一些速度(但非所有狀況)。你也可以選擇保持數據的可靠性與文件系統一致;這意味著在當機後,你不會在新近寫入的文件中看到任何數據垃圾。這個保持數據的可靠性與文件系統一致的安全的選擇是缺省設置。

速度

盡管ext3寫入數據的次數多於ext2,但是ext3常常快於ext2(高數據流)。這是因為ext3的日志功能優化硬盤磁頭的轉動。你可以從3種日志模式中選擇1種來優化速度,有選擇地犧牲一些數據完整性。

第一種模式,data=writeback,有限地保證數據完整,允許舊數據在當機後存在於文件當中。這種模式可以在某些情況下提高速度。(在多數日志文件系統中,這種模式是缺省設置。這種模式為ext2文件系統提供有限的數據完整性,更多的是為了避免系統啟動時的長時間的文件系統校驗)

第二種模式,data=orderd(缺省模式),保持數據的可靠性與文件系統一致;這意味著在當機後,你不會在新近寫入的文件中看到任何垃圾數據。

第三種模式,data=journal,需要大一些的日志以保證在多數情況下獲得適中的速度。在當機後需要恢復的時間也長一些。但是在某些數據庫操作時速度會快一些。

在通常情況下,建議使用缺省模式。如果需要改變模式,請在/etc/fstab文件中,為相應的文件系統加上data=模式的選項。詳情可參看mount命令的man page在線手冊(執行man mount)。

易於遷移

你可以不重新格式化硬盤,並且很方便的從ext2遷移至ext3而享受可靠的日志文件系統的好處。對,不需要做長時間的、枯燥的、有可能失誤的“備份-重新格式化-恢復”操作,就可以體驗ext3的優點。有兩種遷移的方法:

· 如果你升級你的系統,Red Hat Linux安裝程序會協助遷移。需要你做的工作 就是為每一個文件系統按一下選擇按鈕。

· 使用tune2fs程序可以為現存的ext2文件系統增加日志功能。如果文件系統在轉換的過程已經被裝載了(mount),那麼在root目錄下會出現文件”.journal”;如果文件系統沒有被裝載,那麼文件系統中不會出現該文件。轉換文件系統,只需要運行tune2fs –j /dev/hda1(或者你要轉換的文件系統所在的任何設備名稱),同時把文件/etc/fstab中的ext2修改為ext3。如果你要轉換自己的根文件系統,你必須使用initrd引導啟動。參照mkinitrd的手冊描述運行程序,同時確認自己的LILO或GRUB配置中裝載了initrd(如果沒有成功,系統仍然能啟動,但是根文件系統會以ext2形式裝載,而不是ext3,你可以使用命令cat /proc/mounts 來確認這一點。)詳情可參看tune2fs命令的man page在線手冊(執行man tune2fs)。

為什麼使用ext3?

為什麼Red Hat選擇ext3作為我們第一個正式支持的日志文件系統?這是因為ext3具有以下優點。注意這些優點每一個都不是ext3所獨有的(其它的日志文件系統同樣具有以下的某些優點),但是只有ext3同時具有所有的這些優點。

· ext3全面兼容ext2,允許用戶在增加日志功能時,保留現存的文件系統。任何想要去除文件系統的日志功能的用戶也不需要做很多工作(我們沒期望很多人這麼做)。而且,只要安裝了最新版的e2fsprogs程序(例如Red Hat Linux 7.2中自帶的),一個ext3文件系統不需要去掉日志功能,也能以ext2形式裝載。

· ext3從ext2不斷增強和改進自身功能的歷史中獲益,並且以後還將吸收ext2的優秀特性。也就是說ext3繼承了ext2許多已有的優點,同時 ext2新增加的一些特性,也會很容易的轉移到ext3中。例如當擴展屬性或者Htree增加到ext2中時,把這些特性加到ext3中也是很容易的(擴展屬性實現訪問控制列表,Htree可以提高目錄操作的速度和改進大目錄的可伸縮性)。

· ext3和ext2一樣是由來自多家廠商的開發人員聯合開發的,它的開發不依賴於任何個人或組織。

· ext3提供並使用了一個通用日志層(jbd),該層可以在其它環境中使用。Ext3不但能在文件系統中使用日志功能,而且能夠應用到其它設備中,例如目前Linux開始支持的NVRAM設備,ext3就能夠支持。

· ext3有多種日志模式。它可以記錄所有的文件數據和(metadata)元數據(data=journal),也可以只記錄元數據(data= ordered或data=writeback)。當你不記錄文件數據時,你可以選擇在記錄元數據前修改文件系統數據(data=ordered;這樣所有的元數據記錄都指向了有效數據),或不特殊地處理文件數據(data=writeback;文件系統保持一致性,但是非正常關機後,文件中會有舊數據存在)。這樣,管理員可以在速度和文件數據一致性兩方面權衡利弊,並且可以為某些特殊的應用調整速度。

· ext3有很強的平台兼容性,它可以在little-endian和big-endian系統上,支持32和64位體系結構,。任何能夠訪問ext2文件系統的操作系統,都能訪問ext3文件系統,目前包括各種Unix版本及其變種,BeOS,Windows。

· ext3不要求內核做大的修改,也不需要增加新的系統調用,因此目前沒有什麼難題能夠阻止Linux Torvalds把ext3加入他正式的Linux內核版本中。Ext3已經集成到了Alan Cox的 –ac內核中,很快就會進入到Linus的正式內核中。

· 當由於軟件或硬件錯誤導致文件系統崩潰時,文件修復程序e2fsck在修復數據方面有很好的成功記錄。ext3使用了和e2fsck相同的代碼來修復崩潰的文件系統,因此在出現數據崩潰錯誤時,ext3和ext2同樣具有防止數據丟失的優點。

我們要再次聲明這些優點中的每一點都不是ext3所獨有的。它們中的大部分是別的文件系統也有的。我們不過是聲明這些所有的優點真的是只有ext3才全具備。我們是根據用戶的要求,來決定我們目前應該支持哪些特性。根據我們的測試,ext3是目前最能滿足我們用戶需要的。我們將繼續評估其它的文件系統,以便於在以後的Red Hat Linux版本中加入這些文件系統。

Copyright © Linux教程網 All Rights Reserved