
是否可以透過重新編輯 fstab 檔案來執行 xfs 修復?
/dev/mapper/vg-linux_root / xfs defaults 0 0
UUID=7de1dc5c-b605-4a6f-bdf1-f1e869f6ffb9 /boot xfs defaults 0 0
/dev/mapper/vg-linux_var /var xfs defaults 0 0
/dev/mapper/vg-linux_swap swap swap defaults 0 0
我不確定,但是將最後一個數字從 0 替換為 1 ,對嗎?
答案1
不,僅僅編輯 /etc/fstab 並不能導致 xfs_repair 被執行。
對於其他檔案系統類型,它也可以工作。但 XFS 在這裡很特別。
將 XFS 檔案系統上的第 6 個欄位變更/etc/fstab
為非零值將導致系統運行fsck.xfs
,其手冊頁顯示:
NAME
fsck.xfs - do nothing, successfully
[...]
However, the system administrator can force fsck.xfs to run xfs_re‐
pair(8) at boot time by creating a /forcefsck file or booting the sys‐
tem with "fsck.mode=force" on the kernel command line.
所以,平常fsck.xfs
什麼事都不做。
如果你真的想xfs_repair
在啟動時運行,有兩個條件必須滿足:
a) 對於相關的 XFS 檔案系統,第 6 個欄位/etc/fstab
必須非零,以便fsck.xfs
執行。
b)/forcefsck
檔案必須存在於根檔案系統上(或可能存在於 initramfs 中,如果計劃檢查根檔案系統),或者核心命令列必須具有fsck.mode=force
引導選項。這將導致fsck.xfs
運行xfs_repair
而不是不執行任何操作。
那麼 xfs_repair 有什麼特別之處呢?
XFS 檔案系統和xfs_repair
工具都將假設底層磁碟狀況良好,或至少能夠使用內建備用區塊透明地替換壞區塊(就像所有現代磁碟一樣)。如果現代磁碟存在作業系統可見的持久性壞區塊,通常表示內建的備用區塊機制已經被壞區塊數量淹沒,並且磁碟可能很快就會完全失效。
的手冊頁xfs_repair
說:
Disk Errors
xfs_repair aborts on most disk I/O errors. Therefore, if you are trying
to repair a filesystem that was damaged due to a disk drive failure,
steps should be taken to ensure that all blocks in the filesystem are
readable and writable before attempting to use xfs_repair to repair the
filesystem. A possible method is using dd(8) to copy the data onto a
good disk.
因此,在正常情況下您可能不應該設定xfs_repair
為自動運行。
如果 XFS 檔案系統有錯誤,您應該始終先評估底層磁碟的狀況:smartctl -a /dev/<disk device>
可能有用,因為可能用於dd
讀取分割區/LV 的全部內容/dev/null
並查看命令是否可以無錯誤地完成。
如果磁碟發生故障,您應該先將分割區/LV 的內容複製到新的、無錯誤的磁碟(可能使用dd
或),然後才應嘗試在無錯誤磁碟上的檔案系統上ddrescue
執行。xfs_repair
xfs_repair
如果您知道某些原因導致檔案系統層級錯誤,即使您的磁碟狀況良好,在啟動時自動執行可能是合適的解決方法。但這只是一種解決方法,而不是修復:您應該找出導致檔案系統錯誤的原因,並修復根本原因。 (也許是檔案系統驅動程式錯誤,需要更新的核心包來修復?)
答案2
如果上面的文件/dev/sda
有錯誤,那麼你需要運行fsck
它。請記住,它實際上不會修復磁碟本身,而只會修復檔案。如果磁碟確實有錯誤並且出現故障,那麼最好更換磁碟並從備份中恢復數據,因為如果它變得足夠糟糕,您可能會丟失數據,尤其是當磁碟完全損壞時。