Linux ext2/ext3文件系統(tǒng)詳解
時(shí)間:
若木1由 分享
Linux ext2/ext3文件系統(tǒng)使用索引節(jié)點(diǎn)來(lái)記錄文件信息,作用像windows的文件分配表。索引節(jié)點(diǎn)是一個(gè)結(jié)構(gòu),它包含了一個(gè)文件的長(zhǎng)度、創(chuàng)建及修改時(shí)間、權(quán)限、所屬關(guān)系、磁盤中的位置等信息。一個(gè)文件系統(tǒng)維護(hù)了一個(gè)索引節(jié)點(diǎn)的數(shù)組,每個(gè)文件或目錄都與索引節(jié)點(diǎn)數(shù)組中的唯一一個(gè)元素對(duì)應(yīng)。系統(tǒng)給每個(gè)索引節(jié)點(diǎn)分配了一個(gè)號(hào)碼,也就是該節(jié)點(diǎn)在數(shù)組中的索引號(hào),稱為索引節(jié)點(diǎn)號(hào)。 linux文件系統(tǒng)將文件索引節(jié)點(diǎn)號(hào)和文件名同時(shí)保存在目錄中。所以,目錄只是將文件的名稱和它的索引節(jié)點(diǎn)號(hào)結(jié)合在一起的一張表,目錄中每一對(duì)文件名稱和索引節(jié)點(diǎn)號(hào)稱為一個(gè)連接。 對(duì)于一個(gè)文件來(lái)說(shuō)有唯一的索引節(jié)點(diǎn)號(hào)與之對(duì)應(yīng),對(duì)于一個(gè)索引節(jié)點(diǎn)號(hào),卻可以有多個(gè)文件名與之對(duì)應(yīng)。因此,在磁盤上的同一個(gè)文件可以通過(guò)不同的路徑去訪問(wèn)它。
Linux缺省情況下使用的文件系統(tǒng)為Ext2,ext2文件系統(tǒng)的確高效穩(wěn)定。但是,隨著Linux系統(tǒng)在關(guān)鍵業(yè)務(wù)中的應(yīng)用,Linux文件系統(tǒng)的弱點(diǎn)也漸漸顯露出來(lái)了:其中系統(tǒng)缺省使用的ext2文件系統(tǒng)是非日志文件系統(tǒng)。這在關(guān)鍵行業(yè)的應(yīng)用是一個(gè)致命的弱點(diǎn)。本文向各位介紹Linux下使用ext3日志文件系統(tǒng)應(yīng)用。
Ext3文件系統(tǒng)是直接從Ext2文件系統(tǒng)發(fā)展而來(lái),目前ext3文件系統(tǒng)已經(jīng)非常穩(wěn)定可靠。它完全兼容ext2文件系統(tǒng)。用戶可以平滑地過(guò)渡到一個(gè)日志功能健全的文件系統(tǒng)中來(lái)。這實(shí)際上了也是ext3日志文件系統(tǒng)初始設(shè)計(jì)的初衷。
Ext3日志文件系統(tǒng)的特點(diǎn)
1、高可用性
系統(tǒng)使用了ext3文件系統(tǒng)后,即使在非正常關(guān)機(jī)后,系統(tǒng)也不需要檢查文件系統(tǒng)。宕機(jī)發(fā)生后,恢復(fù)ext3文件系統(tǒng)的時(shí)間只要數(shù)十秒鐘。
2、數(shù)據(jù)的完整性:
ext3文件系統(tǒng)能夠極大地提高文件系統(tǒng)的完整性,避免了意外宕機(jī)對(duì)文件系統(tǒng)的破壞。在保證數(shù)據(jù)完整性方面,ext3文件系統(tǒng)有2種模式可供選擇。其中之一就是“同時(shí)保持文件系統(tǒng)及數(shù)據(jù)的一致性”模式。采用這種方式,你永遠(yuǎn)不再會(huì)看到由于非正常關(guān)機(jī)而存儲(chǔ)在磁盤上的垃圾文件。
3、文件系統(tǒng)的速度:
盡管使用ext3文件系統(tǒng)時(shí),有時(shí)在存儲(chǔ)數(shù)據(jù)時(shí)可能要多次寫數(shù)據(jù),但是,從總體上看來(lái),ext3比ext2的性能還要好一些。這是因?yàn)閑xt3的日志功能對(duì)磁盤的驅(qū)動(dòng)器讀寫頭進(jìn)行了優(yōu)化。所以,文件系統(tǒng)的讀寫性能較之Ext2文件系統(tǒng)并來(lái)說(shuō),性能并沒(méi)有降低。
4、數(shù)據(jù)轉(zhuǎn)換
由ext2文件系統(tǒng)轉(zhuǎn)換成ext3文件系統(tǒng)非常容易,只要簡(jiǎn)單地鍵入兩條命令即可完成整個(gè)轉(zhuǎn)換過(guò)程,用戶不用花時(shí)間備份、恢復(fù)、格式化分區(qū)等。用一個(gè)ext3文件系統(tǒng)提供的小工具tune2fs,它可以將ext2文件系統(tǒng)輕松轉(zhuǎn)換為ext3日志文件系統(tǒng)。另外,ext3文件系統(tǒng)可以不經(jīng)任何更改,而直接加載成為ext2文件系統(tǒng)。
5、多種日志模式
Ext3有多種日志模式,一種工作模式是對(duì)所有的文件數(shù)據(jù)及metadata(定義文件系統(tǒng)中數(shù)據(jù)的數(shù)據(jù),即數(shù)據(jù)的數(shù)據(jù))進(jìn)行日志記錄(data=journal模式);另一種工作模式則是只對(duì)metadata記錄日志,而不對(duì)數(shù)據(jù)進(jìn)行日志記錄,也即所謂data=ordered或者data=writeback模式。系統(tǒng)管理人員可以根據(jù)系統(tǒng)的實(shí)際工作要求,在系統(tǒng)的工作速度與文件數(shù)據(jù)的一致性之間作出選擇。
實(shí)際使用Ext3文件系統(tǒng)
創(chuàng)建新的ext3文件系統(tǒng),例如要把磁盤上的hda8分區(qū)格式化ext3文件系統(tǒng),并將日志記錄在/dev/hda1分區(qū),那么操作過(guò)程如下:
[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.
在創(chuàng)建新的文件系統(tǒng)時(shí),可以看到,ext3文件系統(tǒng)執(zhí)行自動(dòng)檢測(cè)的時(shí)間為180天或每第31次被mount時(shí),實(shí)際上這個(gè)參數(shù)可以根據(jù)需要隨意調(diào)節(jié)。
以下將新的文件系統(tǒng)mount到主分區(qū)/data目錄下:
[root@stionxx root]# mount -t ext3 /dev/hda8 /data
說(shuō)明:以上將已格式化為ext3文件系統(tǒng)的/dev/hda8分區(qū)加載到/data目錄下。
ext3 基于ext2 的代碼,它的磁盤格式和 ext2 的相同;這意味著,一個(gè)干凈卸裝的 ext3 文件系統(tǒng)可以作為 ext2 文件系統(tǒng)重新掛裝。Ext3文件系統(tǒng)仍然能被加載成ext2文件系統(tǒng)來(lái)使用,你可以把一個(gè)文件系統(tǒng)在ext3和ext2自由切換。
這時(shí)在ext2文件系統(tǒng)上的ext3日志文件仍然存在,只是ext2不能認(rèn)出日志而已。
將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng)
將linux系統(tǒng)的文件系統(tǒng)由ext2轉(zhuǎn)至ext3,有以下幾處優(yōu)點(diǎn):第一系統(tǒng)的可用性增強(qiáng)了,第二數(shù)據(jù)集成度提高,第三啟動(dòng)速度提高了,第四ext2與ext3文件系統(tǒng)之間相互轉(zhuǎn)換容易。
以轉(zhuǎn)換文件系統(tǒng)為例,將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng),命令如下:
[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.
這樣,原來(lái)的ext2文件系統(tǒng)就轉(zhuǎn)換成了ext3文件系統(tǒng)。注意將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng)時(shí),不必要將分區(qū)缷載下來(lái)轉(zhuǎn)換。
轉(zhuǎn)換完成后,不要忘記將/etc/fstab文件中所對(duì)應(yīng)分區(qū)的文件系統(tǒng)由原來(lái)的ext2更改為ext3。
ext3日志的存放位置
可以將日志放置在另外一個(gè)存儲(chǔ)設(shè)備上,例如存放到分區(qū)/dev/hda8。例如要在/dev/hda8上創(chuàng)建一個(gè)ext3文件系統(tǒng),并將日志存放在外部設(shè)備/dev/hda2上,則運(yùn)行以下命令:
[root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2
ext3文件系統(tǒng)修復(fù)
新的e2fsprogs中的e2fsck支持ext3文件系統(tǒng)。當(dāng)一個(gè)ext3文件系統(tǒng)被破壞時(shí),先卸載該設(shè)備,在用
e2fsck修復(fù):
[root @stationxx root] # umount /dev/hda8
[root @stationxx root] #e2fsck -fy /dev/hda8
總而言之,ext3日志文件系統(tǒng)是目前l(fā)inux系統(tǒng)由ext2文件系統(tǒng)過(guò)度到日志文件系統(tǒng)最為簡(jiǎn)單的一種選擇,實(shí)現(xiàn)方式也最為簡(jiǎn)潔。由于是直接從ext2文件系統(tǒng)發(fā)展而來(lái),系統(tǒng)由ext2文件系統(tǒng)過(guò)渡到ext3日志文件系統(tǒng)升級(jí)過(guò)程平滑,可以最大限度地保證系統(tǒng)數(shù)據(jù)的安全性。目前l(fā)inux系統(tǒng)要使用日志文件系統(tǒng),最保險(xiǎn)的方式就是選擇ext3文件系統(tǒng)。
Linux缺省情況下使用的文件系統(tǒng)為Ext2,ext2文件系統(tǒng)的確高效穩(wěn)定。但是,隨著Linux系統(tǒng)在關(guān)鍵業(yè)務(wù)中的應(yīng)用,Linux文件系統(tǒng)的弱點(diǎn)也漸漸顯露出來(lái)了:其中系統(tǒng)缺省使用的ext2文件系統(tǒng)是非日志文件系統(tǒng)。這在關(guān)鍵行業(yè)的應(yīng)用是一個(gè)致命的弱點(diǎn)。本文向各位介紹Linux下使用ext3日志文件系統(tǒng)應(yīng)用。
Ext3文件系統(tǒng)是直接從Ext2文件系統(tǒng)發(fā)展而來(lái),目前ext3文件系統(tǒng)已經(jīng)非常穩(wěn)定可靠。它完全兼容ext2文件系統(tǒng)。用戶可以平滑地過(guò)渡到一個(gè)日志功能健全的文件系統(tǒng)中來(lái)。這實(shí)際上了也是ext3日志文件系統(tǒng)初始設(shè)計(jì)的初衷。
Ext3日志文件系統(tǒng)的特點(diǎn)
1、高可用性
系統(tǒng)使用了ext3文件系統(tǒng)后,即使在非正常關(guān)機(jī)后,系統(tǒng)也不需要檢查文件系統(tǒng)。宕機(jī)發(fā)生后,恢復(fù)ext3文件系統(tǒng)的時(shí)間只要數(shù)十秒鐘。
2、數(shù)據(jù)的完整性:
ext3文件系統(tǒng)能夠極大地提高文件系統(tǒng)的完整性,避免了意外宕機(jī)對(duì)文件系統(tǒng)的破壞。在保證數(shù)據(jù)完整性方面,ext3文件系統(tǒng)有2種模式可供選擇。其中之一就是“同時(shí)保持文件系統(tǒng)及數(shù)據(jù)的一致性”模式。采用這種方式,你永遠(yuǎn)不再會(huì)看到由于非正常關(guān)機(jī)而存儲(chǔ)在磁盤上的垃圾文件。
3、文件系統(tǒng)的速度:
盡管使用ext3文件系統(tǒng)時(shí),有時(shí)在存儲(chǔ)數(shù)據(jù)時(shí)可能要多次寫數(shù)據(jù),但是,從總體上看來(lái),ext3比ext2的性能還要好一些。這是因?yàn)閑xt3的日志功能對(duì)磁盤的驅(qū)動(dòng)器讀寫頭進(jìn)行了優(yōu)化。所以,文件系統(tǒng)的讀寫性能較之Ext2文件系統(tǒng)并來(lái)說(shuō),性能并沒(méi)有降低。
4、數(shù)據(jù)轉(zhuǎn)換
由ext2文件系統(tǒng)轉(zhuǎn)換成ext3文件系統(tǒng)非常容易,只要簡(jiǎn)單地鍵入兩條命令即可完成整個(gè)轉(zhuǎn)換過(guò)程,用戶不用花時(shí)間備份、恢復(fù)、格式化分區(qū)等。用一個(gè)ext3文件系統(tǒng)提供的小工具tune2fs,它可以將ext2文件系統(tǒng)輕松轉(zhuǎn)換為ext3日志文件系統(tǒng)。另外,ext3文件系統(tǒng)可以不經(jīng)任何更改,而直接加載成為ext2文件系統(tǒng)。
5、多種日志模式
Ext3有多種日志模式,一種工作模式是對(duì)所有的文件數(shù)據(jù)及metadata(定義文件系統(tǒng)中數(shù)據(jù)的數(shù)據(jù),即數(shù)據(jù)的數(shù)據(jù))進(jìn)行日志記錄(data=journal模式);另一種工作模式則是只對(duì)metadata記錄日志,而不對(duì)數(shù)據(jù)進(jìn)行日志記錄,也即所謂data=ordered或者data=writeback模式。系統(tǒng)管理人員可以根據(jù)系統(tǒng)的實(shí)際工作要求,在系統(tǒng)的工作速度與文件數(shù)據(jù)的一致性之間作出選擇。
實(shí)際使用Ext3文件系統(tǒng)
創(chuàng)建新的ext3文件系統(tǒng),例如要把磁盤上的hda8分區(qū)格式化ext3文件系統(tǒng),并將日志記錄在/dev/hda1分區(qū),那么操作過(guò)程如下:
[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.
在創(chuàng)建新的文件系統(tǒng)時(shí),可以看到,ext3文件系統(tǒng)執(zhí)行自動(dòng)檢測(cè)的時(shí)間為180天或每第31次被mount時(shí),實(shí)際上這個(gè)參數(shù)可以根據(jù)需要隨意調(diào)節(jié)。
以下將新的文件系統(tǒng)mount到主分區(qū)/data目錄下:
[root@stionxx root]# mount -t ext3 /dev/hda8 /data
說(shuō)明:以上將已格式化為ext3文件系統(tǒng)的/dev/hda8分區(qū)加載到/data目錄下。
ext3 基于ext2 的代碼,它的磁盤格式和 ext2 的相同;這意味著,一個(gè)干凈卸裝的 ext3 文件系統(tǒng)可以作為 ext2 文件系統(tǒng)重新掛裝。Ext3文件系統(tǒng)仍然能被加載成ext2文件系統(tǒng)來(lái)使用,你可以把一個(gè)文件系統(tǒng)在ext3和ext2自由切換。
這時(shí)在ext2文件系統(tǒng)上的ext3日志文件仍然存在,只是ext2不能認(rèn)出日志而已。
將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng)
將linux系統(tǒng)的文件系統(tǒng)由ext2轉(zhuǎn)至ext3,有以下幾處優(yōu)點(diǎn):第一系統(tǒng)的可用性增強(qiáng)了,第二數(shù)據(jù)集成度提高,第三啟動(dòng)速度提高了,第四ext2與ext3文件系統(tǒng)之間相互轉(zhuǎn)換容易。
以轉(zhuǎn)換文件系統(tǒng)為例,將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng),命令如下:
[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.
這樣,原來(lái)的ext2文件系統(tǒng)就轉(zhuǎn)換成了ext3文件系統(tǒng)。注意將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng)時(shí),不必要將分區(qū)缷載下來(lái)轉(zhuǎn)換。
轉(zhuǎn)換完成后,不要忘記將/etc/fstab文件中所對(duì)應(yīng)分區(qū)的文件系統(tǒng)由原來(lái)的ext2更改為ext3。
ext3日志的存放位置
可以將日志放置在另外一個(gè)存儲(chǔ)設(shè)備上,例如存放到分區(qū)/dev/hda8。例如要在/dev/hda8上創(chuàng)建一個(gè)ext3文件系統(tǒng),并將日志存放在外部設(shè)備/dev/hda2上,則運(yùn)行以下命令:
[root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2
ext3文件系統(tǒng)修復(fù)
新的e2fsprogs中的e2fsck支持ext3文件系統(tǒng)。當(dāng)一個(gè)ext3文件系統(tǒng)被破壞時(shí),先卸載該設(shè)備,在用
e2fsck修復(fù):
[root @stationxx root] # umount /dev/hda8
[root @stationxx root] #e2fsck -fy /dev/hda8
總而言之,ext3日志文件系統(tǒng)是目前l(fā)inux系統(tǒng)由ext2文件系統(tǒng)過(guò)度到日志文件系統(tǒng)最為簡(jiǎn)單的一種選擇,實(shí)現(xiàn)方式也最為簡(jiǎn)潔。由于是直接從ext2文件系統(tǒng)發(fā)展而來(lái),系統(tǒng)由ext2文件系統(tǒng)過(guò)渡到ext3日志文件系統(tǒng)升級(jí)過(guò)程平滑,可以最大限度地保證系統(tǒng)數(shù)據(jù)的安全性。目前l(fā)inux系統(tǒng)要使用日志文件系統(tǒng),最保險(xiǎn)的方式就是選擇ext3文件系統(tǒng)。