fsck [-aANPrRsTV][-t <文件系統類型>][文件系統...]node
(有待實踐)ide
【功能】函數
檢查文件系統並嘗試修復錯誤。spa
補充說明:當文件系統發生錯誤四化,可用fsck指令嘗試加以修復。命令行
【舉例】調試
*檢查 msdos 檔案系統的 /dev/hda5 是否正常,若是有異常便自動修復:: 索引
$fsck -t msdos -a /dev/hda5內存
此指令可與 /etc/fstab 相互參考操做來加以瞭解。it
*檢查全部的缺省文件系統:table
$fsck
這個命令檢查在 /etc/filesystems 文件中全部標記 check=true 的文件系統。fsck 命令這種形式在對文件系統作出任何更改以前會向您請求許可。
*利用缺省的文件系統自動修復較次要的問題:
$fsck -p
*檢查一個特定的文件系統:
$fsck /dev/hd1
這個命令檢查位於 /dev/hd1 設備上的未安裝的文件系統。
【描述】
*參 數:
-a 自動修復文件系統,不詢問任何問題。
-A 依照/etc/fstab配置文件的內容,檢查文件內所列的所有文件系統。
-N 不執行指令,僅列出實際執行會進行的動做。
-P 當搭配"-A"參數使用時,則會同時檢查全部的文件系統。
-r 採用互動模式,在執行修復時詢問問題,讓用戶得以確認並決定處理方式。
-R 當搭配"-A"參數使用時,則會略過/目錄的文件系統不予檢查。
-s 依序執行檢查做業,而非同時執行。
-t<文件系統類型> 指定要檢查的文件系統類型。
-T 執行fsck指令時,不顯示標題信息。
-V 顯示指令執行過程。
-o f 對系統進行強制檢查,不論系統是否在clean等狀態
-o p 非交互式檢查並修復文件系統,對有的問題則當即退出
-o b=xx 用來修復超級塊的錯誤,就是將備份的超級塊內容拷入超級塊中。solaris對超級塊很重視,它的備份有不少,通常的b=32就能夠了,若是不行可使用命令newfs -N /dev/rdsk/cxtxdxsx來查看超級塊的位置,其中任何一個備份塊均可使用.
*參數(詳細)
-d BlockNumber 搜索指定磁盤塊的參考。不管 fsck 命令遇到包含特定塊的文件,它將會顯示索引節點號和全部指向它的路徑名稱。對於 JFS2 文件系統,引用指定模塊的索引節點號將會被顯示,可是不是它們的路徑名稱。
-f 進行快速檢查。在正常狀況下,經過非正確方式關閉系統來停機僅有的文件系統極可能被影響,這個文件系統就是當系統中止時在安裝的那些。 -f 標誌會提示 fsck 命令不要檢查沒有成功安裝的文件系統。fsck 命令經過檢查文件系統超級塊中的 s_fmod 標誌來決定這件事。 當文件系統沒有成功安裝的時候,不管什麼時候文件系統被安裝和被清除,這個標誌都將被設定。若是文件系統被成功的卸載,這不大可能會存在什麼問題。由於多數文件系統沒有成功安裝,不檢查這些文件系統能減小檢查時間。
-i i-NodeNumber 搜索指定索引節點的參考。不管什麼時候 fsck 命令遇到一個指向指定索引節點的目錄,它都會顯示這個參考的完整路徑名稱。
-n 對 fsck 命令所提出的全部問題給出一個no的迴應;不打開指定的文件系統來寫。
-o 選項 向 fsck 命令傳遞逗號分隔的選項。這些選項被認爲是文件系統的實現細節,除了下面目前爲了全部文件系統而當前被支持的選項:
mountable
若是有問題的文件系統可安裝(清除),促使 fsck 命令成功的退出,返回一個「0」值。若是文件系統不可安裝,fsck 命令退出並返回一個值「8」。
mytype
若是存在問題的文件系統與在 /etc/filesystems 文件中或者在命令行中經過 -V 標誌指定的具備相同的類型,那麼促使 fsck 命令退出並給出一個成功的「0」值。不然,返回一個值「8」。例如,若是/(引導文件系統)是一個分類文件系統,那麼 fsck 命令 -o mytype -V jfs / 會退出給出一個「0」值。
-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 ,所以任何錯誤將在系統使用前被檢測到(並根據但願修正)。自動檢查只對啓動時自動mount的文件系統發生做用,使用fsck 手工檢查其餘文件系統,好比軟盤。使用有錯誤的文件系統可能使問題變得更壞。若是系統正常關閉,幾乎從不發生錯誤,所以有一些方法能夠不進行檢查。若是文件/etc/fastboot 存在,就不檢查。另外,若是ext2文件系統在超級塊中有一個特定的標記告知該文件系統在上次mount後沒有正常unmount. 若是標記指出unmount正常完成(假設正常unmount指出沒問題),e2fsck (fsck 的ext2文件系統版) 就不檢查系統。/etc/fastboot 是否影響系統依賴於你的啓動手稿,但ext2標記則在你使用e2fsck 時發生做用--基於一個e2fsck 選項(參閱e2fsck 手冊頁)
*運行fsck後,該命令會分6個階段對文件系統
進行檢查,這六個階段分別是:
階段1: 檢查塊和塊的大小
階段2: 檢查路徑名
階段3: 檢查鏈接性
階段4: 檢查參考記數
階段5: 檢查自由塊列表
階段6: 補救自由塊列表
對每一個階段進行檢查,常見的一些錯誤:
1) 移去一個沒有相關文件的目錄入口
這時用戶能夠回答Yes或Y來刪除該目錄入口。
2) 重鏈接一個已分配但不能訪問的文件:
fsck找到了一個已分配的I節點,但卻不可訪問(該節點沒與任何目錄鏈接),這時通常對fsck的"RECONNECT?"回答Yes,即把該I節點鏈接到lost+found目錄下,文件名便是I節點號,以後管理員應檢查該文件類型,判明該文件用途,再將該文件拷貝到相應目錄下。
3) 鏈接數調整ADJUST
在交互方式下,fsck若發現鏈接數(與原記錄)不一致,將詢問用戶採起何種行動,本例發現一目錄的I節點鏈接數與該目錄的真實鏈接數不一致。
這時用戶應該回答Yes或Y來改正鏈接數。
4) 自由塊表不一致
fsck查出未分配塊數與超級塊中所給出的自由塊表不一致。
這時用戶應該回答Yes或Y來修正超級塊。
從上面的出錯信息和處理方法能夠發現,對於fsck詢問的問題大多數狀況下均可以用Yes來回答,因此在實際應用時,能夠用" -y"選項來執行該命令對硬盤進行檢查和修復。
這裏:
RECONNECT
表示目錄丟失,可將其存入lost+found中再做轉移。回答yes
SUPERBLK壞(注意是壞,不是wrong)
修復見上面(若是是wrong就隨便了,修不修均可以)
CLEAR
刪i節點,可能會錯
REMOVE
刪文件,通常給出文件名。file=....
ADJUST
調整鏈接數。實際數與原記錄不符。回答yes
使用通常都是yes過去的,不能在正在mount的文件系統上操做,不然有可能致使文件系統損壞。但也沒有碰到過用fsck致使發生錯誤的狀況,不過仍是建議操做的時候規範一些。
對於一個已經安裝好了的文件系統,fsck 命令不會作出矯正。
fsck 命令出於某些緣由能夠在一個已經安裝好了的文件系統中運行,但不是進行修復。可是當文件系統安裝完畢以後,也許會返回不許確的錯誤消息。
fsck 命令檢查並以交互方式修復不連貫的文件系統。在安裝文件系統以前,應該運行這個命令。您必須可以讀設備文件,在這個設備上駐留着文件系統(例如/dev/sda1)安裝一個不連貫的文件系統也許會致使系統的崩潰。
【其它】
*運行fsck命令後產生的文件有什麼用?
當執行fsck命令時,fsck命令若是發現存在孤立的文件或目錄,這些孤立的文件或目錄對於系統管理員或用戶來講,沒法訪問到它,由於它與它的上級目錄失去了關聯,若是用戶容許fsck從新把它們找回來的話,fsck命令就會把這些孤立的文件或目錄放在文件系統的/lost+found目錄下,並用各自的i-node號來命名,以便用戶查找本身須要的文件。Lost+found目錄經過它的英文含義咱們均可以知道,它是一個失物認領處。
所以當某個用戶發現本身丟失了某個文件,能夠在執行fsck以後到/lost+found目錄下去查找,這時經過文件名已沒法辨認出文件的做用,只能用file之類的命令來肯定文件的類型,若是是數據文件,能夠用more或vi命令來查看,若是是二進制文件,能夠用dbx命令來調試或者試着執行它(注意它多是一個具備破壞性的程序),知道文件或目錄的做用以後,能夠對其進行更名。
若是用戶不容許fsck把這些孤立的文件或目錄找回來,那麼fsck命令就會破壞這些文件或目錄,完全丟失這些文件或目錄,用戶或系統管理員永遠也沒法找回它們。
*關於fsck得結果輸出:
當系統啓動的時候會使用fsck對文件系統進行掃描,並相應的報出掃描結果。
例如:dev/rdsk/c0t0d0s7 stable 等。
後面是Fs的狀態。其中,
clean表示文件系統umount後無人用,
stable表示文件系統用過,但倒是完整的,好的。
而出一大堆的話,還有什麼fragment %什麼的的那都表示文件系統上有亂的地方,那麼就應該進入系統後使用fsck來整理。
當系統的狀態是clean,stable和logging的狀態的時候fsck不運行。
在非法關機後(各類緣由),再次啓動的時候會有不少的狀況,上面說的是一種狀況,再厲害一些是系統只能進入但用戶狀態,最厲害的是連單用戶的狀態都沒法進入(確定是/和/usr區有問題。這是由於fsck對/區的掃描沒法經過的話,系統固然沒法啓動,而fsck調用的一些函數庫又在/usr上。。。。)
此外,在一個已經安裝好了的文件系統上運行的 fsck 命令產生不可靠的結果。
*文件
/usr/sbin/fsck 包含 fsck 命令。
/etc/filesystems 列出已知的文件系統而且定義它們的特徵。
/var/spool/mail/* 包含虛擬文件系統類型的描述。
/usr/bin/from 包含當系統啓動的時候運行的命令(包括 fsck 命令)。