如何在 Linux 上使用 fsck 命令
已發表: 2022-01-29
我們所有的重要數據都位於一種或另一種文件系統中,文件系統問題必然會發生。 在 Linux 上,我們可以使用fsck命令來查找和修復文件系統錯誤。
文件系統是軟件
文件系統是計算機最關鍵的組件之一。 如果沒有文件系統,計算機就無法在硬盤驅動器上存儲任何數據,無論該驅動器是旋轉機械盤還是固態驅動器。 實際上,必須先創建文件系統,然後才能將操作系統安裝到硬盤上。 必須有一些東西來存儲操作系統文件。因此在安裝過程中會創建一個文件系統。
文件系統由軟件創建,由軟件寫入,由軟件讀取。 如您所知,所有復雜的軟件都有錯誤。 我們的數據對我們來說至關重要,因此我們非常信任文件系統以及創建和使用它們的軟件。 如果出現問題,我們可能會失去對部分文件系統甚至整個分區的訪問權限。
現代日誌文件系統更擅長處理可能由突然斷電或系統崩潰引起的問題。 他們很強大,但也不是無敵的。 如果他們的內部表被打亂,他們可能會忘記每個文件在驅動器上的位置、大小、名稱以及對其設置的文件權限。
fsck命令可讓您檢查文件系統是否健康。 如果它發現任何問題,它通常也可以為您解決這些問題。
進行預檢
使用fsck需要 sudo 權限。 任何可以更改文件系統的命令都需要謹慎處理,並且僅限於知道自己在做什麼的人。
飛行員不會跳上飛機,啟動它,然後飛入淡藍色的彼岸。 他們進行飛行前檢查。 否則有太多的利害關係。 這是一個養成的好習慣。 在使用fsck之前,您需要確保您將在正確的驅動器上使用它。 所以在對fsck做任何事情之前,我們要做一些偵察。
我們將從fdisk開始並將其通過管道傳輸到less中。 我們不要求有關特定分區的信息。 通過使用-l (list) 選項, fdisk列出它在“/proc/partitions”文件中找到的所有設備上的分區表(如果存在)。
須藤 fdisk -l | 較少的

我們可以看到/dev/sda和/dev/sdb的條目。 您可以滾動文件以查看計算機上可能存在的任何其他條目。

/dev/sda上的分區被列為/dev/sda1 、 /dev/sda2和/dev/sda3 。 所以我們在第一個驅動器上有三個分區。 通過使用parted命令,我們可以看到更多信息。 我們將使用'print'選項在終端窗口中顯示分區表。
sudo parted /dev/sda '打印'

這次我們得到了一些額外的信息,包括每個分區上的文件系統類型。

型號:ATA VBOX HARDDISK (scsi) 磁盤 /dev/sda:34.4GB 扇區大小(邏輯/物理):512B/512B 分區表:gpt 磁盤標誌: 編號 開始 結束 大小 文件系統 名稱 標誌 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 540MB 538MB fat32 EFI 系統分區啟動,特別是 3 540MB 34.4GB 33.8GB 外部 4
這台測試計算機中有三個驅動器。 這些是其他兩個驅動器/dev/sdb和/dev/sdc的結果。 請注意,這些文件系統沒有“名稱”字段。
sudo parted /dev/sdb '打印'
型號:ATA VBOX HARDDISK (scsi) 磁盤 /dev/sdb:21.5GB 扇區大小(邏輯/物理):512B/512B 分區表:msdos 磁盤標誌: 編號 開始 結束 大小 類型 文件系統標誌 1 1049kB 21.5GB 21.5GB 主 ext4
sudo parted /dev/sdc '打印'
型號:ATA VBOX HARDDISK (scsi) 磁盤 /dev/sdc:21.5GB 扇區大小(邏輯/物理):512B/512B 分區表:msdos 磁盤標誌: 編號 開始 結束 大小 類型 文件系統標誌 1 1049kB 21.5GB 21.5GB 主 ext3
第二個和第三個驅動器恰好大小相同,並且每個驅動器都有一個分區。 但是第二個驅動器上的文件系統是ext4 ,第三個驅動器上的文件系統是舊的ext3 。
我們將分區標識符傳遞給fsck ,它會檢查該分區上的文件系統。 但是我們不能在掛載的文件系統上運行fsck 。 我們需要卸載驅動器。 為此,我們需要知道分區以及文件系統的掛載點。
我們可以使用df命令輕鬆找到它。
df /dev/sdb1
df /dev/sdc1

使用 fsck 命令
我們已經獲得了我們需要的所有信息。 我們要做的第一件事是卸載我們要檢查的文件系統。 我們將在/dev/sdb的第一個(也是唯一一個)分區上處理文件系統,即/dev/sdb1 。 我們之前看到這是一個ext4文件系統,它掛載在“/run/mount/dave/sata2”。
我們將使用umount命令。 請注意,“umount”中沒有“n”。
sudo umount /run/mount/dave/sata2

