Linux日誌檔案系統及效能分析(轉)

ba發表於2007-08-15
Linux日誌檔案系統及效能分析(轉)[@more@]  日誌檔案系統可以在系統發生斷電或者其它系統故障時保證整體資料的完整性,Linux是目前支援日誌檔案系統最多的作業系統之一,本文重點研究了Linux常用的日誌檔案系統:EXT3、ReiserFS、XFS和JFS日誌技術,並採用標準的測試工具PostMark和 Bonnie++對它們進行了測試,給出了詳細的效能分析,對Linux伺服器應用具有重要的參考價值。
  
  一、概述
  
  所謂日誌檔案系統是在傳統檔案系統的基礎上,加入檔案系統更改的日誌記錄,它的設計思想是:跟蹤記錄檔案系統的變化,並將變化內容記錄入日誌。日誌檔案系統在磁碟分割槽中儲存有日誌記錄,寫操作首先是對記錄檔案進行操作,若整個寫操作由於某種原因(如系統掉電)而中斷,系統重啟時,會根據日誌記錄來恢復中斷前的寫操作。在日誌檔案系統中,所有的檔案系統的變化都被記錄到日誌,每隔一定時間,檔案系統會將更新後的後設資料及檔案內容寫入磁碟。在對後設資料做任何改變以前,檔案系統驅動程式會向日志中寫入一個條目,這個條目描述了它將要做些什麼,然後它修改後設資料。目前Linux的日誌檔案系統主要有:在Ext2基礎上開發的Ext3,根據物件導向思想設計的ReiserFS,由SGI IRIX系統移植過來的XFS,由IBM AIX系統移植過來的JFS,其中EXT3完全相容EXT2,其磁碟結構和EXT2完全一樣,只是加入日誌技術;而後三種檔案系統廣泛使用了B樹以提高檔案系統的效率。
  
  二、Ext3
  
  Ext3 檔案系統是直接從Ext2檔案系統發展而來,目前Ext3檔案系統已經非常穩定可靠,它完全相容Ext2檔案系統,使用者可以平滑地過渡到一個日誌功能健全的檔案系統。Ext3日誌檔案系統的思想就是對檔案系統進行的任何高階修改都分兩步進行。首先,把待寫塊的一個副本存放在日誌中;其次,當發往日誌的 I/O 資料傳送完成時(即資料提交到日誌),塊就寫入檔案系統。當發往檔案系統的I/O 資料傳送終止時(即資料提交給檔案系統),日誌中的塊副本就被丟棄。
  
  2.1 Ext3日誌模式
  
  Ext3既可以只對後設資料做日誌,也可以同時對檔案資料塊做日誌。具體來說,Ext3提供以下三種日誌模式:
  
  日誌(Journal )
  
  檔案系統所有資料和後設資料的改變都記入日誌。這種模式減少了丟失每個檔案所作修改的機會,但是它需要很多額外的磁碟訪問。例如,當一個新檔案被建立時,它的所有資料塊都必須複製一份作為日誌記錄。這是最安全和最慢的Ext3日誌模式。
  
  預定(Ordered )
  
  只有對檔案系統後設資料的改變才記入日誌。然而,Ext3檔案系統把後設資料和相關的資料塊進行分組,以便把後設資料寫入磁碟之前寫入資料塊。這樣,就可以減少檔案內資料損壞的機會;例如,確保增大檔案的任何寫訪問都完全受日誌的保護。這是預設的Ext3 日誌模式。
  
  寫回(Writeback )
  
  只有對檔案系統後設資料的改變才記入日誌;這是在其他日誌檔案系統發現的方法,也是最快的模式。
  
  2.2 日誌塊裝置(JBD)
  
  Ext3 檔案系統本身不處理日誌,而是利用日誌塊裝置(Journaling Block Device)或叫JBD 的通用核心層。Ext3檔案系統呼叫JDB例程以確保在系統萬一出現故障時它的後續操作不會損壞磁碟資料結構。Ext3 與JDB 之間的互動本質上基於三個基本單元:日誌記錄,原子操作和事務。
  
  日誌記錄本質上是檔案系統將要發出的低階操作的描述。在某些日誌檔案系統中,日誌記錄只包括操作所修改的位元組範圍及位元組在檔案系統中的起始位置。然而,JDB 層使用的日誌記錄由低階操作所修改的整個緩衝區組成。這種方式可能浪費很多日誌空間(例如,當低階操作僅僅改變點陣圖的一個位時),但是,它還是相當快的,因為JBD 層直接對緩衝區和緩衝區首部進行操作。
  
  修改檔案系統的任一系統呼叫都通常劃分為操縱磁碟資料結構的一系列低階操作。如果這些低階操作還沒有全部完成系統就意外當機,就會損壞磁碟資料。為了防止資料損壞,Ext3檔案系統必須確保每個系統呼叫以原子的方式進行處理。原子操作是對磁碟資料結構的一組低階操作,這組低階操作對應一個單獨的高階操作。
  
  出於效率的原因,JBD 層對日誌的處理採用分組的方法,即把屬於幾個原子操作處理的日誌記錄分組放在一個單獨的事務中。此外,與一個處理相關的所有日誌記錄都必須包含在同一個事務中。一個事務的所有日誌記錄都存放在日誌的連續塊中。JBD層把每個事務作為整體來處理。例如,只有當包含在一個事務的日誌記錄中的所有資料提交給檔案系統時才回收該事務所使用的塊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958919/,如需轉載,請註明出處,否則將追究法律責任。

相關文章