Red Hat日志文件系統-ext3
2024-07-21 02:37:20
供稿:網友
翻譯:劉啟文
概要
在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版本中加入這些文件系統。
為什么要信任ext3?
Red Hat為了確保ext3能夠安全地處理用戶數據,做了以下測試:
· 我們在各種配置下進行了大量的壓力測試。這包括在各種硬件和文件系統配置上,進行數千小時的“專項”負載測試,以及許多用例(use case)測試。
· 我們在多種條件下觀測ext3,包括在某一點上內存分配錯誤的情況。每次代碼更新,我們都反復地強制性地制造錯誤來測試在這些條件下文件系統的一致性。
· 我們測試出ext3和虛擬內存(VM)子系統之間的交互性能較差,因而進行了改進。日志文件系統對VM子系統有更大的壓力,并且我們在測試的過程中發現并修改了幾個ext3和VM子系統中的錯誤。經過了數千個小時的這種測試,我們對ext3文件系統布滿了信心。
· 從2.2內核系列一直到現在的2.4內核系統,我們對ext3進行了一年多的β測試。甚至在正式的β測試以前,ext3已經被放在產品中,在一些環境中使用了。ext3應用在一些訪問量很大的服務器上超過了兩年,例如rpmfind.net服務器。
· 為了處理潛在的硬件故障引起的崩潰,我們已經安排答應用戶在“當機”后選擇是否檢測文件系統的一致性,即使文件系統被標記為“clean”。這是因為硬件故障和大部分的電力故障,幾乎能在磁盤的任何地方產生“垃圾”數據。按下重起按鈕可能不會產生這類問題,但是現實中由雷擊或電壓巨變引起的電力故障,是會破壞正在寫入磁盤的數據的。IDE磁盤比SCSI磁盤更輕易產生這類問題,部分原因是因為IDE磁盤通常使用松散緩存(looser cancheing) 算法。
·這種特性是使用文件/.autofsk來實現的,假如根用戶在正常情況下刪除了這個文件,則在引導時系統可以提供選擇是否檢查文件系統的一致性。假如/.autofsk不存在了并且用戶選擇對文件系統進行強制檢查,那么這種情況和存在文件/forcefsck的效果是一樣的。
性能調試建議
調整電梯(elevator)算法設置
ext3文件系統和ext2文件系統有一些不同,這種不同表現在多方面。高級用戶可以調整文件系統和I/O系統參數來改進性能。這里主要介紹性能調試的一些基本方法。當然,所有的性能調試都需要針對特定的應用程序;這里沒有