死にかけているハードドライブ上の損傷のない領域をすばやく検索する

ご存知のように、ハードドライブは不安定なものです。 これは、特に小規模なユーザークラスでは当てはまります。ユーザークラスでは、サーバーハードウェアなどの信頼性を夢見ていません。 しかし、これにとって最も不幸な瞬間に私たちの心にとって大切な鉄片の故障は、ホームユーザーに多くの不愉快な分、時間、または数日さえもたらす可能性があります(残念ながら、私はそのようなケースについて、記事の要約行で、残念ながら、どれくらいの時間が殺されたかを表現できません間違った装備で戦うために)。 160 GBの容量を持つかろうじて住んでいる外付けハードドライブのどのセクションをできるだけ迅速に見つけるタスクに直面しました。 少なくとも10サイズのパーティションに固執し、ある程度自信があると、少なくともLinuxオペレーティングシステムに忠実でありながら、既存のツールではこれが機能しないことがわかって驚いた。 出る方法-猫へようこそ。





なに



Linuxには、エラーをチェックし、既存のext2 / ext3 / ext4パーティションを修正する素晴らしいユーティリティe2fsckが装備されていることがわかりました。 その重要な特性は、別のユーティリティ(badblocks)と統合し、ディスクの不良ブロックを統合し、後で使用されないようにマークする機能です(この機能は-cスイッチを使用して有効にします)。 ファイルシステムがまだないディスクの表面をチェックするには、mk2fsユーティリティのbadblocksと同じ統合を使用して、同じキーで実行してファイルシステムを作成できます。 説明されているケースでは、デフォルトで読み取り専用チェックモードが開始されます。このモードでは、badblocksは明らかですが、読み取り操作によってのみディスクブロックの状態に関する結論を導き出します。 メインユーティリティで-cキーを2倍にする(またはbadblocksを直接実行するときに-nキーを使用する)ことで、データを破損しない安全な読み取り/書き込みモードでチェックインできます。 現在では、メインモードと同様に、ディスクの深刻な損傷を受けた領域との衝突で、1桁(それ以上ではないが)長く動作し、非常にフリーズします。 読み取り/書き込みモードで検証を高速化する危険な方法は、-wスイッチ(データを破壊する読み取り/書き込み検証方法)を使用してbadblockを明示的に起動し、その出力を(ストリームまたはファイル経由で)mk2fsまたはe2fsckユーティリティにリダイレクトすることです。エラー(-e nスイッチ)-ただし、この場合の不良ブロックは、座標を記録して壊れた領域を移動する代わりに、単に動作を停止します。 それがまさにこの動作であり、私はそれを修正したいと思います。



何が欲しい?



しかし、私はディスクをすばやく実行し、適応的に分析し、そのような部分は絶望的であることをユーザーに伝えるユーティリティが必要ですが、パーティションを作成してフルスケールで使用することができますまず、時間が無駄にならないことを確認してください。次に、この方法で、またはデータを比較的安全に配置するために可能な限りほとんどすべてを実行します。 まず、badblocksのアドオンを作成してみてください。これにより、まだ実験的な調査中にbadblocks拡張機能の動作モードを柔軟に変更できます。その本質は、ディスクを断片に「スライス」し、各断片の一部のみをチェックすることで、一般的に加速テストをスキップすることですブロック-これにより、あらかじめ決められた精度(±nメガバイトなど)で、mメガバイトで中断されないディスクの疑わしい部分を検出し、オプションとして、検査して、 高密度で怪我の重く断片化ディスク上の時間を無駄にしないでください。



プロトタイプ (非常にうまく機能し、外部ドライブで私の特定のタスクを解決しました)は、 gitリポジトリgoodrangesにあります。 この記事の主なタスクは、このプロトタイプを既存のユーティリティに開発することに関して、コミュニティからアイデアとコメントを引き出すことです。 pull rekvestaのように、あなたにとって都合の良い形式のコメントを歓迎します。



もちろん、プロトタイプはあらゆる点で実験的であり、それに取り組むことは終わりではないので、スタイルと建築ソリューションのためにスニーカーで強く叩かないでください。



PSこの記事で言及されているユーティリティには、包括的なmanページがあります。 読書を楽しむ



All Articles