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