web-dev-qa-db-ja.com

ファイルシステムの破損を修復する方法

外付けUSB SSDドライブ上のDebian。 dmesgログファイルにエラーが発生しました:

...[    3.320718] EXT4-fs (sdb2): INFO: recovery required on readonly filesystem
[    3.320721] EXT4-fs (sdb2): write access will be enabled during recovery
[    5.366367] EXT4-fs (sdb2): Orphan cleanup on readonly fs
[    5.366375] EXT4-fs (sdb2): ext4_Orphan_cleanup: deleting unreferenced inode 6072
[    5.366426] EXT4-fs (sdb2): ext4_Orphan_cleanup: deleting unreferenced inode 6071
[    5.366442] EXT4-fs (sdb2): 2 Orphan inodes deleted
[    5.366444] EXT4-fs (sdb2): recovery complete
...

システムが起動し、正常に動作します。これを完全に修復することは可能ですか、適切な方法は何ですか?

7
triwo

次のようにマウントすると、ファイルシステムにfsckをすぐに実行するように指示できます。

方法#1:/ forcefsckを使用する

通常、次の再起動時にチェックをスケジュールできます。

$ Sudo touch /forcefsck
$ Sudo reboot

方法2:シャットダウンを使用する

-Fスイッチを使用して、shutdownコマンドにも同じように指示することもできます。

$ Sudo shutdown -rF now

注:最初の方法は、これを実現する最も一般的な方法です!

方法#3:tune2fsの使用

tune2fsを使用することもできます。これにより、ファイルシステム自体にパラメーターを設定して、次回マウントが試行されたときにチェックを強制することができます。

$ Sudo tune2fs -l /dev/sda1
Mount count: 3
Maximum mount count: 25

したがって、次のコマンドを使用して、「マウント数」を25より大きくする必要があります。

$ Sudo tune2fs -C 26 /dev/sda1

tune2fs -lで変更された値を確認してから、再起動してください!

注:3つのオプションのうち、プライマリの(tune2fs)か他のファイルシステムかに関係なく、ファイルシステムの強制チェックを処理できることを考えると、/を使用します。

その他の注意事項

通常、ext2/3/4としてフォーマットされたパーティションに関連付けられた「Maximum mount count:」および「check interval:」パラメーターが表示されます。多くの場合、次のように構成されます。

$ tune2fs -l /dev/sda5 | grep -E "Mount count|Maximum mount|interval"
Mount count:              178
Maximum mount count:      -1
Check interval:           0 (<none>)

この方法でパラメータを設定すると、デバイスはマウント中にfsckを実行しません。これはほとんどのディストリビューションでかなり一般的です。

小切手を動かす力は2つあります。マウント数または経過時間。 「チェック間隔」は時間ベースのものです。 2週間ごとに2wと言うことができます。詳細については、tune2fsのマニュアルページを参照してください。

注:また、tune2fsはデバイスコマンドではなくファイルシステムコマンドであることを確認してください。つまり、ext2/3/4ファイルシステムがない限り、古いデバイス/dev/sdaだけでは機能しません。コマンドtune2fsは無意味です。これらのタイプのファイルシステムのいずれかでフォーマットされたパーティションに対して使用する必要があります。

参考文献

7
slm

fsckを実行して、このパーティションをアンマウントすることをお勧めします/dev/sdb2そのデバイスに重要な乗り物がない場合、それが機能しない場合は、ライブCDでfsckを実行してみてください。

$ Sudo fsck /dev/sdb2
1
user3132678

Fsckのような操作を実行する必要があると考えてください。次のようにfsckを実行してみてください。

$ Sudo fsck /dev/sdb2
0
vembutech