Debian wheezy インストールのホーム パーティションは、暗号化された LVM ボリュームです。ext3 です。今日、ターミナル ウィンドウに、ツリー内のファイルへの書き込みが/home
読み取り専用ファイル システムのため失敗したという奇妙なメッセージが表示されました。再起動すると、 というエラー メッセージが表示されました/dev/sda1 is reported as clean. fsck.ext3
。これは自動的に実行され、 というデバイスは存在しないと報告し/dev/mapper/sda1_crypt
、終了コード 8 を報告します。メンテナンス シェルに切り替わり、 にログを書き込もうとしたことが通知されます/var/log/fsck/checkfs
。
そのログには次のように書かれています:
[Timestamp]
fsck from util-linux 2.20.1
/dev/mapper/sda1_crypt: Super blocks need_recovery flag is clear, but journal has data.
/dev/mapper/sda1_crypt: Run journal anyway
/dev/mapper/sda1_crypt: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
(i.e., without -a or -p options)
fsck died with exit status 4
私は走った
$ fsck -vnM /dev/mapper/sda1
たくさんのillegal block #nnnn (mmmmmmmmm) in inode ppppppp IGNORED
メッセージが流れ、その後
too many blocks in Inode somenumberhere
次に、複数のinodeによって要求されたブロックを解決するために追加のパスを実行します。
そして出力は
Pass 1B: Rescanning for multiply claimed blocks
しばらくすると、
Illegal block number passed to ext2fs_test_block_bitmap somenumberhere for multiply claimed block map
これに続いて、I ノード anothernumber の 2 つの Multiply 要求ブロックが続きました: [5 および 8 のブロック番号のリスト]
それから私は次のような詩節をいくつか得た
[ 3828.181915] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 3828.182462] ata1.01 BMDMA stat 0x64
[ 3828.183810] ata1.01 failed command: READ DMA EXT
[ 3828.185889] ata1.01 cmd 25/00:08:08:10:9c/00:00:29:00:00/f0 tag dma 4096 in
[ 3828.185891] res 51/40:00:09:10:9c/40:00:29:00:00/f0 Emask 0x9 (media error)
[ 3828.190071] ata1.01 status: { DRDY ERR }
[ 3828.192153] ata1.01 status: { UNC }
これに続いて
[ 3830.509338] end_request: I/O error, deb SDA, sector 698093577
[ 3830.509841] Buffer I/O error on device dm-3, logical block 87261184
Error reading block 87261184 (Attempt to read block from filesystem resulted in short read) while reading I node and block bitmaps. Ignore error? no
fsck.ext3: Can't read an block bitmap while retrying to read bitmaps for /dev/mappersfa1_crypt
/dev/mapper/sda1_crypt: ******* WARNING: Filesystem still has errors *******
e2fsck: aborted
/dev/mapper/sda1_crypt: ******* WARNING: Filesystem still has errors *******
そして、ファイルシステムにまだエラーがあるという警告が表示されて中止されました。
私の質問は次のとおりです:
私のデータは壊れてしまったのでしょうか? (私の厳格なバックアップ ポリシーは最近厳密に守られていません。宇宙から罰を受けているに違いありません。)
今、私は何ができるでしょうか?
私はもう間違ったことをしたのでしょうか?
震えが止まるまで誰か私を抱きしめてくれませんか?
編集
地元の LUG メーリング リストでも質問しました。そこで得たアドバイスは、ddrescue を使用してドライブのイメージを取得し、そのイメージのコピーに対して fsck を実行するというものでした。これは妥当な方法のように思えますし、事態を悪化させることもなさそうです。そのため、これが現在の攻撃計画であり、より良い提案が出てくるまでこの計画を続けています。
答え1
ハードディスク自体に問題があるようです。(「読み取り不足」など) その場合、dmesg | tail
おそらく I/O エラーが表示されます。
これを確認するもう 1 つの方法は、badblocks -n
問題のあるパーティションで実行することです。または、ディスク全体で実行したほうがよいでしょう。何をテストするにしても、アンマウントする必要があります。これは、最近の大容量ディスクでは数時間かかります。マウントするパーティションに、なくてはならないものがある場合は、まずそれをリムーバブル メディアまたはネットワーク ボリュームにコピーします。
ディスクをミラーリングするという提案も良いでしょう。これは、badblocks -n
ディスクにすべてのセクターの読み取りを強制することで、ディスクが問題のあるブロックを再配置する原因となるため、チェックの「簡易版」のようなものと言えbadblocks -n
ます。badblocks -n
は、問題のあるセクターはほとんど読み取り不可能なため、ディスクに書き込もうとすることでのみ、移動する必要があるほど悪い状態として認識されるため、より効果的です。それでも、ディスクに回復に耐えられるだけの寿命が残っている場合は、追加の読み取りパスではディスクを終わらせるには不十分です。
ディスク イメージで実行することですべてが回復されるとは、あまり期待していませんfsck
。このプロセスでは、ほぼ確実にセクターが失われるため、一部のファイルは読み取り不能になったり、使用できないほど破損したりします。たとえば、JPEG は破損したデータでも部分的にデコードできますが、下部 2/3 が切り取られた JPEG は役に立たない可能性があります。
私のデータはトーストされていますか?
可能性はありますし、ないかもしれません。badblocks -n
パスによって問題が解決する場合もあります。解決したとしても、ディスクがこのような悪い状態になるのは、起動時にほぼ死んでいた場合のみであるため、HDD を交換する必要があります。
私はもう間違ったことをしたのでしょうか?
「厳密」という言葉の意味を忘れた以外は、いいえ。:)
答え2
復元するための最新のバックアップ イメージがあることを願います。
保存しておきたいものについては、今すぐ限定的なバックアップを取り、ディスクがまだ使用可能かどうかを確認してください。私が以前使っていたトリックの 1 つは、RAW パーティション デバイスを使用して、それを /dev/null に dd することでした。適切なオプションを使用すると、読み取れない領域が特定されます。