歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux操作系統中常見的Ext3文件系統

Linux操作系統中常見的Ext3文件系統

日期:2017/2/25 10:37:18   编辑:Linux教程

  Ext3文件系統是直接從Ext2文件系統發展而來,目前Ext3文件系統已經非常穩定可靠,它完全兼容Ext2文件系統,用戶可以平滑地過渡到一個日志功能健全的文件系統。Ext3日志文件系統的思想就是對文件系統進行的任何高級修改都分兩步進行。首先,把待寫塊的一個副本存放在日志中;其次,當發往日志的I/O 數據傳送完成時(即數據提交到日志),塊就寫入文件系統。當發往文件系統的I/O 數據傳送終止時(即數據提交給文件系統),日志中的塊副本就被丟棄。

  Ext3日志模式

  Ext3既可以只對元數據做日志,也可以同時對文件數據塊做日志。具體來說,Ext3提供以下三種日志模式:

  日志(Journal )

  文件系統所有數據和元數據的改變都記入日志。這種模式減少了丟失每個文件所作修改的機會,但是它需要很多額外的磁盤訪問。例如,當一個新文件被創建時,它的所有數據塊都必須復制一份作為日志記錄。這是最安全和最慢的Ext3日志模式。

  預定(Ordered )

  只有對文件系統元數據的改變才記入日志。然而,Ext3文件系統把元數據和相關的數據塊進行分組,以便把元數據寫入磁盤之前寫入數據塊。這樣,就可以減少文件內數據損壞的機會;例如,確保增大文件的任何寫訪問都完全受日志的保護。這是缺省的Ext3 日志模式。

  寫回(Writeback )

  只有對文件系統元數據的改變才記入日志;這是在其他日志文件系統發現的方法,也是最快的模式。轉自:考試網 - [Examw.Com]

  日志塊設備(JBD)

  Ext3 文件系統本身不處理日志,而是利用日志塊設備(Journaling Block Device)或叫JBD 的通用內核層。Ext3文件系統調用JDB例程以確保在系統萬一出現故障時它的後續操作不會損壞磁盤數據結構。Ext3 與JDB 之間的交互本質上基於三個基本單元:日志記錄,原子操作和事務。

  日志記錄本質上是文件系統將要發出的低級操作的描述。在某些日志文件系統中,日志記錄只包括操作所修改的字節范圍及字節在文件系統中的起始位置。然而,JDB 層使用的日志記錄由低級操作所修改的整個緩沖區組成。這種方式可能浪費很多日志空間(例如,當低級操作僅僅改變位圖的一個位時),但是,它還是相當快的,因為JBD 層直接對緩沖區和緩沖區首部進行操作。

  修改文件系統的任一系統調用都通常劃分為操縱磁盤數據結構的一系列低級操作。如果這些低級操作還沒有全部完成系統就意外宕機,就會損壞磁盤數據。為了防止數據損壞,Ext3文件系統必須確保每個系統調用以原子的方式進行處理。原子操作是對磁盤數據結構的一組低級操作,這組低級操作對應一個單獨的高級操作。

  出於效率的原因,JBD 層對日志的處理采用分組的方法,即把屬於幾個原子操作處理的日志記錄分組放在一個單獨的事務中。此外,與一個處理相關的所有日志記錄都必須包含在同一個事務中。一個事務的所有日志記錄都存放在日志的連續塊中。JBD層把每個事務作為整體來處理。例如,只有當包含在一個事務的日志記錄中的所有數據提交給文件系統時才回收該事務所使用的塊。

Copyright © Linux教程網 All Rights Reserved