EXT3文件系統,第二延伸文件系統(ext2),Linux爲何選擇EXT3

EXT2 / EXT3文件系統,第二延伸文件系統(ext2),Linux為何選擇EXT3

第二延伸文件系統(ext2)介紹

自從我們開始使用計算機後,大多數的使用者都曾經使用過文件,而我們總是對關於硬盤如何正確地儲存文件感到好奇, 它看起來似乎非常抽象,所以今天讓我們看一看 Linux 操作系統中較新的文件系統版本第二延伸系統( ext2 ) ,並瞭解它各方面之用途。

這個文件系統是主要來自於 Andrew Tanenbaum 所寫的 Minix 文件系統,它也是唯一可用在免費操作系統的文件系統,稱之為 Minix。它後來修正為 Linux 所慣用的文件系統並稱為延伸文件系統,到現在 Linux 的文件系統稱為 ext2 (第二延伸文件系統),它是延伸文件系統中較新的版本並支持訪問控制列(ACL)。

但是在著手研究 ext2 文件系統之前,讓我們先了解文件系統中之專有名詞的關聯。

  • Block (區塊):

文件在磁盤中被儲存在整數固定大小的區塊中, 那區塊的大小通常是2的次方。在默認中,ext2文件系統的區塊大小是4K。研究顥示, 4K字節對於一磁盤區塊而言是最理想的大小,假如一個文件的大小無法達成4K字節的倍數時, 那最後的磁盤區塊部分就會被浪費。在最不好的例子中幾乎在完整的區塊中就有一字節被浪費掉。

對於這情況有一點技巧,假如我們選擇了一個較大的區塊,則對於小的文件而言會有一些磁盤空間被浪費掉。 另外一方面,假如我們使用一個非常小的區塊,則磁盤區塊數量會成指數的添加, 因此對於文件而言需有更多的搜尋時間。所以,選擇區塊大小必須三思而後行。

當一個文件被加載到內存時,那磁盤區塊會被放在主存儲器中之緩衝緩存區,假如它們已經變更了, 區塊在緩衝區中會被標記為’Dirty’, 其意指的是這些區塊必須先寫到磁盤中來維持磁盤上的區塊及在主存儲器中的區塊之一致性.

  • Superblock:

superblock 是在每個文件系統開始的位置, 其儲存信息像是文件系統的大小,空的和填滿的區塊,它們各自的總數和其他諸如此類的數據。 要從一個文件系統中存取任何文件皆須經過文件系統中之superblock。如果superblock損壞了, 它可能無法從磁盤中去取得數據。

  • Inode:

對於文件系統而言一個inode是在inode表格中的一個項目。 Inode包含了所有文件有關的信息例如名稱、大小、連接的數量、數據創建之日期,修改及存取的時間。 它也包含了磁盤區塊的文件指向(pointer)。pointer是用來記錄文件被儲存在何處。

Ext2fs公用程序

現在讓我們來看看一些標準Linux版本之ext2fsprogs公用程序:

  • e2fsck

這個程序允許我們在ext2文件系統上去運行文件系統檢查,它像是Windows中之 Scandisk一樣,但卻是一種更有效的系統檢查方式。在此,我們可以加上一個文件名來檢查上面之損壞區塊。

警告:絕對不要在任何已掛載的文件系統上運行 e2fsck/fsck。假如我們想要去運行 fsck,我們應該卸下文件系統後再去運行 fsck(亦即需要 umount 該扇區囉)。如果不這樣做,可能會讓文件系統毀損。

  • tune2fs

這允許我們去調整文件系統的參數配置。在此,我們可以配置在兩個文件系統檢查間之最大掛載總數、 容量標記、錯誤行為、變更保留的信息和許多其他參數。

  • dumpe2fs

這個程序將ext2文件系統狀態輸出到標準的設備上。它對於分析問題以及存取一般關於文件系統用法的信息是有幫助的。

  • mke2fs

這個程序允許我們在先前尚未格式化的磁盤中,去創建一個ext2的文件系統。 它提供了許多的選項包含區塊的大小、段落的大小、每一個inode的字節到多種磁盤陣列的選項。 mke2fs通常在第一次安裝的期間運行,並創建完成新的 root 及其他的文件系統。(就相當於 DOS 底下的 format 程序啦!)

  • badblocks

