ジャーナルが破損したext4ファイルシステムの回復


9

ジャーナルで何らかのハードウェアの問題が発生したと思われるハードドライブがあります。これにより、ドライブがロードされなくなります。実行mount -r -t ext4 /dev/sda5 /mnt/rootすると、次のカーネルが生成されます。

[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326]          res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]  
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]  
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 1420.783175]         08 0a 9d e1 
[ 1420.785972] sd 0:0:0:0: >[sda]  
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB: 
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal

私はこれが何を意味するのかほとんど理解していませんが、ジャーナルのロードを妨げるハードウェアの問題のように見えます。とにかくこれを回避する方法はありますか?たとえば、残りのドライブをほとんどそのままにして、ジャーナルを別のオフセットに移動できますか?ドライブを使い続けるつもりはありません。重要なファイルをいくつかコピーできるように、マウントしたいだけです。


2つのこと:必ずケーブルを取り外して再接続します。ハードウェアの問題を一時的に取り除くことさえできます。ある場合は、新しいケーブルを入手してください。そうでない場合は、別のケーブルを使用して別のコンピュータのディスクも試します。
0xC0000022L 2013

fsckファイルシステムを試しましたか?
psusi 2013

暗号化されたext4パーティションのロックを解除したときに、なんとかしてジャーナルを破損させることができた今日、同様の問題がありました。読み取り専用としてのみマウントできました。GPartedのパーティションに対して「チェック」ルーチンを実行して、なんとか修正しました。「チェック」ルーチンは、ジャーナルの問題を検出し、自動的に修正しました。
-navnav

回答:


8

ジャーナルを再生せずに読み取り専用でマウントして、ファイルにアクセスできるようにします(通常のfsにまだコミットされていない変更が失われる可能性があります)。

mount -o ro,noload ...


7

の出力を見てくださいsmartctl -a /dev/sda。ケーブルの問題ではない場合は、ディスクが故障している可能性があります。最新のバックアップがない場合は、dd_rescueまたはddとそれぞれのオプションを使用して、ブロックデバイスのコンテンツを(マウントせずに)コピーしてみてください。

その後、試すことができますhdparm --write-sector(常にこれらの「非常に危険な」オプションはおかしいです...)。

別のオプションは、欠陥セクターをバイパスするDMデバイスを作成することです。もちろん、その内容は復元されません。sdaオフセット(134913505)をsda5オフセットに変換する必要があります(sda5の最初のセクターの番号を見つけてそれを差し引く)。sda5オフセットが12345であると仮定します。セクター12345がsda5にマップされていないブロックデバイス(ループデバイスなど)を作成します。(dmsetup createの)デバイス定義は次のようになります。

0 12345 linear /dev/sda5 0
12345 1 linear /dev/loop0 0
12346 99987653 /dev/sda5 12345

# format:
# logical_start_sector num_sectors linear destination_device start_sector

欠陥のあるセクターが1つしかないほど幸運ではありません。必要な数だけマップアウトできます(その結果、DMデバイスはこれらのセクターにゼロを提供しますが、書き込み可能です)が、loop0でのオフセットの計算が面白くなる可能性があります。別のオプションは、再マッピングに同じサイズの仮想デバイスを使用し、ゼロターゲットデバイスのシンプロビジョニングまたはスナップショット(小さなチャンクサイズ、1セクターなど)を使用することです。

編集1

もちろん、ループデバイスは同じディスク(sda)上のファイルを指すべきではありません。


非常に良い点です。--write-sectorあるFAR「危ない」から。実際、これは実際には、特定の破損した単一セクターが連続した未加工セクターイメージを取得できない場合に使用する理想的なオプションです(「デバイスI / Oエラー」で救済されます。一部のHDDは、マシンの電源を再投入する必要があります( !)OSによって再び認識されるようにします)。ただし、セクター範囲に使用する場合は、シェルスクリプトについて知っておく必要がありますdd--write-sector
Syntaxerror

0

FSが読み取り専用でマウントされるリカバリモードで起動し、コンテンツをコピーできます。


読み取り専用でマウントしています。これをわかりやすくするために、上記のコマンドラインを修正しました。
JSBձոգչ2013

ドライブにアクセスできますか?
schaiba 2013

いいえ。ドライブのRO(またはR / Wでは違いはありません)をマウントしようとすると、上記のエラーが発生します。
JSBձոգչ2013

次に、ケーブル交換の提案が役に立ちます。そして、あなたの質問に関して、ジャーナルはあなたが望むように動かすことができません。
schaiba 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.