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