fstabファイルを編集してファイルシステムを修復する

fstabファイルを編集してファイルシステムを修復する

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起動時に実行したい場合は、次の 2 つの条件を満たす必要があります。

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 ファイルシステムにエラーがある場合は、常にまず基礎となるディスクの状態を評価する必要があります。 を使用してパーティション/LV の内容全体を読み取り、コマンドがエラーなしで完了できるかどうかを確認するとsmartctl -a /dev/<disk device>役立つ場合があります。dd/dev/null

ディスクに障害がある場合は、まずパーティション/LV の内容を新しいエラーのないディスクにコピーし (おそらく または を使用dd) ddrescue、その後でxfs_repairエラーのないディスク上のファイルシステムでの実行を試行する必要があります。

ディスクが良好な状態であっても、何かがファイルシステム レベルのエラーを引き起こしていることがわかっている場合は、起動時に自動的に実行するxfs_repairことが適切な回避策になる場合があります。ただし、これは単なる回避策であり、修正ではありません。ファイルシステム エラーの原因を特定し、根本的な原因を修正する必要があります。(ファイルシステム ドライバーのバグで、修正するにはカーネル パッケージの更新が必要かもしれません。)

答え2

ファイルに/dev/sdaエラーがある場合は、そのファイルで実行する必要がありますfsck。実際にはディスク自体を修復するのではなく、ファイルのみを修復することに注意してください。ディスクにエラーがあり、故障している場合は、ディスクを交換してバックアップからデータを復元するのが最善です。状況が悪化すると、特にディスクが完全に故障した場合は、データが失われる可能性があります。

関連情報