系統介紹
日誌檔案系統(journaling file system)是一個具有故障恢復能力的檔案系統,在這個檔案系統中,因為對目錄以及點陣圖的更新信息總是在原始的磁碟日誌被更新之前寫到磁碟上的一個連續的日誌上,所以它保證了數據的完整性。當發生系統錯誤時,一個全日誌檔案系統將會保證磁碟上的數據恢復到發生系統崩潰前的狀態。同時,它還將覆蓋未保存的數據,並將其存在如果計算機沒有崩潰的話這些數據可能已經遺失的位置,這是對關鍵業務套用來說的一個很重要的特性。
並不是所有的作業系統都提供了同樣的日誌技術。Windows NT提供了一個完整系統的不太健壯的版本。如果你的Windows NT系統崩潰了,你可能不會丟失整個磁碟卷,但你可能會丟失系統崩潰前沒寫到磁碟的所有數據。出於同樣的原因,預設的Linux系統,ext2fs,根本沒有登記日誌。這就意味著,一旦系統崩潰——雖然在Linux系統中不常見——就會毀壞整個磁碟卷。
舉例
例如,有的是默認的系統日誌檔案,有的僅用於安全訊息,有的記載 cron 任務的日誌。 當你在試圖診斷和解決系統問題時,如試圖載入
核心驅動程式或尋找對系統未經授權的使用企圖時,日誌檔案會很有用。本節討論要到哪裡去尋找日誌檔案,如何查看日誌檔案,以及在日誌檔案中查看什麼。 某些日誌檔案被叫做 syslogd 的
守護進程控制。被 syslogd 維護的日誌訊息列表可以在 /etc/syslog.conf 配置檔案中找到。
儘管
Linux可以支持種類繁多的檔案系統,但是幾乎所有的現代Linux發行版都用
ext4作為默認的檔案系統。
ext4的設計者主要考慮的是檔案系統性能方面的問題。ext4在寫入檔案內容的同時並沒有同時寫入檔案的meta-data(和檔案有關的信息,例如:
許可權、
所有者以及創建和訪問時間)。換句話說,Linux先寫入檔案的內容,然後等到有空的時候才寫入檔案的meta-data。這樣若出現寫入檔案內容之後但在寫入檔案的meta-data之前系統突然斷電,就可能造成在檔案系統就會處於不一致的狀態。在一個有大量檔案操作的系統中出現這種情況會導致很嚴重的後果。
日誌檔案系統比傳統的檔案系統安全,因為它用獨立的日誌檔案跟蹤磁碟內容的變化。就像關係型資料庫(
RDBMS),日誌檔案系統可以用
事務處理的方式,提交或撤消檔案系統的變化。
日誌式檔案系統在強調
數據完整性的
企業級伺服器中有著重要的需求,是檔案系統發展的方向。日誌式檔案系統的思想來自於如
Oracle等
大型資料庫。資料庫操作往往是由多個相關的、相互依賴的子操作組成,任何一個子操作的失敗都意味著整個操作的無效性,對資料庫數據的任何修改都要回復到操作以前的狀態。日誌式檔案系統採用了類似的技術。
在分區中保存有一個日誌
記錄檔案,檔案系統寫操作首先是對記錄檔案進行操作,若整個寫操作由於某種原因(如系統掉電)而中斷,則在下次系統啟動時就會讀日誌記錄檔案的內容來恢復沒有完成的寫操作,這個過程一般只需要幾秒鐘。
linux環境下
SGI的xfs檔案系統
SGI最新發布
xfs為 1.0.1版。SGI的XFS 1.0是可被linux的2.4.x核心支持.在redhat上運行的很好,SGI還在redhat上開發了一個安裝程式.
其它linux發行版的安裝程式也正在開發中.
SGI的xfs被稱為業界最先進的、最具可升級性的檔案系統技術。它是一個全64位,快速、穩固的日誌檔案系統,多年用於sgi的irix作業系統。sgi決定支持linux社區,將關鍵的基本架構技術授權於linux。它以開放資源形式發布了他們自己擁有的xfs的原始碼,並開始進行移植。此工作進展得很快,目前已進入beta版階段。作為一個64位檔案系統,
xfs可以支持超大數量的檔案(9g×1gb,甚至更大的18g×1gb),可在大型 2d 和 3d 數據方面提供顯著的性能。xfs有能力預測其它檔案系統薄弱環節,同時xfs提供了在不妨礙性能的情況下增強可靠性和快速的事故恢復。
sgi的xfs可為linux和開放資源社區帶來的新特性有:
可升級性
xfs被設計成可升級,以面對大多數的存儲容量和i/o存儲需求,可處理大型檔案和包含巨大數量檔案的大型目錄,滿足二十一世紀快速增長的磁碟需求。xfs有能力動態地為檔案分配索引空間,使系統形成高效支持大數量檔案的能力。在它的支持下,用戶可使用1exabyte (1g×1gb) 大的檔案,遠遠大於現在最大的檔案系統。
優秀的i/o 性能
典型的現代伺服器使用大型的條帶式
磁碟陣列,以提供達數gb/秒的總頻寬。
xfs可以很好地滿足i/o請求的大小和並發i/o請求的數量。
系統排錯
xfs可以在一秒內從大多數意外中斷中恢復。傳統檔案系統必須在中斷後做一些特定的檔案系統檢查,可能會花費數小時才完成。xfs避免了冗長的檔案系統檢查,可明顯地減少讀寫磁碟的時間。
xfs可作為root檔案系統,並被
lilo支持.在NFS伺服器上使用也沒問題.支持軟體raid和LVM.
Reiserfs檔案系統
Reiserfs檔案系統的主頁是在1997年7月23日,Hans Reiser把他的基於
平衡樹結構的
ReiserFS檔案系統在網上公布 。 這是ReiserFS的第一次公開亮相。此後,ReiserFS一直在Hans Reiser和領導下的開發小組下開發和發展,SuSE Linux也對它的發展起了重大的幫助。
由於ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。
Linux核心2.4.1-pre4版本開始包含ReiserFS檔案系統。當前的ReiserFS只能在Intel結構體系上使用,但支持其他
體系結構的
ReiserFS版本也正在積極開發中。
新一代的reiser4將於2002/9/30日發布.
ReiserFS是一種新型的檔案系統,在
藍點Linux中你可以選擇它來裝載你的Linux作業系統和其他應用程式和數據檔案。它通過一種與眾不同的方式--完全
平衡樹結構來容納數據,包括檔案數據,檔案名稱以及日誌支持。ReiserFS還以支持
海量磁碟和
磁碟陣列,並能在上面繼續保很快的搜尋速度和很高的效率。
ReiserFS是基於平衡樹的檔案系統結構,尤其對於大量檔案的巨型檔案系統,如伺服器上的檔案系統,搜尋速度要比
ext2快;ext2使用局部的
二分查找法,綜合性能比不上
ReiserFS。
空間分配和利用情況
ReiserFS里的目錄是完全動態分配的,因此不存在ext2中常見的無法回收巨型目錄占用的磁碟空間的情況。ReiserFS里小檔案(<4K)可以直接存儲進樹,小檔案讀取和寫入的速度更快,樹內節點是按
位元組對齊的,小的檔案可共享同一個硬碟塊,
節約大量空間。
Ext2使用固定大小的塊分配策略,也就是說,不到4K的小檔案也要占據4K的空間,導致的空間浪費比較嚴重。
先進的日誌機制
ReiserFS有先進的日誌(Journaling/logging)機制,在系統意外崩潰的時候,未完成的檔案操作不會影響到整個檔案系統結構的完整性。 ext2雖然健壯性很強,但一旦檔案系統被不正常地斷開,在下一次啟動時它將不得不進行漫長的檢查系統數
據結構的完整性的過程,這是為了防止數據丟失而必需的操作。對於較大型的伺服器檔案系統,這種"檔案系統檢查"可能要持續好幾個小時,在很多場合下這樣長的時間是無法接受的。 解決這個問題的一種技術"日誌檔案系統"。在日誌的幫助下,每個對數據結構的改變都被記錄下來,日誌在機制保證了在每個實際
數據修改之前,相應的日誌已經寫入硬碟。正因為如此,在系統突然崩潰時,在下次啟動幾秒鐘後就能恢復成一個完整的系統,系統也就能很快的使用了。
支持海量磁碟和優秀的綜合性能
ReiserFS是一個相當現代化的檔案系統,相比之下,
ext2雖然性能已經很好了,但其設計還只是20世紀80年代的水準。
ReiserFS的出現,使
Linux擁有了像Irix/AIX那樣的高檔商用
Unix才有的高級檔案系統。ReiserFS可輕鬆管理上百G的檔案系統,在企業級套用中有其用武之地,由於它的高效存儲和快速小檔案
I/O特點,它在桌面系統上也表現出色:啟動X視窗系統的時間ReiserFS比ext2少1/3。而ext2則無法管理2G以上的單個檔案,這也使得
ReiserFS在某些大型企業級套用中比
ext2要出色。
ReiserFS一個最受人批評的缺點是每升級一個版本,都將要將磁碟重新格式化一次,這個缺點也正在改進中。
IBM的jfs檔案系統
jfs(Journaled File System Technology for Linux)的開發者包括AIX(IBM的
Unix)的jfs的主要開發者。在AIX上,jfs已經經受住了考驗。它是可靠、快速和容易使用的。
2000年2月,ibm宣布在一個開放資源許可證下,移植linux版的jfs檔案系統。jfs也是一個有大量用戶安裝使用的企業級檔案系統。
使用日誌檔案系統,性能上會稍有損失,是因為當它保持一個日誌時,系統需要寫許多數據。但面對
系統崩潰及運行fsck,這是值得的。
jfs通過把同步日誌轉為異步日誌從而減少了性能的損耗。使用同步日誌,系統直接進行與檔案系統的動作成比例的日誌記錄操作;而異步日誌,日誌記錄較少,且其可以在不影響其它檔案系統操作時進行記錄,因而可減少日誌的開銷。
ext3是由開放資源社區開發的日誌檔案系統,主要開發人員是redhat的黑客高手stephen tweedie。
ext3被設計成是ext2的升級版本,儘可能地方便用戶從ext2fs向ext3fs遷移。ext3在ext2的基礎上加入了記錄
元數據的日誌功能,努力保持向前和向後的兼容性。這個檔案系統也許稱為ext2的下一個版本更為合適些。
ext3fs工作得很好。ext3fs最大的優點是向下兼容
ext2。而且ext3fs還支持異步的日誌,這意味著它的性能可能比ext2還好。但是使用
ext3檔案系統時要注意硬碟限額問題,在這個問題解決之前,不推薦在重要的套用上採用ext3+disk quota
ext3最新版本是針對kernel 2.4.8的ext3-2.4-0.9.6-248.gz
新推出的redhat 7.2B上正式啟用了
ext3,Turbolinux Server 6.5則同時支持 ReiserFS 及 ext3.
你可以把一個檔案系統在ext3和ext2自由切換.因為在ext2檔案系統上的ext3日誌檔案仍然存在,只是ext2不能認出而已.