FSCK 是一個(gè)很重要的 Linux/Unix 工具,它用于檢測(cè)并修復(fù)文件系統(tǒng)中的錯(cuò)誤。它類似于 Windows 操作系統(tǒng)中的 “chkdsk” 工具,但它是為 Linux、MacOS、FreeBSD 操作系統(tǒng)所準(zhǔn)備的。
FSCK 全稱為 File System Consistency Check。在大多數(shù)時(shí)候,它在系統(tǒng)啟動(dòng)時(shí)運(yùn)行,但是如果需要的話,它也能被超級(jí)用戶手工啟動(dòng)。
它可以進(jìn)行三種模式的操作:
查錯(cuò)并在發(fā)現(xiàn)錯(cuò)誤時(shí)由用戶決定如何處理,
查錯(cuò)并自動(dòng)修復(fù),
查錯(cuò)但在發(fā)現(xiàn)錯(cuò)誤時(shí)只顯示錯(cuò)誤而不進(jìn)行修復(fù)。
FSCK 的語(yǔ)法
手工執(zhí)行 FSCK 的語(yǔ)法為,
$ fsck options drives
fsck 支持的選項(xiàng)有,
-p 自動(dòng)修復(fù)(不詢問)
-n 不對(duì)文件系統(tǒng)做出改動(dòng)
-y 對(duì)所有問題都回答 "yes"
-c 檢查所有的壞塊并將之添加到壞塊列表中
-f 即使文件系統(tǒng)標(biāo)記為 clean 也強(qiáng)制進(jìn)行檢查
-v 輸出詳細(xì)信息
-b superblock 使用替代的超級(jí)塊
-B blocksize 指定超級(jí)塊的塊大小
-j external_journal 指定外部日志的位置
-l bad_blocks_file 添加到指定的壞塊列表(文件)
-L bad_blocks_file 指定壞塊列表(文件)
我們可以根據(jù)要做的操作任意指定這些選項(xiàng)。下面讓我們來看一些例子。
Fsck 命令的案例
注意: 在開始討論案例之前,請(qǐng)先讀完這段話。我們不應(yīng)該用 fsck 檢查已掛載的磁盤,這很可能會(huì)對(duì)磁盤造成永久性的傷害。因此在開始使用 fsck 之前,我們需要使用下面命令來卸載磁盤,
$ umount drivename
比如像這樣,
$ umount /dev/sdb1
可以通過下面命令來查看分區(qū)編號(hào),
$ fdisk -l
另外,在運(yùn)行 fsck 時(shí),可能出錯(cuò)并返回一些錯(cuò)誤碼。下面是一些常見的錯(cuò)誤及其意義的列表,
0 - 沒有錯(cuò)誤
1 - 修復(fù)了一些文件系統(tǒng)錯(cuò)誤
2 - 系統(tǒng)需要被重啟
4 - 文件系統(tǒng)錯(cuò)誤未被修復(fù)
8 - 操作錯(cuò)
16 - 使用或語(yǔ)法錯(cuò)
32 - fsck 被用戶取消
128 - 共享庫(kù)出錯(cuò)
現(xiàn)在讓我們來看一些 fsck 命令的例子
1.在單個(gè)分區(qū)上進(jìn)行錯(cuò)誤檢查
在終端運(yùn)行下面過命令來對(duì)單個(gè)分區(qū)進(jìn)行檢查,
$ umount /dev/sdb1
$ fsck /dev/sdb1
2.檢查文件系統(tǒng)錯(cuò)誤并自動(dòng)修復(fù)
使用選項(xiàng) -a 進(jìn)行一致性檢查并自動(dòng)修復(fù)這些錯(cuò)誤。也可以用 -y 替代 -a 選項(xiàng)。
$ fsck -a /dev/sdb1
3.檢查文件系統(tǒng)錯(cuò)誤但并不進(jìn)行修復(fù)
若我們只想知道文件系統(tǒng)上有哪些錯(cuò)誤而不想修復(fù)這些錯(cuò)誤,那么可以使用選項(xiàng) -n,
$ fsck -n /dev/sdb1
4.檢查所有分區(qū)中的錯(cuò)誤
-A 選項(xiàng)一次性檢查所有分區(qū)上的文件系統(tǒng)錯(cuò)誤,
$ fsck -A
5.若要禁止對(duì)根文件系統(tǒng)進(jìn)行檢查可以使用選項(xiàng) -R,
$ fsck -AR
6.只檢查指定文件系統(tǒng)類型的分區(qū)
使用選項(xiàng) -t 及文件系統(tǒng)類型,可以讓 fsck 只檢查指定文件系統(tǒng)類型的分區(qū),比如指定文件系統(tǒng)類型為 “ext4”,
$ fsck -t ext4 /dev/sdb1
或者
$ fsck -t -A ext4
7.只在卸載的磁盤上進(jìn)行一致性檢查
要保證 fsck 只在卸載的磁盤上操作,可以使用選項(xiàng) -M,
$ fsck -AM