fsck 命令
用途
檢查文件系統的一致性並且以交互方式修復文件系統。
語法
fsck [ -n ] [ -p ] [ -y ] [ -dBlockNumber ] [ -f ] [ -ii-NodeNumber ] [ -o Options ] [ -tFile ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]
描述
- 對於一個已經安裝好了的文件系統,fsck 命令不會做出矯正。
- fsck 命令出於某些原因可以在一個已經安裝好了的文件系統中運行,但不是進行修復。但是當文件系統安裝完畢之後,也許會返回不準確的錯誤消息。
fsck 命令檢查並以交互方式修復不連貫的文件系統。在安裝文件系統之前,應該運行這個命令。您必須能夠讀設備文件,在這個設備上駐留着文件系統(例如/dev/hd0 設備)。通常,文件系統是連貫的,fsck 命令僅僅是報告文件系統中文件的數量、被使用的塊和空閒的塊。如果文件系統是不連貫的,fsck 命令顯示關於那些找到的不連貫性的信息並且提示您修復它們的許可。
fsck 命令在修復中是有保留的並且會盡力避免那些可能導致有效數據丟失的動作。在特定的情況下,fsck 命令會建議破壞已經損壞的文件。如果您不允許 fsck 命令進行必要的修復,那麼或許會產生一個不連貫的文件系統。安裝一個不連貫的文件系統也許會導致系統的崩潰。
如果 JFS2 文件系統有快照,fsck 命令將試圖保留這些快照。如果此操作失敗,則無法保證快照包含來自捕捉到的文件系統的全部先前就存在的映像。fsck 命令將刪除這些快照和快照邏輯卷。
如果您不用 FileSystem 參數指定文件系統,fsck 命令將會檢查在/etc/filesystems中列出的所有文件系統,文件的check屬性將全部設爲 True。您可以通過在每一節中加入一行啓用這種檢查,如下所示:
check=true
fsck 命令可以在多文件系統中進行同步的檢查動作。這個過程可以減少檢查大量文件系統所需的時間。當文件系統被指定爲參數的一部分的時候,採用負號“-”來分隔這些文件系統。
您也可以通過在 /etc/filesystems 文件中將文件系統分組來進行多文件系統的同步檢查工作。爲了做這項工作,在/etc/filesystems 文件中修改 check屬性,如下所示:
check=Number
Number參數告訴 fsck 命令哪一組包含特定的文件系統。使用公共記錄設備的文件系統應該被放置在同一個組中。每一個組在分隔的平行進程中被檢查。文件系統被檢查的時候,一次檢查一個,以便它們能夠在/etc/filesystems文件中被列出。所有的 check=true 的文件系統被分到 1 組。fsck 命令在其它文件系統之前會試着檢查根文件系統而不管在命令行中或者 /etc/filesystems 文件中指定的順序。
fsck 命令檢查下列的不連貫性:
- 分配給多個文件的塊或者段。
- 包含交疊塊或者段數目的索引節點。
- 包含超出範圍的塊或者段數目的索引節點。
- 在對文件的目錄引用數量和文件鏈接計數之間的差異。
- 非法分配的塊或者段。
- 包含在磁盤映射中標記爲空閒的塊或者段數量的索引節點。
- 包含被破壞的塊或者段數目的索引節點。
- 在索引節點中不是最後磁盤地址的段。檢查不會被用於壓縮文件系統。
- 包含一個段的超過 32KB 段的文件。檢查不會被用於壓縮文件系統。
- 尺寸檢查:
- 塊的不正確數量。
- 目錄的大小不是 512 字節的整數倍。
- 目錄檢查:
- 目錄條目包含一個在索引節點映射中被標記爲空閒的索引節點號。
- 超出範圍的索引節點號。
- 點(.)鏈接丟失或未指向其本身。
- 點點(..)鏈接丟失或未指向父目錄。
- 沒有引用的文件或者不可到達的目錄。
- 不連貫的磁盤映射。
- 不連貫的索引節點映射。
如果您允許,那些孤立的文件和目錄(那些無法到達的)可以通過將它們加到在文件系統根目錄下的 lost+found 子目錄下面使它們重新連接起來。指定的名稱是索引節點號。如果您不允許 fsck 命令重新配屬一個孤立的文件,它會請求破壞這個文件的許可。
除了它的消息之外,fsck 命令會通過它的出口值來記錄檢查和修復的結果。這個出口值可能是下列情況的任意和:
0 | 所有被檢查的文件系統現在都好了。 |
2 | fsck 命令在結束檢查或修復之前被中斷了。 |
4 | fsck 命令改變了文件系統;用戶必須立即重新啓動系統。 |
8 | 文件系統包含沒有修復的損壞部分。 |
當系統從磁盤進行引導,引導過程會很明確的運行 fsck 命令,以 //usrx、/var、/tmp 文件系統中的 -f 和 -p 標誌指定。如果沒有成功的在這些文件系統之一執行 fsck 命令,系統不會引導。在這樣的系統引導之前,從可刪除的介質引導並進行維護工作將會被需要。
如果 fsck 命令成功的在/、/usr、/var 和 /tmp中運行, 正常的系統初始化將會繼續進行。在正常的系統初始化過程中,fsck 命令同 -f 和 -p 標誌一同指定,從/ etc/rc 文件中運行。這個命令序列檢查所有的文件系統,在其中check屬性設成了 True( check=true)。如果 fsck 命令從 /etc/rc 文件中執行,命令不能保證文件系統的連貫性,系統初始化繼續進行。任何不連貫文件系統的安裝也許會失敗。安裝失敗也許會導致系統不完全的初始化。
- 引導過程在//usr 、/var、和 /tmp 文件系統中明確的運行了fsck 命令。
- 當 /etc/rc 文件被執行的時候,/ /usr 、 /var 和 /tmp文件系統就被安裝了。fsck 命令不會修改一個已經安裝了的文件系統。此外,在一個已經安裝好了的文件系統上運行的 fsck 命令產生不可靠的結果。
您可以使用在基於 Web 的系統管理器 (wsm) 中的文件系統 應用程序來改變文件系統的特徵。您也可以系統管理界面程序(SMIT)smit fsck 快速路徑來運行這個命令。
標誌
-d BlockNumber | 搜索指定磁盤塊的參考。無論 fsck 命令遇到包含特定塊的文件,它將會顯示索引節點號和所有指向它的路徑名稱。對於 JFS2 文件系統,引用指定模塊的索引節點號將會被顯示,但是不是它們的路徑名稱。 |
-f | 進行快速檢查。在正常情況下,通過非正確方式關閉系統來停機僅有的文件系統很可能被影響,這個文件系統就是當系統停止時在安裝的那些。 -f 標誌會提示 fsck 命令不要檢查沒有成功安裝的文件系統。fsck 命令通過檢查文件系統超級塊中的 s_fmod 標誌來決定這件事。
當文件系統沒有成功安裝的時候,無論何時文件系統被安裝和被清除,這個標誌都將被設定。如果文件系統被成功的卸載,這不大可能會存在什麼問題。因爲多數文件系統沒有成功安裝,不檢查這些文件系統能減少檢查時間。 |
-i i-NodeNumber | 搜索指定索引節點的參考。無論何時 fsck 命令遇到一個指向指定索引節點的目錄,它都會顯示這個參考的完整路徑名稱。 |
-n | 對 fsck 命令所提出的所有問題給出一個no的迴應;不打開指定的文件系統來寫。 |
-o 選項 | 向 fsck 命令傳遞逗號分隔的選項。這些選項被認爲是文件系統的實現細節,除了下面目前爲了所有文件系統而當前被支持的選項:
|
-p | 不顯示次要問題的消息但是自動修復問題。這個標誌並不是象-y 標誌那樣授予大規模許可,當系統正常啓動的時候對自動進行檢查工作有用。無論系統在何時自動運行,您應該將這個標誌作爲系統啓動過程的一部分來使用。也允許並行分組檢查。如果主要的超級塊損壞了,次要的超級塊就被驗證,並且複製到主要的高級塊中。 |
-t文件 | 如果 fsck 命令得不到足夠的內存來保存它的表的話,在文件系統中作爲一個臨時文件而不是被檢查的文件來指定File參數。如果沒有指定 -t 標誌,那麼 fsck 命令需要一個臨時文件,它會提示您給這個臨時文件起名字。但是,如果指定了 -p 標誌,fsck 命令是不成功的。如果臨時文件不是一個特定的文件,當 fsck 命令結束的時候,它就會被刪除。 |
-V VfsName | 使用爲文件系統由VFSName變量指定的虛擬文件系統的描述,而不是用 /etc/filesystems 文件決定描述。如果-V VfsName 標誌沒有在命令行中指定,就會檢查 /etc/filesystems 文件並且 vfs= 匹配節的特性被認爲是正確的文件系統類型。 |
-y | 對所有 fsck命令提出的所有問題假定一個“yes”的響應。這個標誌使 fsck 命令採取它認爲必要的行動。僅在損壞嚴重的文件系統中使用這個標誌。 |
示例
- 爲了檢查所有的缺省文件系統,請輸入:
fsck
這個命令檢查在 /etc/filesystems 文件中所有標記 check=true 的文件系統。fsck 命令這種形式在對文件系統做出任何更改之前會向您請求許可。
- 爲了利用缺省的文件系統自動修復較次要的問題,請輸入:
fsck -p
- 爲了檢查一個特定的文件系統,請輸入:
fsck /dev/hd1
這個命令檢查位於 /dev/hd1 設備上的未安裝的文件系統。
文件
/usr/sbin/fsck | 包含 fsck 命令。 |
/etc/filesystems | 列出已知的文件系統並且定義它們的特徵。 |
/var/spool/mail/* | 包含虛擬文件系統類型的描述。 |
/usr/bin/from | 包含當系統啓動的時候運行的命令(包括 fsck 命令)。 |