使用umount ,沒有消息就是好消息。 如果您以靜默方式返回到命令提示符,我們就可以開始了。
須藤 fsck /dev/sdb1

此文件系統報告為乾淨。 這意味著文件系統報告它沒有錯誤或問題。 不會自動進行更深入的文件系統檢查。 我們還可以查看fsck返回給 shell 的返回碼。
迴聲$?

返回值為零表示沒有錯誤。 可能的返回碼是:
- 0 :沒有錯誤
- 1 :文件系統錯誤更正
- 2 :系統應該重新啟動
- 4 :文件系統錯誤未得到糾正
- 8 :操作錯誤
- 16 :用法或語法錯誤
- 32 :檢查被用戶請求取消
- 128 :共享庫錯誤
儘管文件系統被報告為乾淨,但我們可以使用-f (強制)選項強制進行文件系統檢查。
須藤 fsck /dev/sdb1 -f

這一次,檢查需要更長的時間才能完成,但它會對文件系統進行更徹底的測試。 我們的文件系統確實很乾淨,沒有報錯。 如果在進行測試時發現問題,系統會提示您讓fsck修復問題或忽略錯誤。
完成測試後,您需要重新掛載文件系統。 最簡單的方法是使用mount和-a (all)選項。 這會檢查“/etc/fstab”中的文件系統列表,並確保它們都已安裝,就像它們在常規引導之後一樣。
須藤掛載-a


請注意,我們不需要告訴fsck分區上的文件系統類型; 該實用程序通過檢查文件系統來確定。 這意味著我們可以強制對/dev/sdc1 (我們測試 PC 上的ext3文件系統)進行文件系統檢查,使用與/dev/sdb1 (即ext4分區)完全相同的命令。
須藤 fsck /dev/sdc1 -f

您可能不想直接修復文件系統。 你可能更喜歡在跳躍之前先看看。 您可以要求fsck不提供任何修復,而只是向終端窗口報告問題。 -N (試運行)選項就是這樣做的:
sudo fsck -N /dev/sdb1

與此相反的是告訴fsck如果發現任何錯誤,不要打擾提示,並繼續修復它們。 為此,請使用-y (無提示)選項。
sudo fsck -y /dev/sdb1
在根分區上使用 fsck
您不能在已掛載的分區上使用fsck ,但要啟動計算機,必須掛載根分區。 那麼我們如何在根分區上運行fsck呢? 答案是中斷引導過程並在恢復模式下運行fsck 。
在您的計算機啟動時,按住“Shift”鍵。 如果您的時間設置正確,您將不會啟動到 Linux。 啟動過程將在黑白菜單處停止。 本文使用的測試機器運行的是 Ubuntu,但其他發行版具有相同類型的菜單,儘管外觀可能有所不同。 在屏幕截圖中顯示“Ubuntu”的地方將包含您的發行版的名稱。

使用“向上箭頭”和“向下箭頭”鍵移動高亮條,以便選擇“Ubuntu 的高級選項”菜單項。 點擊“Enter”移動到下一個屏幕。

選擇以“(恢復模式)”結尾的選項。 在我們的示例中,它是“Ubuntu,帶有 Linux 5.11.0-20-generic(恢復模式)”。 按“Enter”鍵。
您將看到恢復菜單。 選擇“fsck 檢查所有文件系統”並按“Tab”鍵將突出顯示移動到“確定”按鈕。 按“輸入”。

您將看到一條通知,指出根分區將與“/etc/fstab”文件中定義的任何其他分區一起安裝。

按“Tab”鍵將突出顯示移動到“是”按鈕,然後按“Enter”。
您將看到fsck在交互模式下運行。 如果有問題,系統會提示您讓fsck修復它們或忽略它們。 檢查文件系統後,您將再次看到恢復菜單。
選擇“恢復”選項,按“Tab”鍵將突出顯示移動到“確定”按鈕,然後按“Enter”。 啟動過程將繼續,您將啟動到 Linux。
恢復模式啟動可能會影響某些驅動程序,因此最好在啟動到 Linux 後立即重新啟動。 這可確保您的計算機以標準方式運行。
當事情出錯時
安全網的存在是有原因的。 了解fsck命令。 如果有一天需要在憤怒中使用它,你會很高興你提前熟悉了自己。
| Linux 命令 | ||
| 文件 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev ·查看·字符串·類型·重命名· zip ·解壓縮· mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
| 流程 | 別名· screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·超時·牆·是·殺死·睡眠· sudo · su ·時間· groupadd · usermod ·組· lshw ·關機·重新啟動·停止·關機· passwd · lscpu · crontab ·日期· bg · fg | |
| 聯網 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦



