ディスクで読み取れないセクタを見つけたときに長すぎるのは本当に迷惑です。 (特に、バックアップおよびリカバリの目的で不良セクタのあるディスクからできるだけ多くのデータを読み、迅速に読みたい場合)
ディスクは読み取りエラー(認識されたエラー)を報告します。
失敗した読み取りに時間がかかりすぎないように削除し、読み取りプロセスとディスクがブロックされず、次の読み取りを試みるようにディスク(ATA)を設定できますか?
それともこれを達成するためにLinuxディスクドライバを設定できますか?
それとも、長い読み取りを避けるために、Linuxの読み取りプロセスで何ができますか?
答え1
失敗した読み取りに時間がかかりすぎないように削除し、読み取りプロセスとディスクがブロックされず、次の読み取りを試みるようにディスク(ATA)を設定できますか?
いいえ。
私が理解しているのは、これはオペレーティングシステムが「可能なエラー」を処理すると合理的に期待できないため、作業ハードウェアのパフォーマンスと信頼性を好む設計の選択(Linuxに限定されない)によって引き起こされる論理的な問題であるということです。 。ハードウェアにインポートされます。 。私たちは持っていますこれに関する質問と回答。
不良セクタのあるディスクからできるだけ多くのデータを読み込もうとする場合
不良セクタの場合、幸運にも影響を受けたパーティションをアンマウントし、e2fsck -cy /dev/whatever
そのパーティションで実行します(ext形式であると仮定)。スイッチが-c
動作し、badblocks
パーティションの「不良ブロックリスト」に個々のアドレスを追加します。後でインストールすると、システムはそのアドレスにアクセスしようとしません。これはおそらく一部のデータが失われたことを意味します。そのうちのいくつかは/lost+found
ディレクトリにあります。この-y
スイッチを使用すると、fsckの問題が多いときに手動で「はい、修正します」と言う必要はありません。
ただし、不良ブロックではない場合(コントローラーエラーなど)、運はありません。何か故障しました。理由は次のとおりです。重要なデータを定期的にバックアップする非常に重要です。悪いコントローラがあるディスクで実行すると、問題が悪化するのかわかりませんe2fsck -cy
。考慮すべきことですが、OTOH、とにかく欲しいものが手に入らない場合は失うことはありません。
答え2
ほとんどの Unix システムは、ローカルディスク上で非同期読み取りを実装しません。呼び出しを試みると同期読み取りが発生します。特にLinuxでは、ローカルディスクのスリープモードは中断されません(スクラッチCDの場合は問題です)。
プラットフォームでローカルディスクIOがクラッシュした場合は、Alarm()を使用して待機する最大時間を設定できます。