突然、Linux を実行しているラップトップで DRDY ERR が表示されるようになりました。次のようなメッセージが表示されます。
ata1:00: status: { DRDY ERR }
ata1.00: error {UNC }
ata1:00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1:00: BMDMA stat 0x25
ata1:00: failed command: READ DMA
最後にコマンドプロンプトが表示され、実行レベルを入力するように求められます。その後
INIT: no more processes left in this runlevel
HDD がクラッシュしたのではないかと疑い、それを取り出して別の PC で外付け USB HDD ドライブとして使用したところ、マウントしてすべてのパーティションとファイルを確認することができました。したがって、ディスクは正常であると考えられます。
[編集/更新]
また、Linux を搭載した USB ペンドライブからラップトップを起動することもでき、ディスク上のすべてのパーティションを表示してアクセスすることもできます。
また、HDDを取り外して外付けケースに入れ、同じラップトップで起動しようとしましたが、次の異なるエラーが発生しました。
end_request: critical target error, dev sda, sector 32839936
EXT4_fs error: (device sda5): ext4_find_entry:935: inode #393217: comm init: reading directory lblock 0
INIT: No inittab file found
Enter runlevel:
つまり、HDD はストレージとしてアクセス可能だが、起動可能ではないということだと思います。参考になれば、その HDD のパーティション スキームは以下のとおりです。(GPT スキーム)
partition FileSystem size flags
--------- ----------- ---- -----
/dev/sda1 unknown 2.00MB bios_grub
/dev/sda2 ext2 128MB # was supposed to be common boot partition for chain loading
/dev/sda3 swap 1.5GB
/dev/sda4 ext4 8GB # Linux 1 (somehow, Grub does not show this in the menu, cannot boot into)
/dev/sda5 ext4 8GB # Linux 2 (I could only boot into this one from Grub.)
/dev/sda6 ext4 94GB # DATA
unallocated _ 1MB
私は Linux を次々にインストールしており、実際には /dev/sda2 に Grub をインストールして Linux 1 と 2 をチェーンロードしたかったのですが、それを実行する前に、この問題が発生しました。
何かアイデアはありますか?解決策はありますか?
[アップデート2]
- 問題のタイトルは適用できなくなりました *
USB から起動し、すべてのパーティションで 'fsck' を実行しました。すべて (/sda5 を除く) はクリーンであると報告されました。/dev/sda5 は多くのエラー (おそらく数百程度) を報告しましたが、すべてのプロンプトに対して 'y' を入力し続けました。その間に 'linking 'lost+found' ....' などのメッセージが表示されました。すべてのパーティションで 2 回のパスを実行した後、HDD から再起動すると、最新のエラーが表示されました...
INIT: verision 2.88 booting
INIT: No inittab file file found
Enter runlevel:
OS インスタンスを復元して起動できるようですか?
答え1
最初に報告されたエラー:
ata1:00: status: { DRDY ERR }
ata1.00: error {UNC }
ata1:00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata1:00: BMDMA stat 0x25
ata1:00: failed command: READ DMA
READ DMA
ATAポート1のディスクへのATAコマンドが失敗したことを示しています(ステータスERR
にはエラー)。そのポートはハードディスクである可能性が高く、エラーはドライブに問題があることを示しています。このDMA
部分はおそらく無視できます。DMAは直接メモリアクセスこれは現在主流の転送モードであり、このような状態に繰り返し遭遇するほど RAM または RAM バスに問題がある場合、システムが機能できたとしても、さらに多くのエラーが発生する可能性が高くなります。
2番目のエラー:
end_request: critical target error, dev sda, sector 32839936
EXT4_fs error: (device sda5): ext4_find_entry:935: inode #393217: comm init: reading directory lblock 0
INIT: No inittab file found
は、/dev/sda のセクター 32839936 に何らかの問題があることを示しています。これは、512 バイトのセクターであるため、物理的には /dev/sda5 パーティションの末尾に近い位置にあり、device sda5
ファイル システム ドライバーによって報告された値と一致します。 によって報告されたエラーinit
とファイル システム ドライバーのエラーの詳細を合わせると、ファイル システムに問題があり、/etc/inittab が使用できないか (可能性は低いですが) 読み取り不可能になっていることがわかります。これは、ルート ディレクトリ、/etc ディレクトリ、または /etc/inittab ファイル エントリのいずれかが何らかの形で破損に関係していることを意味します。inode 番号を考えると、/etc/inittab が原因であると推測しますが、間違いであることが証明されるまでは、その可能性は低いでしょう。
あなたは次のように書いています(強調は筆者による)。
HDD がクラッシュしたのではないかと疑い、それを取り出して別の PC で外付け USB HDD ドライブとして使用したところ、マウントしてすべてのパーティションとファイルを確認することができました。したがって、ディスクは問題ないと思われます。
私はこう言いたいあなたの仮定は根拠がありません。ディスクに何らかの問題があることは明らかですが、運が良ければ簡単に修復できるでしょう。
私が最初にすることはあなたの状況では、そのディスクにあるすべてのバックアップを更新するのが最善策です。最新のバックアップから何も上書きしたり削除したりしないでください。必ず必要になる可能性があるからです。おそらく最善の選択肢は、アクセスできるすべてのものを新しいドライブ (または少なくとも以前に自分のバックアップに使用されていないドライブ) に新しくバックアップすることです。コピーを作成するときに、ソースで I/O エラーが発生することを想定してください。
2番回復を試みることになります。幸運にも、エラーを考慮すると、これは単一セクターまたは少数のセクターの問題であり、ファイルシステムの破損が少量発生している可能性があります。e2fsck
すべき損傷のほとんどを修復できるはずです。一部のファイルはおそらく消えていますが、運が良ければ、e2fsck で可能な処理を行った後、ファイルシステムのマウント ルートの下にある /lost+found (たとえば、/dev/sda5 を /data にマウントする場合は /data/lost+found) でそれらのファイルを見つけることができるかもしれません。そうでない場合は、問題が発生する前の最新のバックアップと比較し、バックアップから関連ファイルを復元します。(悪いことが起こった場合、それは避けられないことですが、バックアップは役に立つと言いましたか?)
三番目ドライブを将来的に信頼できるかどうかという疑問が湧いてきます。ドライブの観点から見れば、いくつかの不良セクタは必ずしも壊滅的ではありませんが、100 GB 程度の回転式ドライブは、ほとんどのフォーム ファクタでは現在、新品で入手することは事実上不可能です。これは、このドライブが比較的古いものであることを示しています。個人的には、この時点でドライブの耐用年数が過ぎたと受け入れて交換するでしょうが、私はデータに関してはかなり偏執的なので、状況は異なるかもしれません。交換用ドライブのコストと完全故障のリスクを比較検討するドライブとその後のドライブ上のすべてのデータが完全に失われます。