損傷についての警告なしにハードドライブ上のデータが劣化する可能性がありますか?
私たちは皆、データやファイルを安全で無傷のままにしておくことを心配していますが、問題についての通知や警告なしにデータが破損し、ユーザーによってアクセスされる可能性はありますか?今日のSuperUser Q&A投稿は、心配している読者の質問に対する答えを持っています.
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
一般化による写真提供(Flickr).
質問
SuperUserの読者topo mortoは、ハードドライブ上のデータが損傷を受けずに劣化してアクセスされる可能性があるかどうかを知りたいと考えています。
オペレーティングシステムが変更を認識せず、ファイルの読み取り時にそのことをユーザーに通知せずに、ハードドライブの物理的な劣化によりファイルの内容にビットが「反転」する可能性がありますか?たとえば、ASCIIテキストファイルの「p」(バイナリ01110000)を「q」(バイナリ01110001)に変更した場合、ユーザーがファイルを開くと、エラーが発生したことを知らずに「q」が表示されます。?
私はFAT、NTFS、またはReFSに関連する回答に興味があります(それが違いを生むのであれば)。オペレーティングシステムがこれからユーザーを保護しているのか、それともコピー間の差異についてデータをチェックしているのかを知りたいのですが。.
ハードドライブ上のデータが劣化し、損傷についての警告なしにアクセスされる可能性があります。?
答え
SuperUserの貢献者であるGuntram Blohmが私たちに答えを持っています。
はい、少々腐敗というものがあります。しかし、いいえ、それは気づかれないユーザーには影響しません.
ハードドライブがセクタをプラッタに書き込むとき、RAMに格納されているのと同じ方法でビットを書き込むのではなく、同じビットの長すぎるシーケンスがないことを確認するためにエンコーディングを使用します。また、数ビットに影響するエラーを修復し、数ビット以上に影響するエラーを検出できるようにするECCコードも追加されています。.
ハードドライブがセクタを読み取ると、これらのECCコードをチェックし、必要に応じて(そして可能ならば)データを修復します。次に起こることはドライブの指定によって影響されるハードドライブの状況そしてファームウェアによって決まります.
- セクタが読み取られ、ECCコードに問題がない場合は、オペレーティングシステムに渡されます。.
- セクタが容易に修復されることができる場合、修復されたバージョンはディスクに書き込まれ、読み返され、次にエラーがランダムなもの(すなわち宇宙線など)であるかどうか、または媒体に系統的エラーがあるかどうかを決定するために検証される。.
- ハードドライブがメディアにエラーがあると判断した場合は、セクターを再割り当てします。.
- (RAIDハードドライブとして指定されているハードドライブ上で)数回の読み取り試行後にセクターの読み取りや修正ができない場合、そのハードドライブはあきらめ、そのセクターを再割り当てし、問題があったことをコントローラーに知らせます。 。それは他のRAIDメンバーからセクターを再構築し、それからそれを再割り当てされたセクターにそれを保存するためにRAIDコントローラーに頼ります(うまくいけば問題はありません).
- デスクトップのハードドライブでセクターを読み取ったり修正したりできない場合は、ハードドライブはさらに読み取りを試みます。ハードドライブの品質によっては、ヘッドの位置を変更したり、繰り返し読み取ったときに反転するビットがないかどうかを確認したり、どのビットが最も弱いかを確認したりすることなどがあります。これらの試みのいずれかが成功すると、ハードドライブはそのセクタを再割り当てし、修復されたデータを書き戻します。.
これは、「デスクトップ」、「NAS / RAID」、または「ビデオ監視」ハードドライブとして販売されているハードドライブ間の主な違いの1つです。 RAIDハードドライブはただ迅速にあきらめてユーザー側の待ち時間を避けるためにコントローラーにセクターを修理させることができます。ユーザーに数秒間待たせることは、データが失われたことを伝えるよりもおそらく優れているためです。損傷したフレームは通常気付かれることすらないので、ビデオハードドライブはエラー回復以上の一定のデータレートを重視しています.
いずれにしても、ハードドライブはビット腐敗があったかどうかを認識し、通常はそこから回復します。回復できない場合は、コントローラにドライバに通知し、次にドライバにオペレーティングシステムに通知します。次に、エラーをユーザーに提示してそれに対処するのはオペレーティングシステムの責任です。これが、サイバーナードが言う理由です:
- 私は自分自身でシングルビットエラーを目撃したことは一度もありませんが、セクター全体が故障したハードドライブをたくさん見たことがあります.
ハードドライブはセクタに問題があるかどうかはわかりますが、どのビットが失敗したのかはわかりません。失敗した単一ビットは常にECCによってキャッチされます。.
chkdskおよび自動的に自分自身を修復するファイルシステムは、ファイル内のデータの修復には対応していません。これらは、ディレクトリエントリと割り当てられたブロック数との間のファイルサイズの違いなど、ファイルシステム自体の構造内の破損を対象としています。 NTFSの自己修復機能は、構造的な損傷を検出し、それがデータにさらに影響を与えることを防ぎますが、既に損傷しているデータは修復されません。.
もちろん、データが破損する可能性がある他の理由があります。たとえば、コントローラの不良RAMは、データがハードドライブに送信される前にデータを変更する可能性があります。その場合、ハードドライブ上のどのメカニズムもデータを検出または修復しません。これが、ファイルシステムの構造が破損する原因の1つになる場合があります。その他の理由には、ソフトウェアのバグ、ハードドライブへの書き込み中の停電(これはファイルシステムのジャーナリングで解決されています)、または不良ファイルシステムドライバ(NTFSがリバースエンジニアリングされて以来長期間にわたって読み取り専用になっていない)が含まれます。文書化されておらず、開発者は自分のコードを信頼していません).
- すべての状況下で利用可能なデータの作業用コピーを保持するために、アプリケーションが2つの異なるデータセンターの2つの異なるサーバーにすべてのファイルを保存するというシナリオがありました。数ヵ月後、コピーされたすべてのファイルの約0.1パーセントが、アプリケーションがデータベースに保存したMD5チェックサムと一致しなかったことがわかりました。それはサーバとSAN間の不完全なファイバケーブルであることが判明しました.
これらの他の理由は、ZFSのようないくつかのファイルシステムがエラーを検出するために追加のチェックサム情報を保持する理由です。それらは、ほんの少しの腐敗よりも悪くなる可能性がある、より多くのことからあなたを保護するように設計されています。.
説明に追加するものがありますか?コメントで音を消す。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.