web-dev-qa-db-ja.com

破損したXFSファイルシステムに対処する適切な方法

最近、電源障害のためにXFSファイルシステムが破損しました。 (CentOS 7システム)。システムが正しく起動しない。

レスキューCDから起動してxfs_repair、ログを処理するためにパーティションをマウントするように言われました。

パーティションをマウントし、lsを実行して、はい、それが存在するように見えることを確認しました。パーティションをアンマウントしてxfs_repair再び同じメッセージを受け取りました。

この状況で私は何をすべきですか?レスキューCD(System Rescue CD、バージョン4.7.1)に何か問題がありますか?他に使用すべき手順はありますか?

バックアップからシステムを復元するだけで終了しました(この場合は迅速かつ簡単でした)が、将来どうするか知りたいです。

20
Michael Kohne

xfs_repair を実行しようとすると、ログを再生するためにファイルシステムをマウントすることを提案するエラーメッセージが表示され、マウントした後も同じエラーメッセージが表示される場合は、強制修復を実行する必要があります( -Lフラグとxfs_repair)。 このオプションは最後の手段にする必要があります。

たとえば、CentOS 7インストールで破損したルートパーティションがあった場合を使用します。パーティションをマウントしようとすると、次のエラーメッセージが頻繁に表示されました。

マウント:/ mnt/centos-rootへのマウント/ dev/mapper/centos-rootが失敗しました:構造のクリーニングが必要です

残念ながら、修復を強制するには、修復を試行する前にログをゼロにする(破棄する)必要があります。この方法を使用すると、最初に予想したよりも多くのデータが破損する可能性があります。ただし、永続的な変更を行う前に、適切なxfsツールを使用して、どのような損害が発生する可能性があるかを確認できます。

xfs_metadumpxfs_mdrestore を使用すると、影響を受けるパーティションのメタデータイメージを作成し、パーティション自体ではなくイメージの強制修復を実行できます。これの利点は、パーティションで実行する前に強制修復に伴う損傷を確認できることです。

これを行うには、適切なサイズのUSBまたは外付けハードドライブが必要です。 USBドライブをマウントすることから始めます-私のUSBは/dev/sdb1にありました。

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フラグは、他に修復できるオプションがない場合の最後の手段として使用する必要があることに注意してください。

これらのオンライン記事が役立つことがわかりました:

22
brendonofficial

CentOS 7がkvm仮想マシン内で不正停止したときに、このエラーが発生しました。

xfsでメタデータの破損が検出されました...

log whit“ journalctl -xe”を使用すると、マウントエラーが発生しました。

/ dev/mapper/root/sysroot

私はそれを使って解決します:

xfs_repair/dev/mapper/root

次に、システムは7つのフェーズを完了し、次を使用して再起動します。

。/シャットダウン

そして、仮想マシンcentos 7はうまく動作します…

よろしく

注:/ dev/mapper/rootが別の名前を持っている可能性があります。journalctl-xeを使用してエラーログを確認し、不正にマウントされたユニットの名前を見つけてください。

1
davidleosam