サーバーが緊急モードで再起動したり、パーティションのマウントが拒否されたり、カーネルがext4エラーを報告したりすると、すぐに起動したくなる。 fsck 最初に見つかったデバイスに対して修復を実行します。これはまさに避けなければならないことです。間違ったボリュームや、まだマウントされているファイルシステムに対して修復を実行すると、損傷が悪化する可能性があります。
fsck これは、ファイルシステムに適したツールを呼び出すランチャーです。修正を行う前に、パーティションを特定し、その種類を確認し、使用されていないことを確認し、使用可能なバックアップを保持する必要があります。私は常に書き込み禁止チェックから始めます。修復はその後に行います。

パーティションとそのファイルシステムを特定する
名前だけに頼ってはいけません /dev/sdb1再起動後、またはUSBデバイスを追加した後に、ディスクの順序が変わる場合があります。ファイルシステムの種類、UUID、モデル、シリアル番号、およびマウントポイントを表示します。
lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINTS,MODEL,SERIAL,TYPE
へのガイド Linuxにおけるlsblk /dev/mapper/vg_data-lv_archive物理的な LVM ボリュームではなく、以下の場所にあるボリュームです。 LVMとそのさまざまなレイヤー これにより、両者を区別することができる。
次に、その情報源がどのように使用されているかを確認します。
findmnt --source /dev/nvme0n1p2
findmnt --target /mnt/data
出力があれば、音量が上がったことを示しています。出力がない場合は、確信が持てません。説明書をもう一度読んでください。 lsblk そして 見つけます ファイルシステムUUID 似たような名前の楽譜が混同されるのを防ぐ。
マウントされたファイルシステムを修復してはいけません
カーネルはメタデータを変更できる fsck それらを修正してみてください。すると、ファイルシステムの2つのビューが矛盾するようになります。読み取り専用マウントは、応急処置的な修復を保証するものではありません。ツールは、そのドキュメントに記載されている条件に従って使用する必要があります。
指定されたデータ量に対して、そのデータを使用しているサービスを停止し、そのディレクトリツリーにある端末を終了してから、アンマウントします。
sudo fuser -vm /mnt/data
sudo umount /mnt/data
findmnt --source /dev/nvme0n1p2
もし アンマウント ターゲットがビジー状態なので、強制しないでくださいと応答します。プロセスを特定します または lsofその後、該当するサービスを適切に停止してください。
ルートパーティションについては、このパーティションがマウントされていないライブメディアまたはレスキュー環境を使用してください。シングルユーザーモードまたは緊急モードに切り替えるだけでは、ルートパーティションがアンマウントされていることを確認できません。リモートサーバーでは、再起動する前に、KVMコンソール、IPMI、またはホスティングプロバイダの緊急アクセスが利用可能であることを確認してください。
以下のコマンドはどのチェッカーかを示します fsck チェックを実行せずに起動します。
sudo fsck -N /dev/nvme0n1p2
逆アセンブルされたext2、ext3、またはext4システム上で、強制スキャンを実行し、提案されたすべての変更に対して「いいえ」と回答します。
sudo e2fsck -f -n /dev/nvme0n1p2
echo "コード e2fsck: $rc"
オプション -n 読み取り専用制御を保持します。 -f ファイルシステムに問題がないように見えても、徹底的な検査が必要です。大容量のディスクでは、このチェックに時間がかかる場合があります。ディスクが入出力エラー、タイムアウト、または切断を報告する場合は、まず読み取り可能なデータをバックアップしてから、ハードウェアをチェックしてください。 fsck これは、物理的に故障したディスクではなく、論理的な構造を修復するものです。
カーネルメッセージはこのシナリオを裏付けることができます。
sudo dmesg -T | grep -Ei 'I/O error|timeout|reset|EXT4-fs|XFS|BTRFS'
sudo journalctl -k -b -p warning..alert
へのガイド dmesgとカーネルエラー これにより、これらのアラートをイベントの順序通りに並べ替えることができます。
「はい」に答えずにext4ボリュームを修復する
チェックで不整合が報告された場合は、バックアップを確認し、デバイスを再度確認し、ボリュームをマウント解除したままにしてください。その後、対話型修復を開始してください。
sudo e2fsck -f /dev/nvme0n1p2
提出する前に各質問をよく読んでください。 -y
コマンドが終了したら、すぐに終了コードを取得します。
rc=$?
echo "コード e2fsck: $rc"
ゼロ以外のコードが表示されたからといって、必ずしも修理が失敗したとは限りません。主な値は以下のとおりです。
〇エラーは検出されませんでした。一: エラーを修正しました。二エラーが修正されました。再起動が必要です。: 未修正のエラー;: テスターの操作にエラーがあります。十六: 使用法または構文エラー。三十二: コントロールがキャンセルされました。百二十八
これらの値はビットのように機能し、加算することができます。コード 四 すべてが固定されているかのように読み書きボリュームを増やさないことを要求する。 八 コマンド、ファイルシステムの種類、インストールされているツール、および表示されているメッセージを確認するよう要求します。
fsck
修理はその後、 常にマウントを外してください。使用しないでください。 -L 最初の試みとして、ログをリセットすると、最近のメタデータが失われる可能性があります。
Btrfsの場合、慎重な制御は明示的に読み取り専用です。
sudo btrfs check --readonly /dev/nvme0n1p2
追加しないでください - 修理 バックアップなしで、かつ発生した問題に適した手順なしでは使用しないでください。Btrfs のドキュメント自体が、経験豊富なガイダンスなしで使用しないように警告しています。常に確認してください。 FSタイプ と lsblk -f ツールを選択する前に。
組み立て直す前に音量を確認してください
ext4の修復後、書き込みを伴わないチェックを実行します。結果が正常であれば、ボリュームを再マウントし、タイプ、容量、および新しいカーネルメッセージを確認します。
sudo e2fsck -f -n /dev/nvme0n1p2
sudo mount /mnt/data
findmnt /mnt/data
df -hT /mnt/data
sudo journalctl -k -b -p warning..alert
起動時に制御されるルートパーティションの場合は、前回の起動時のトレースも確認してください。
そこには fsckのマニュアルページ ランチャーとその終了コードについて説明します。ext4 については、 e2fsck特有の手順は、 XFS そしてへ Btrfs ランダムに見つかった汎用コマンドよりも優先されなければならない。