這個程序去搜尋磁盤並檢查區塊是否已經損壞,它通常會在新的文件系統安裝程序前運行, 但請不要在掛載好的文件系統上運行。

在Linux文件系統中最新的版本被稱為ext3,並已有 Journaling 之支持。Journaling 文件系統對於所有已完成的步驟,持有記錄以及檢查點,所以假使系統死機時,它可以從最後的檢查點來還原文件系統。

為何選擇 EXT3 呢

Red Hat Linux 7.2 為何決定採用ext3文件系統?

Red Hat決定在7.2版中使用 ext3 的格式來作為默認的文件系統在,引起相當多熟悉 Linux 使用者的關注,但 ext3 並不是唯一的,也不是眾多日誌式 (journaling)文件系統中最佳的。

傳統的 Linux 文件系統 ext2,對於在相當小容量的硬盤上之小文件而言是相當的理想。隨著硬盤的容量及文件大小大幅添加, 整體性能會下滑。有些原因是來自讀取未有效利用的磁盤空間,有些原因是來自不正常關機或是電源中斷文件系統的恢復時間。 文件系統經由 e2fsck 在一個 1GB 的硬盤做檢查是毫不費力的,但相同的測試在 40GB 的硬盤上可能會相當的秏費時間。 所以就有日誌式文件系統的誕生。

這些記錄硬盤狀態的文件稱為日誌。 所以在不正確關機之後重新啟動需要參考到日誌文件來重新回覆文件系統的狀態, 而非將整個硬盤做掃描。 同時, 日誌式文件系統可以有更高的硬盤空間使用效率及使數據在各種不同之文件大小中能夠快速的讀取及寫入。

Linux並不是只有一個日誌式的文件系統,它有四個,或是說成三又二分之一個:

Reiser文件系統:

依照 Hans Reiser 的名字而取。Reiser 是眾所皆知的一種新式快速記錄硬盤內容的文件系統,它曾經被廣泛的使用超過一年, 且這個文件系統被推薦安裝在 SuSE7.1版及7.2版上。

JFS文件系統:

經由 IBM 所開發的,其設計的理念在於提供一高速的處理能力。 IBM 從 2000 年 2 月間開始經過一系列的測試版本,它的 1.0 版本已在六月底公開發表。

XFS 文件系統:

XFS 是 SGI 公司在 Linux 上所開發的日誌式文件系統, 它也提供了所有以完整發展為特色的日誌式文件系統。

ext3 文件系統:

ext3 是之前所提及的二分之一日誌式文件系統。 為何只有一半呢?原因是 ext3 是一種迭在傳統 ext2 文件系統上面並保有磁盤活動紀錄的日誌式文件系統。 所以當不正確關機時,文件的恢復速度會比 ext2 文件系統來的快。但是,因為它是被結合在 ext2 中,它會遭受到一些老舊系統的限制並因此不能利用所有日誌式文件系統的完整功能。 這樣並非是完全不好,因為 ext3 分割區並沒有不同於 ext2 文件系統,因此如 ext3 損毀要回到 ext2文件系統卻是非常的簡單。

Red Hat 是第一個採用 ext3 的公司,它嘗試性的將 Linux 文件系統推向日誌式文件系統。當公司計劃在 7.2 版的第二個測試版本採用 ext3 時,公司中首席核心開發者Michael K. Johnson便迅速的提供一個原理的闡述:

”為什麼你想要從 ext2 轉換到 ext3 呢?有四個主要的理由: 可利用性、數據完整性、速度及易於轉換”。可利用性,他指出,這意味著從系統中止到快速重新復原而不是持續的讓 e2fsc k運行長時間的修復。ext3 的日誌式條件可以避免數據毀損的可能。他也指出”除了寫入若干數據超過一次時, ext3 往往會較快於 ext2,因為 ext3 的日誌使硬盤讀取頭的移動能更有效的進行“。 然而或許決定的因素還是在Johnson先生的第四個理由中:

“它是可以輕易的從 ext2 變更到 ext3 來獲得一個強而有力的日誌式文件系統而不需要重新做格式化” 他說道。”那是正確的,為了體驗一下 ext3 的好處是不需要去做一種長時間的, 冗長乏味的且易於產生錯誤的備份工作及重新格式化的動作”。


分享到:


相關文章: