Centos7

處理損壞的 XFS 文件系統的正確方法

  • July 2, 2021

我最近有一個 XFS 文件系統由於電源故障而損壞。(CentOS 7 系統)。系統無法正常啟動。

我從救援 cd 啟動並嘗試xfs_repair,它告訴我掛載分區以處理日誌。

我安裝了分區,並ls驗證了是的,它似乎在那裡。我解除安裝了分區並xfs_repair再次嘗試並得到相同的消息。

在這種情況下我該怎麼辦?我的救援光碟(系統救援光碟,版本 4.7.1)有問題嗎?我應該使用其他程序嗎?

我最終只是簡單地從備份中恢復系統(在這種情況下它既快速又容易),但我想知道將來要做什麼。

如果您嘗試執行xfs_repair,收到建議安裝文件系統以重播日誌的錯誤消息,並且在安裝後仍然收到相同的錯誤消息,您可能需要執行強制修復(使用-L帶有 的標誌xfs_repair)。這個選項應該是最後的手段。

例如,我將使用我的 CentOS 7 安裝中的根分區損壞的情況。嘗試掛載分區時,我不斷收到以下錯誤消息:

mount: mount /dev/mapper/centos-root on /mnt/centos-root failed: 結構需要清理

不幸的是,強制修復將涉及在嘗試修復之前將日誌歸零(銷毀)。使用此方法時,最終可能會得到比最初預期更多的損壞數據;但是,我們可以在進行任何永久性更改之前使用適當的 xfs 工具來查看可能造成的損壞類型。

使用xfs_metadumpxfs_mdrestore,您可以創建受影響分區的元數據映像,並對映像而不是分區本身執行強制修復。這樣做的好處是能夠在對分區執行強制修復之前查看強制修復帶來的損壞。

為此,您需要一個大小合適的 USB 或外部硬碟驅動器。首先安裝 USB 驅動器 - 我的 USB 位於/dev/sdb1,您的 USB 可能有不同的命名。

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

掛載後,執行xfs_metadump以創建分區元數據到 USB 的副本 - 同樣,受影響的分區可能不同。在這種情況下,我有一個損壞的根分區位於/dev/mapper/centos-root

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

接下來,您需要將元數據恢復到圖像中,以便我們可以執行修復並測量損壞情況。

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

我發現在救援模式下xfs_mdrestore不可用,相反,您需要處於實時 CentOS CD 的救援模式。

最後,我們可以對圖像進行修復:

xfs_repair -L /mnt/usb/centos-root.img

修復完成並評估輸出和潛在損壞後,您可以確定是否要對分區執行修復。

要對分區執行修復,只需執行:

xfs_repair -L /dev/mapper/centos-root

不要忘記檢查其他分區是否損壞。修復後,重新啟動系統,您應該能夠成功啟動。

請記住,在-L沒有其他可能的修復選項時,應將標誌用作最後的手段。

我發現這些線上文章有幫助:

引用自:https://serverfault.com/questions/777299