ext2和ext3文件系统知识
Linux ext2/ext3文件系統(tǒng)使用索引節(jié)點(diǎn)來記錄文件信息,作用像windows的文件分配表。索引節(jié)點(diǎn)是一個結(jié)構(gòu),它包含了一個文件的長度、創(chuàng)建及修改時間、權(quán)限、所屬關(guān)系、磁盤中的位置等信息。一個文件系統(tǒng)維護(hù)了一個索引節(jié)點(diǎn)的數(shù)組,每個文件或目錄都與索引節(jié)點(diǎn)數(shù)組中的唯一一個元素對應(yīng)。系統(tǒng)給每個索引節(jié)點(diǎn)分配了一個號碼,也就是該節(jié)點(diǎn)在數(shù)組中的索引號,稱為索引節(jié)點(diǎn)號。 linux文件系統(tǒng)將文件索引節(jié)點(diǎn)號和文件名同時保存在目錄中。所以,目錄只是將文件的名稱和它的索引節(jié)點(diǎn)號結(jié)合在一起的一張表,目錄中每一對文件名稱和索引節(jié)點(diǎn)號稱為一個連接。對于一個文件來說有唯一的索引節(jié)點(diǎn)號與之對應(yīng),對于一個索引節(jié)點(diǎn)號,卻可以有多個文件名與之對應(yīng)。因此,在磁盤上的同一個文件可以通過不同的路徑去訪問它。
Linux缺省情況下使用的文件系統(tǒng)為Ext2,ext2文件系統(tǒng)的確高效穩(wěn)定。但是,隨著Linux系統(tǒng)在關(guān)鍵業(yè)務(wù)中的應(yīng)用,Linux文件系統(tǒng)的弱點(diǎn)也漸漸顯露出來了:其中系統(tǒng)缺省使用的ext2文件系統(tǒng)是非日志文件系統(tǒng)。這在關(guān)鍵行業(yè)的應(yīng)用是一個致命的弱點(diǎn)。本文向各位介紹Linux下使用ext3日志文件系統(tǒng)應(yīng)用。
Ext3文件系統(tǒng)是直接從Ext2文件系統(tǒng)發(fā)展而來,目前ext3文件系統(tǒng)已經(jīng)非常穩(wěn)定可靠。它完全兼容ext2文件系統(tǒng)。用戶可以平滑地過渡到一個日志功能健全的文件系統(tǒng)中來。這實(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ù)十秒鐘。
2、數(shù)據(jù)的完整性:
ext3文件系統(tǒng)能夠極大地提高文件系統(tǒng)的完整性,避免了意外宕機(jī)對文件系統(tǒng)的破壞。在保證數(shù)據(jù)完整性方面,ext3文件系統(tǒng)有2種模式可供選擇。其中之一就是“同時保持文件系統(tǒng)及數(shù)據(jù)的一致性”模式。采用這種方式,你永遠(yuǎn)不再會看到由于非正常關(guān)機(jī)而存儲在磁盤上的垃圾文件。
3、文件系統(tǒng)的速度:
盡管使用ext3文件系統(tǒng)時,有時在存儲數(shù)據(jù)時可能要多次寫數(shù)據(jù),但是,從總體上看來,ext3比ext2的性能還要好一些。這是因?yàn)閑xt3的日志功能對磁盤的驅(qū)動器讀寫頭進(jìn)行了優(yōu)化。所以,文件系統(tǒng)的讀寫性能較之Ext2文件系統(tǒng)并來說,性能并沒有降低。
4、數(shù)據(jù)轉(zhuǎn)換
由ext2文件系統(tǒng)轉(zhuǎn)換成ext3文件系統(tǒng)非常容易,只要簡單地鍵入兩條命令即可完成整個轉(zhuǎn)換過程,用戶不用花時間備份、恢復(fù)、格式化分區(qū)等。用一個ext3文件系統(tǒng)提供的小工具tune2fs,它可以將ext2文件系統(tǒng)輕松轉(zhuǎn)換為 ext3日志文件系統(tǒng)。另外,ext3文件系統(tǒng)可以不經(jīng)任何更改,而直接加載成為ext2文件系統(tǒng)。
5、多種日志模式
Ext3有多種日志模式,一種工作模式是對所有的文件數(shù)據(jù)及metadata(定義文件系統(tǒng)中數(shù)據(jù)的數(shù)據(jù),即數(shù)據(jù)的數(shù)據(jù))進(jìn)行日志記錄(data=journal模式);另一種工作模式則是只對metadata記錄日志,而不對數(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ū),那么操作過程如下:
[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)時,可以看到,ext3文件系統(tǒng)執(zhí)行自動檢測的時間為180天或每第31次被mount時,實(shí)際上這個參數(shù)可以根據(jù)需要隨意調(diào)節(jié)。
以下將新的文件系統(tǒng)mount到主分區(qū)/data目錄下:
[root@stionxx root]# mount -t ext3 /dev/hda8 /data
說明:以上將已格式化為ext3文件系統(tǒng)的/dev/hda8分區(qū)加載到/data目錄下。
ext3 基于ext2 的代碼,它的磁盤格式和 ext2 的相同;這意味著,一個干凈卸裝的 ext3 文件系統(tǒng)可以作為 ext2 文件系統(tǒng)重新掛裝。Ext3文件系統(tǒng)仍然能被加載成ext2文件系統(tǒng)來使用,你可以把一個文件系統(tǒng)在ext3和ext2自由切換。
這時在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ù)集成度提高,第三啟動速度提高了,第四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.
這樣,原來的ext2文件系統(tǒng)就轉(zhuǎn)換成了ext3文件系統(tǒng)。注意將ext2文件系統(tǒng)轉(zhuǎn)換為ext3文件系統(tǒng)時,不必要將分區(qū)缷載下來轉(zhuǎn)換。
轉(zhuǎn)換完成后,不要忘記將/etc/fstab文件中所對應(yīng)分區(qū)的文件系統(tǒng)由原來的ext2更改為ext3。
ext3日志的存放位置
可以將日志放置在另外一個存儲設(shè)備上,例如存放到分區(qū)/dev/hda8。例如要在/dev/hda8上創(chuàng)建一個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)一個ext3文件系統(tǒng)被破壞時,先卸載該設(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)過度到日志文件系統(tǒng)最為簡單的一種選擇,實(shí)現(xiàn)方式也最為簡潔。由于是直接從ext2文件系統(tǒng)發(fā)展而來,系統(tǒng)由ext2文件系統(tǒng)過渡到ext3日志文件系統(tǒng)升級過程平滑,可以最大限度地保證系統(tǒng)數(shù)據(jù)的安全性。目前l(fā)inux系統(tǒng)要使用日志文件系統(tǒng),最保險的方式就是選擇ext3文件系統(tǒng)。
ext2 和ext3文件系統(tǒng)掛載
Mount options for ext2
? ? ? ?‘ext2'? ?? ? ?文件系統(tǒng)是標(biāo)準(zhǔn)的? ?? ? ?Linux? ?? 文件系統(tǒng)。由于內(nèi)核的
? ? ? ?bug,它掛載時的選項(xiàng)是隨機(jī)的 (在 Linux 2.0.4 中已修復(fù))。
? ? ? ?bsddf / minixdf
? ?? ? ? 設(shè)置系統(tǒng)調(diào)用? statfs? 的行為。? ?minixdf? ? 的行為是在? ?f_blocks
? ?? ? ? 字段返回文件系統(tǒng)的總塊數(shù),而? bsddf 的行為 (這是默認(rèn)值) 是減去被
? ?? ? ? ext2 文件系統(tǒng)所用,因此無法再存儲文件的塊數(shù)。因此會出現(xiàn)
? ? ? ?% mount /k -o minixdf; df /k; umount /k
? ? ? ?Filesystem? ?1024-blocks? ? Used Available Capacity Mounted on
? ? ? ?/dev/sda6? ? ? 2630655? ?86954? 2412169? ?? ? 3%? ? /k
? ? ? ?% mount /k -o bsddf; df /k; umount /k
? ? ? ?Filesystem? ?1024-blocks? ? Used Available Capacity Mounted on
? ? ? ?/dev/sda6? ? ? 2543714? ?? ?13? 2412169? ?? ? 0%? ? /k
? ? ? ?(注意這個例子顯示出可以將命令行選項(xiàng)與 /etc/fstab 中的選項(xiàng)同時使用。)
? ? ? ?check / check=normal / check=strict
? ?? ? ? 設(shè)置檢測級別。在至少其中一個被設(shè)置時? ? (? ?? check=normal
? ?? ? ? 是默認(rèn)的設(shè)置),掛載時將檢測? ?? ? ?inodes? ?? ? ? 和塊位圖
? ?? ? ? (在大磁盤上這將花費(fèi)超過半分鐘時間,并且沒什么用處)。? ?(?? ?? With
? ?? ? ? strict? checking,? ? block? ?deallocation? checks that the block to
? ?? ? ? free is in the data zone.)
? ? ? ?check=none / nocheck
? ?? ? ? 不進(jìn)行檢測。這樣就快一些了。較新的內(nèi)核不再理會? check? 選項(xiàng)了? -
? ?? ? ? 使用 e2fsck(8) 來檢測更有意義。
? ? ? ?debug? 在每次 (re)mount 的時候輸出調(diào)試信息。
? ? ? ?errors=continue / errors=remount-ro / errors=panic
? ?? ? ? 定義遇到錯誤時的行為。(或者忽略錯誤,只將文件系統(tǒng)標(biāo)記為不正確的,然后繼續(xù);或者重新只讀掛載它,或者
? ?? ? ? panic? ? 掛起系統(tǒng)。)默認(rèn)是設(shè)置文件系統(tǒng)超塊,可以用? ? tune2fs(8)
? ?? ? ? 修改。
? ? ? ?grpid 或 bsdgroups / nogrpid 或 sysvgroups
? ?? ? ? 這些選項(xiàng)定義了新創(chuàng)建的文件獲得什么組? ?id。當(dāng)設(shè)置了? ? grpid
? ?? ? ? 的時候,使用文件所在的目錄的組? ?? ?id;否則? ?? (這是默認(rèn)值)
? ?? ? ? 使用當(dāng)前進(jìn)程的? ?? ? ? fsgid,除非這個目錄設(shè)置了? ?? ?setgid
? ?? ? ? 屬性,這種情況下使用父目錄的
? ?? ? ? gid,并且如果新創(chuàng)建的是一個目錄,那么也設(shè)置它的 setgid 屬性。
? ? ? ?resgid=n 和 resuid=n
? ?? ? ? ext2? 文件系統(tǒng)保留一定比例的可用空間? (默認(rèn)是 5%,參見 mke2fs(8)
? ?? ? ? 和? ?? ?? ?? ?? ?? ? tune2fs(8))。
? ?? ? ? 這些選項(xiàng)決定了誰可以使用保留的塊。(簡單地說:擁有指定? ?? ?uid
? ?? ? ? 或者屬于指定組的用戶。)
? ? ? ?sb=n? ?使用塊? ?? ?? ?? ?? ?? ?? ?? ? ?n
? ?? ? ? 而不是第一塊作為超塊。在文件系統(tǒng)被損壞時,這樣很有用。(早些時候,超塊在每
? ?? ? ? 8192? ?? ?? ?? ?? ?? 塊都會復(fù)制一個:在塊
? ?? ? ? 1,8193,16385,……(如果文件系統(tǒng)很大,超塊將被復(fù)制成百上千次)。從
? ?? ? ? 1.08? ? ?版開始,? ?? ? mke2fs? ?有一個? ?? ? -s? ?? ? (稀疏超塊)
? ?? ? ? 選項(xiàng),可以減少超塊備份的數(shù)量,從? ?? ?? ?? ?? 1.15
? ?? ? ? 版開始它成為默認(rèn)值。注意這樣做意味著使用較新的? ?mke2fs? ?創(chuàng)建的
? ?? ? ? ext2? ?? ? ? 文件系統(tǒng)無法在? ?? ?Linux? ?? ? 2.0.*
? ?? ? ? 中以讀寫方式掛載。)這里塊編號的單位是 1k。因此,如果想使用以? 4k
? ?? ? ? 為單位的文件系統(tǒng)中的第 32768 塊,應(yīng)當(dāng)用 "sb=131072"。
? ? ? ?grpquota / noquota / quota / usrquota
? ?? ? ? 這些選項(xiàng)被接受,但是被忽略。
? ? ? ?nouid32
? ?? ? ? 禁止? ?? ?? 32-bit? ?? ?UIDs? ?? ?? ? 和
? ?? ? ? GIDs。這個選項(xiàng)用于與舊版內(nèi)核互操作,舊版內(nèi)核只保存和讀取? ?16-bit
? ?? ? ? 的值。
Mount options for ext3
? ? ? ?文件系統(tǒng)? ? ‘ext3' 是 ext2 文件系統(tǒng)的一個版本,但是加入了日志功能。它支持
? ? ? ?ext2 的所有選項(xiàng),還支持下列擴(kuò)展:
? ? ? ?journal=update
? ?? ? ? 更新 ext3 文件系統(tǒng)的日志為當(dāng)前的格式。
? ? ? ?journal=inum
? ?? ? ? 如果一個日志已存在,這個選項(xiàng)被忽略。否則,它指定了用于保存日志文件的
? ?? ? ? inode? ?編號。ext3? ?將創(chuàng)建一個新日志,覆蓋? inode? 編號是? inum
? ?? ? ? 的文件的原有內(nèi)容。
? ? ? ?noload 在掛載時不讀取 ext3 文件系統(tǒng)的日志。
? ? ? ?data=journal / data=ordered / data=writeback
? ?? ? ? 指定文件數(shù)據(jù)的日志模式。元數(shù)據(jù) (metadata) 總是被記錄。(?)
? ?? ? ? journal
? ?? ?? ? ?在寫入文件系統(tǒng)之前,所有數(shù)據(jù)首先被提交到日志中。
? ?? ? ? ordered
? ?? ?? ? ?這是默認(rèn)的模式,所有數(shù)據(jù)在它的元數(shù)據(jù)被提交給日志之前,被強(qiáng)制直接寫入文件系統(tǒng)。
? ?? ? ? writeback
? ?? ?? ? ?寫入順序不定,數(shù)據(jù)可能在元數(shù)據(jù)已被提交給日志之后寫入文件系統(tǒng)。傳聞這是效率最高的方式。它保證了文件系統(tǒng)內(nèi)部的一致性,但是在崩潰和恢復(fù)后文件內(nèi)可能出現(xiàn)舊數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的ext2和ext3文件系统知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Discuz1.5 密码错误次数过多,请
- 下一篇: Qt 程序在 windows 下的发布