Linux ext2/ext3文件系統介紹

Linux_ext2/ext3文件系統介紹

Linux ext2/ext3文件系統介紹

Linux ext2/ext3文件系統使用索引節點來記錄文件信息,作用像windows的文件分配表。索引節點是一個結構,它包含了一個文件的長度、創建及修改時間、權限、所屬關係、磁盤中的位置等信息。一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一一個元素對應。系統給每個索引節點分配了一個號碼,也就是該節點在數組中的索引號,稱爲索引節點號。 linux文件系統將文件索引節點號和文件名同時保存在目錄中。所以,目錄只是將文件的名稱和它的索引節點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱爲一個連接。 對於一個文件來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個文件名與之對應。因此,在磁盤上的同一個文件可以通過不同的路徑去訪問它。

Linux缺省情況下使用的文件系統爲Ext2,ext2文件系統的確高效穩定。但是,隨着Linux系統在關鍵業務中的應用,Linux文件系統的弱點也漸漸顯露出來了:其中系統缺省使用的ext2文件系統是非日誌文件系統。這在關鍵行業的應用是一個致命的弱點。本文向各位介紹Linux下使用ext3日誌文件系統應用。

Ext3文件系統是直接從Ext2文件系統發展而來,目前ext3文件系統已經非常穩定可靠。它完全兼容ext2文件系統。用戶可以平滑地過渡到一個日誌功能健全的文件系統中來。這實際上了也是ext3日誌文件系統初始設計的初衷。

Ext3日誌文件系統的特點

1、高可用性

系統使用了ext3文件系統後,即使在非正常關機後,系統也不需要檢查文件系統。宕機發生後,恢復ext3文件系統的時間只要數十秒鐘。

2、數據的完整性:

ext3文件系統能夠極大地提高文件系統的完整性,避免了意外宕機對文件系統的破壞。在保證數據完整性方面,ext3文件系統有2種模式可供選擇。其中之一就是“同時保持文件系統及數據的一致性”模式。採用這種方式,你永遠不再會看到由於非正常關機而存儲在磁盤上的垃圾文件。

3、文件系統的速度:

儘管使用ext3文件系統時,有時在存儲數據時可能要多次寫數據,但是,從總體上看來,ext3比ext2的性能還要好一些。這是因爲ext3的日誌功能對磁盤的驅動器讀寫頭進行了優化。所以,文件系統的讀寫性能較之Ext2文件系統並來說,性能並沒有降低。

4、數據轉換

由ext2文件系統轉換成ext3文件系統非常容易,只要簡單地鍵入兩條命令即可完成整個轉換過程,用戶不用花時間備份、恢復、格式化分區等。用一個ext3文件系統提供的小工具tune2fs,它可以將ext2文件系統輕鬆轉換爲ext3日誌文件系統。另外,ext3文件系統可以不經任何更改,而直接加載成爲ext2文件系統。

5、多種日誌模式

Ext3有多種日誌模式,一種工作模式是對所有的'文件數據及metadata(定義文件系統中數據的數據,即數據的數據)進行日誌記錄(data=journal模式);另一種工作模式則是隻對metadata記錄日誌,而不對數據進行日誌記錄,也即所謂data=ordered或者data=writeback模式。系統管理人員可以根據系統的實際工作要求,在系統的工作速度與文件數據的一致性之間作出選擇。

實際使用Ext3文件系統

創建新的ext3文件系統,例如要把磁盤上的hda8分區格式化ext3文件系統,並將日誌記錄在/dev/hda1分區,那麼操作過程如下:

[root@stationxx root]# mke2fs -j /dev/hda8

mke2fs 1.24a (02-Sep-2001)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

在創建新的文件系統時,可以看到,ext3文件系統執行自動檢測的時間爲180天或每第31次被mount時,實際上這個參數可以根據需要隨意調節。

以下將新的文件系統mount到主分區/data目錄下:

[root@stionxx root]# mount -t ext3 /dev/hda8 /data

說明:以上將已格式化爲ext3文件系統的/dev/hda8分區加載到/data目錄下。

ext3 基於ext2 的代碼,它的磁盤格式和 ext2 的相同;這意味着,一個乾淨卸裝的 ext3 文件系統可以作爲 ext2 文件系統重新掛裝。Ext3文件系統仍然能被加載成ext2文件系統來使用,你可以把一個文件系統在ext3和ext2自由切換。

這時在ext2文件系統上的ext3日誌文件仍然存在,只是ext2不能認出日誌而已。

將ext2文件系統轉換爲ext3文件系統

將linux系統的文件系統由ext2轉至ext3,有以下幾處優點:第一系統的可用性增強了,第二數據集成度提高,第三啓動速度提高了,第四ext2與ext3文件系統之間相互轉換容易。

以轉換文件系統爲例,將ext2文件系統轉換爲ext3文件系統,命令如下:

[root@stationxx root]# tune2fs -j /dev/hda9

tune2fs 1.24a (02-Sep-2001)

Creating journal inode: done

This filesystem will be automatically checked every 31 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

這樣,原來的ext2文件系統就轉換成了ext3文件系統。注意將ext2文件系統轉換爲ext3文件系統時,不必要將分區缷載下來轉換。

轉換完成後,不要忘記將/etc/fstab文件中所對應分區的文件系統由原來的ext2更改爲ext3。

ext3日誌的存放位置

可以將日誌放置在另外一個存儲設備上,例如存放到分區/dev/hda8。例如要在/dev/hda8上創建一個ext3文件系統,並將日誌存放在外部設備/dev/hda2上,則運行以下命令:

[root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2

ext3文件系統修復

新的e2fsprogs中的e2fsck支持ext3文件系統。當一個ext3文件系統被破壞時,先卸載該設備,在用

e2fsck修復:

[root @stationxx root] # umount /dev/hda8

[root @stationxx root] #e2fsck -fy /dev/hda8

總而言之,ext3日誌文件系統是目前linux系統由ext2文件系統過度到日誌文件系統最爲簡單的一種選擇,實現方式也最爲簡潔。由於是直接從ext2文件系統發展而來,系統由ext2文件系統過渡到ext3日誌文件系統升級過程平滑,可以最大限度地保證系統數據的安全性。目前linux系統要使用日誌文件系統,最保險的方式就是選擇ext3文件系統。