文件系統(tǒng)(上)
文件系統(tǒng)類型
在 AIX 5L Version 5.3 中,支持下列類型的文件系統(tǒng):
日志文件系統(tǒng)
之所以將這種類型文件系統(tǒng)稱為日志文件系統(tǒng)是因為,這種系統(tǒng)使用日志技術來維護控制結(jié)構(gòu)的完整性。每個日志文件系統(tǒng)必須位于不同的 JFS 邏輯卷。因此,該文件系統(tǒng)的大小為一個邏輯分區(qū)大小的倍數(shù)。
增強的日志文件系統(tǒng)
這是初始日志文件系統(tǒng)的增強版本。它使用基于區(qū)段的分配以支持更高的性能、更大的文件系統(tǒng)和更大的文件大小。每個增強的日志文件系統(tǒng)必須位于不同的 JFS2 邏輯卷。當使用缺省選項安裝操作系統(tǒng)時,將創(chuàng)建 JFS2 文件系統(tǒng)。
網(wǎng)絡文件系統(tǒng)
網(wǎng)絡文件系統(tǒng) (NFS) 是一種分布式文件系統(tǒng),它允許用戶訪問位于遠程計算機的文件和目錄,可以像使用本地文件和目錄那樣使用這些遠程文件和目錄。
CD-ROM 文件系統(tǒng)
CD-ROM 文件系統(tǒng) (CDRFS) 是一種文件系統(tǒng)類型,它允許您通過一般的文件系統(tǒng)接口來訪問 CD-ROM 中的內(nèi)容。
文件系統(tǒng)結(jié)構(gòu)
日志文件系統(tǒng)使用了各種數(shù)據(jù)結(jié)構(gòu),如超級塊、分配組、索引節(jié)點,塊、分段和設備日志。
超級塊
超級塊中包含關于文件系統(tǒng)的控制信息,如文件系統(tǒng)的整體大小(單位為 512 字節(jié)的塊)、文件系統(tǒng)名稱、文件系統(tǒng)日志設備、版本編號、索引節(jié)點的數(shù)目、空閑索引節(jié)點列表、空閑數(shù)據(jù)塊列表、創(chuàng)建時間和日期,以及文件系統(tǒng)狀態(tài)。所有這些數(shù)據(jù)都存儲在文件系統(tǒng)的******個邏輯塊中。如果這些數(shù)據(jù)損壞,可能會使得該文件系統(tǒng)無法使用。所以,系統(tǒng)在邏輯塊 31 中保存了超級塊的另一個副本。
分配組
分配組由索引節(jié)點及其相應的數(shù)據(jù)塊組成。分配組可以跨越多個相鄰的磁盤塊,并且提高 I/O 操作的速度。JFS 和 JFS2 文件系統(tǒng)都使用了分配組。對于 JFS 文件系統(tǒng),可以在創(chuàng)建文件系統(tǒng)時指定分配組的大小。
索引節(jié)點
索引節(jié)點包含關于文件的控制信息,如類型、大小、擁有者、文件創(chuàng)建、修改或者***近訪問的日期和時間。它還包含指向存儲文件實際數(shù)據(jù)的數(shù)據(jù)塊的指針。每個文件都具有對應的索引節(jié)點。
對于 JFS 文件系統(tǒng),索引節(jié)點的******數(shù)目(對應著文件的***大數(shù)目),由創(chuàng)建文件系統(tǒng)時所指定的每個索引節(jié)點擁有的字節(jié)數(shù)(number of bytes per inode,nbpi)值來確定。對于文件系統(tǒng)中的每個 nbpi 字節(jié),都會創(chuàng)建一個索引節(jié)點。索引節(jié)點的總數(shù)是固定的。nbpi 值需要與分配組大小相關聯(lián)。
JFS 將所有的文件系統(tǒng)限制為 16 MB (224) 個索引節(jié)點。
JFS2 文件系統(tǒng)動態(tài)地管理索引節(jié)點所需的空間,所以不存在任何 nbpi 參數(shù)。
數(shù)據(jù)塊
數(shù)據(jù)塊存儲了文件的實際數(shù)據(jù),或者指向其他數(shù)據(jù)塊的指針。磁盤塊大小的缺省值為 4 KB。
分段
邏輯塊的分段可用于支持小于邏輯塊標準大小 (4 KB) 的文件。這個規(guī)則僅適用于文件大小小于 32 KB 的***后一個邏輯塊。
如果只有 JFS 文件系統(tǒng),您可以選擇使用壓縮使得文件的所有邏輯塊存儲為相鄰分段的序列。對文件系統(tǒng)進行壓縮,將增加使用該文件系統(tǒng)時 CPU 的使用量和 I/O 活動。
如果需要支持大量較小的文件,這些特性是非常有價值的。在安裝的時候,必須為文件系統(tǒng)指定分段的大小。不同的文件系統(tǒng)可以使用不同的分段大小。
設備日志
日志文件系統(tǒng)的日志存儲了關于文件系統(tǒng)元數(shù)據(jù)更改的事務信息。如果計算機崩潰,可以使用該數(shù)據(jù)來回滾未完成的操作。JFS 文件系統(tǒng)用于對 jfslog 類型的邏輯卷進行日志記錄,而 JFS2 文件系統(tǒng)用于對 jfs2log 類型的邏輯卷進行日志記錄。
不對數(shù)據(jù)塊中的數(shù)據(jù)進行日志記錄。日志設備用于確保文件系統(tǒng)的完整性,而不是數(shù)據(jù)的完整性。
在安裝了操作系統(tǒng)之后,rootvg 卷組中所有的文件系統(tǒng)都使用邏輯卷 hd8 作為公共的日志。
您可以創(chuàng)建一個能夠使用內(nèi)聯(lián)日志 (inline log) 的 JFS2 文件系統(tǒng)。這意味著,可以將日志數(shù)據(jù)寫入到與該文件系統(tǒng)相同的邏輯卷,而不是寫入到日志邏輯卷。
文件系統(tǒng)的區(qū)別
表 7-1 顯示了 JFS 和 JFS2 文件系統(tǒng)之間的一些區(qū)別。
表 7-1
功能
JFS
JFS2
體系結(jié)構(gòu)上******的文件系統(tǒng)大小
1 TB
4 PB
體系結(jié)構(gòu)上***大的文件大小
64 GB
4 PB
索引節(jié)點的數(shù)目
在創(chuàng)建文件系統(tǒng)時確定
動態(tài)
索引節(jié)點大小
128 字節(jié)
512 字節(jié)
分段大小
512
512
塊大小
4096
4096
目錄組織
線性
B-樹
壓縮
是
否
創(chuàng)建時缺省的所有權(quán)
sys.sys
root.system
缺省文件模式的 SGID
SGID=on
SGID=off
配額
是
是
日志文件系統(tǒng)的區(qū)別
JFS 和 JFS2 文件系統(tǒng)可以共存于相同的系統(tǒng)中。
如果您需要將數(shù)據(jù)從 JFS 文件系統(tǒng)遷移到 JFS2 文件系統(tǒng),那么您必須對 JFS 文件系統(tǒng)進行備份,然后將數(shù)據(jù)還原到 JFS2 文件系統(tǒng)。
對文件系統(tǒng)進行碎片整理
分段和壓縮的使用,以及大量文件的創(chuàng)建和刪除,都可能降低連續(xù)的空閑磁盤空間的數(shù)量。defragfs 命令可用于提高或者報告文件系統(tǒng)中連續(xù)空間的狀態(tài)。要對文件系統(tǒng) /home 進行碎片整理,可以使用下面的命令:
defragfs /home
顯示關于索引節(jié)點的信息
您可以使用 istat 命令來顯示關于某個特定索引節(jié)點的信息,如示例 8 所示
示例 7-8 使用 istat 命令
# istat /etc/passwd
Inode 66 on device 10/4 File
Protection: rw-r--r--
Owner: 0(root) Group: 7(security)
Link count: 1 Length 644 bytes
Last updated: Thu Dec 1 18:14:12 CST 2005
Last modified: Thu Dec 1 18:14:12 CST 2005
Last accessed: Mon Dec 5 17:04:17 CST 2005
對文件系統(tǒng)問題進行故障排除
這個部分將討論一些與文件系統(tǒng)相關的問題,以及如何解決這些問題。
對超級塊錯誤進行恢復
如果您在使用 fsck 或者 mount 命令時收到下面的錯誤之一,那么該問題可能是超級塊遭到損壞:
fsck: Not an AIX3 file system
fsck: Not an AIXV3 file system
fsck: Not an AIX4 file system
fsck: Not an AIXV4 file system
fsck: Not a recognized file system type
mount: invalid argument
使用下列命令的其中一個,通過將超級塊備份還原到主超級塊,從而解決這個問題:
dd count=1 bs=4k skip=31 seek=1 if=/dev/lv00 of=/dev/lv00
在完成了還原過程之后,使用 fsck 命令檢查文件系統(tǒng)的完整性。如果該操作無法解決這個問題,那么重新創(chuàng)建文件系統(tǒng),并從備份還原數(shù)據(jù)。
無法卸載文件系統(tǒng)
如果文件系統(tǒng)中存在任何處于活動狀態(tài)的引用,則不能卸載該文件系統(tǒng)。下面的情況可能導致一個已裝入的文件系統(tǒng)中存在打開的引用:
文件系統(tǒng)中存在打開的文件。在卸載文件系統(tǒng)之前,必須關閉這些文件。要確定指定的文件系統(tǒng)中所有包含打開引用的進程的進程 ID,******的方法是使用 fuser 命令。可以使用 kill 命令終止包含打開引用的進程,然后就可以完成卸載工作了。
如果文件系統(tǒng)仍然處于繁忙狀態(tài)并且無法對其進行卸載,那么這可能是由于加載了內(nèi)核擴展,但存在于源文件系統(tǒng)中。fuser 命令無法顯示這些類型的引用,因為并沒有涉及到任何用戶進程。然而,genkex 命令將報告所有已加載的內(nèi)核擴展。
該文件系統(tǒng)中裝入了其他文件系統(tǒng)。如果該文件系統(tǒng)中裝入了任何其他文件系統(tǒng),那么將在源文件系統(tǒng)中裝入其他文件系統(tǒng)的裝入點存在打開的引用。要卸載某個文件系統(tǒng),需要卸載其中所裝入的所有文件系統(tǒng)。
用戶正使用該文件系統(tǒng)中的目錄作為其當前工作目錄。對于使用某個目錄作為其當前工作目錄的進程,fuser 命令將在對應的進程 ID 后面追加字母“c”,而 -u 標志可以表示進程的擁有者。可以將其與 find 命令一同使用,如下面的示例所示:
# find /home -type d -exec fuser -u {} \;
/home:
/home/lost+found:
/home/guest:
/home/kenzie:3548c(kenzie)
文件系統(tǒng)沒有剩余空間
文件系統(tǒng)沒有剩余空間可能會產(chǎn)生各種各樣的問題。例如,有些系統(tǒng)創(chuàng)建的文件系統(tǒng),如 /、/usr、/var 和 /tmp,由某些系統(tǒng)命令所使用。如果這些文件系統(tǒng)中沒有可用空間,那么可能會產(chǎn)生一些預料之外的結(jié)果。請始終確保在這些文件系統(tǒng)中存在足夠的空閑空間。您可以使用諸如 df 或 du 之類的命令,監(jiān)視您的文件系統(tǒng)的空間使用情況。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/27567/showart_983219.html