檢查和修復檔案系統:fsck
指令
1. 為什麼檢查文件系統很重要?
Linux 的文件系統其實是操作系統中最「忙」的工作人員之一。當你儲存文件、打開程式或者只是讀取數據時,它都在努力工作。但想像一下:在最關鍵的時刻,這位工作人員累壞了,決定長假(也就是:系統因停電關閉了)。這可能會導致文件表受損、數據丟失或者其他許多令人頭疼的問題。
但會出什麼問題呢?
- 突然的電源中斷 — 你的設備突然斷電,沒來得及完成數據寫入。
- 存儲錯誤 — 硬碟或 SSD 可能會有硬體故障,導致文件系統損壞。
- 軟體錯誤 — 驅動或系統工具中可能存在 bug。
在這些事件發生後,文件系統經常會出現問題,系統可能會要求你檢查它的狀態。這時候 fsck
就出場了,它的全名是 File System Check。
2. 什麼是fsck
,它如何運作?
工具的理念
fsck
是一種通用工具,它檢查檔案系統的完整性並修復發現的錯誤。它就像醫生一樣:進行測試,找到問題,並在可能的情況下進行"治療"。如果問題過於嚴重,fsck
至少可以診斷出究竟出了什麼問題。
什麼時候使用fsck
?
- 當明顯的檔案操作故障發生時(例如檔案突然"消失")。
- 如果系統無法啟動並報告檔案系統錯誤。
- 作為定期預防措施,確保一切正常。
3. fsck
的基本語法
要使用 fsck
,通常使用以下指令:
fsck [參數] <設備>
主要參數:
-y
— 自動確認修復。如果你不想一直坐著回應每個問題的yes
,這會很方便。-n
— 僅進行檢查,不修復(模擬執行)。如果你擔心會弄壞什麼,這對分析情況很有用。-t
— 指定檔案系統類型(例如,ext4
,xfs
)。-r
— 開啟互動模式(你需要確認每個修復)。
4. 實作:檢查檔案系統
讓我們從簡單的檢查開始。假設我們有一個裝置 /dev/sdb1
,我們想檢查它。
步驟 1:檢查但不修復
首先,我們在不做更改的情況下檢查檔案系統的狀態:
fsck -n /dev/sdb1
執行命令後,你會看到找到的問題列表(如果有的話)。下面是輸出範例:
Inodes that were part of a corrupted orphan linked list found.
Filesystem errors detected. Run fsck to repair.
步驟 2:自動修復
現在我們啟用錯誤修復模式:
fsck -y /dev/sdb1
fsck
將嘗試修復每個檢測到的錯誤並自動確認操作。如果裝置較大,這可能需要一些時間。
5. 檔案系統正在使用時該怎麼辦?
啟動 fsck
時的錯誤
如果你嘗試對已經掛載的分區執行 fsck
,會收到以下警告:
fsck: cannot check a mounted filesystem.
這是因為對掛載中的檔案系統執行檢查可能會導致資料損壞。有一些方法可以解決這個問題。
- 以唯讀模式重新掛載裝置。
mount -o remount,ro /dev/sdb1
- 使用 LiveCD 或 LiveUSB。
從啟動光碟或者隨身碟啟動系統,然後執行對已卸載裝置的檢查。
- 使用修復模式。
將系統重新啟動到修復模式,通常會提供一個安全的環境來執行檢查。
檢查根檔案系統 /
的特點
根檔案系統是一個特例,因為它被系統積極使用。如果需要對該分區執行 fsck
,需要:
- 使用以下指令進入單使用者模式:
systemctl isolate rescue.target
- 手動執行
fsck
:
fsck -y /
6. 常見錯誤及其修復
損壞的 inodes
如果 fsck
報告有損壞的 inode(儲存檔案資訊的結構),它會建議刪除它們。這是安全的,因為損壞的 inode 已經與當前的檔案無關。
丟失的檔案
有時候在啟動 fsck
之後,丟失的檔案會進入檔案系統根目錄中的 lost+found
資料夾。你可以手動檢查這個位置來恢復重要的資料。
重要建議
在檢查之前一定要備份。 雖然
fsck
通常是安全的,但修復可能導致資料丟失。不要在已掛載的分區上運行
fsck
。 這可能導致資料損壞。使用
-n
標誌進行初始分析。 如果不確定是否要自動修復錯誤,先從模擬運行開始。
7. 範例:模擬錯誤並修復
- 創建虛擬磁碟,並在其上建立檔案系統:
dd if=/dev/zero of=./disk.img bs=1M count=100
mkfs.ext4 ./disk.img
- 掛載磁碟:
sudo mount ./disk.img /mnt/test/
- 模擬損毀:
sudo dd if=/dev/zero of=/mnt/test/randomfile bs=512 count=10
- 卸載磁碟並檢查它:
sudo umount /mnt/test/
fsck ./disk.img
根據指令的輸出,修復錯誤。
走到這一步,你已經能自信地處理檔案系統的檢查,能正確地修復錯誤並避免事故發生。接下來我們將學習更多用於檔案系統的工具,但 fsck
現在已經是你診斷和修復的可靠工具啦。
GO TO FULL VERSION