web-dev-qa-db-ja.com

ハードディスク上のデータは、Windowsがデータにアクセスしようとしたときに警告が表示されずに劣化する可能性がありますか?

ハードディスクの物理的な劣化により、OSが「通知」せずに、ファイルの読み取り時にそのことを通知せずに、ファイルの内容のビットが「フリップ」する可能性がありますか?例えばASCIIテキストファイル(バイナリ0111000 )の 'p'が 'q'(0111000 1)に変更され、次にユーザー(私)は、エラーが発生したことを意識せずにファイルを開いて 'q'を表示できますか?

FAT、NTFS、またはReFSに関連する回答に興味があります。

OSがこれから私を保護しているかどうか、またはコピー間の/一定期間にわたるデータの不変性をチェックする必要があるかどうかを知りたいです。

30

はい、ビット腐敗というものがあります。

しかしno、それはあなたが気付かれることに影響を与えることはありません。

ドライブがセクターをプラッターに書き込むとき、ドライブはRAMに格納されているのと同じ方法でビットを書き込むだけではありません-エンコードを使用して、同じビットのシーケンスが長すぎて、ECCコードが追加されるため、数ビットに影響するエラーを修復し、数ビット以上に影響するエラーを検出できます。

ドライブはセクターを読み取るときに、これらのECCコードをチェックし、必要に応じてデータを修復します。次に何が起こるかは、ドライブの指定によって影響を受けるドライブのファームウェアと状況によって異なります。

  • セクターを読み取ることができ、ECCの問題がない場合、OSに渡されます。
  • セクターを簡単に修復できる場合、修復されたバージョンをディスクに書き込んで読み戻し、検証して、エラーがランダムなもの(宇宙線など)であるかどうか、またはメディアに系統的なエラーがあるかどうかを判断できます。
  • ドライブは、メディアにエラーがあると判断した場合、セクターを再割り当てします
  • 数回の読み取り試行後にセクターの読み取りも修正もできない場合RAIDドライブとして指定されたドライブ上、ドライブはあきらめ、セクターを再割り当てし、コントローラーに問題があったことを通知します。 RAIDコントローラーを使用して他のRAIDメンバーからセクターを再構築し、故障したドライブに書き戻します。これにより、問題が発生しないと考えられる再割り当てされたセクターに保存されます。
  • デスクトップドライブでセクターを読み取ったり修正したりできない場合、ドライブはそれを読み取るためにさらに多くの試行を行います。ドライブの品質に応じて、これには、ヘッドの再配置、繰り返し読み取られるときに反転するビットがあるかどうかの確認、どのビットが最も弱いかなどの確認が含まれます。これらの試みのいずれかが成功した場合、ドライブはセクターを再割り当てし、修復されたデータを書き戻します。

(これは、「デスクトップ」、「NAS/RAID」、または「ビデオ監視」ドライブとして販売されているドライブ間の主な違いの1つです。RAIDドライブは、すばやくあきらめて、コントローラにセクタを修復させて、ユーザー側。ユーザーが数秒待つことは、データが失われたことを伝えるよりもおそらく良いので、デスクトップドライブは何度も再試行します。また、ビデオドライブは、通常、破損したフレームが勝つため、エラー回復よりも一定のデータレートを重視します。気づかれることもない。)

とにかく、ドライブはビットの腐敗があったかどうかを認識し、通常はそれから回復します。回復できない場合は、コントローラーに通知し、ドライバーはOSに通知します。次に、このエラーをユーザーに提示して対処するのはOSです。これがサイバーナードが言う理由です

私自身、シングルビットエラーを目にしたことはありませんが、セクター全体が故障したハードドライブをたくさん見ました。

ドライブはセクターに問題があることを認識しますが、どのビットが失敗したかは認識しません。 (失敗した1つの単一ビットは常にECCによってキャッチされます)。

Chkdsk、およびファイルシステムの自動修復は、データの修復withinファイルには対応しないことに注意してください。これらは、ファイルシステムの構造の破損を対象としています。ファイルサイズがディレクトリエントリと割り当てられたブロックの数の間で異なるように。 NTFSの自己修復機能は、構造的な損傷を検出し、それらがデータにさらに影響を与えるのを防ぎます。すでに損傷しているデータは修復されません。

もちろん、データが破損する理由は他にもあります。例えば。不良RAMは、ドライブに送信される前にデータを変更する可能性があります。その場合、ドライブのメカニズムはデータを検出または修復しません。これが、構造がファイルシステムの破損。その他の理由には、明白なソフトウェアのバグ、ディスク書き込み中のブラックアウト(これはファイルシステムのジャーナリングで対処されます)、または不正なファイルシステムドライバー(LinuxのNTFSドライバーは長い間読み取り専用にデフォルト設定されているため、NTFSとしてドキュメント化されておらず、開発者は自分のコードを信頼していませんでした)。

私はこのシナリオをかつて持っていました。アプリケーションがすべてのファイルを2つの異なるサーバーの異なるデータセンターに保存し、すべての状況下でデータがある場合に作業コピーを保持します。数か月後、コピーの1つで、すべてのファイルの約0.1%が、アプリケーションがデータベースに保存したMD5の合計と一致しないことがわかりました。サーバーとSAN間のファイバーケーブルに障害があることが判明しました。

これらの他の理由は、ZFSなどの一部のファイルシステムがエラーを検出するために追加のチェックサム情報を保持する理由です。それらは、単に腐敗するだけでなく、失敗する可能性のある多くのことからあなたを保護するように設計されています。

はい、ハードドライブは劣化する可能性があり、OSからの警告なしに劣化します。これはbit rotと呼ばれます。私自身、シングルビットエラーを目にしたことはありませんが、セクター全体が故障したハードドライブをたくさん見ました。

Windowsには、NTFSファイルシステムの構造を超えるファイル内容の組み込み保護機能はありません。 NTFSを本として考えてください。まあ、それは目次を保護し、物事が一致することを確認するだけです。ただし、損傷がページの中央にある場合、保護は提供されません。 FATには何もありません。ハードドライブはセクター単位でECCエラー訂正を採用していますが、ドライブはWindowsに通知しません。一部のファイルタイプは、破損を検出するためにCRC、MD5、またはSHAハッシュを明確に備えていますが、何もfixしません。

それでも、ハッシュは問題があることを通知するだけですが、エラーの場所がわかりません。

ハードドライブはハードドライブの状態を監視するSMARTを備えていますが、ドライブが死の扉にある場合を除き、BIOSは警告しません。最悪の場合、SMARTは多くの場合、BIOSでデフォルトで無効になっています。ソフトウェアを介して数値を監視できますが、ドライブによって問題が異なります。再配置されたセクターがたくさんある場合、またはECCエラーが常に発生する場合。毎日100,000の新しいECCがある場合、それは悪い兆候です。

多くのファイルタイプには、bit rotに対する保護がありません。 TXTやBMPなど、まったく保護されていません。 Winrarには、ファイルを大きくするアーカイブにパリティデータを追加するオプションのオプションがありますが、(追加されたパリティデータの量に比例して)この種類のエラーを検出して修復できます。

私が知っている他のすべての圧縮プログラムはエラーを検出しますが、それについて何もすることができません。

最終的に、セクターのエラーは不良ECCで訂正できないため、ドライブはそれが間違っていても読み取ったものを提供します。

QuickParなどを使用してパリティデータファイルを作成できますが、私の知る限り、自動化する方法はありません。たとえば、手動でパリティを更新する必要がある場合、実際にファイルを自分で変更します。ファイルのグループのパリティデータを使用することもできますが、1つのファイルを変更し、パリティセット全体を再作成する必要があります。これはすべての人にとって本当の頭痛の種ですが、少数のファイルです。

17
cybernard

はい、可能です。 Windowsは単なるソフトウェアです。ソフトウェアは、コンピュータが従う一連の指示です。

一連の指示の別のタイプ、本について考えてください。棚に置かれた本で書かれていて、だれもその本を開いてそれらの指示を読んだりする必要がない場合、それらの指示は何を達成できますか?

これらの書かれた指示が人に指示を読んで指示に従い始めることを要求するのと同じように、コンピューターソフトウェアは何かが役立つためにハードウェアを必要とします。本に非常に正確に書かれた指示があったとしても、その指示を読んだとしてもそれを間違って実行しようとする人が決定した場合、それは問題を防ぎません。同様に、ソフトウェアはハードウェアが悪いことをするのを防ぐことはできません。したがって、壊れたハードウェアは、Microsoft Windowsを含め、ソフトウェアのどの部分でも物理的に勝つことができます。

現在、ReFSは、ソフトウェアがデータに関する詳細を保存し、ソフトウェアがそれらの詳細を後で比較できるように設計されている場合があります。単純な概念は「チェックサム」であり、ソフトウェアは特定の値を追加し、それらの値が期待される結果と一致することを確認します。ハードウェアがそのソフトウェアを実装すると、特定の悪い結果が検出される可能性があります。これは動作する可能性が非常に高い場合もあります。ただし、理論的に存在する可能性のある潜在的な問題の数は基本的に無限数であるため、ソフトウェアが必ずしもすべての問題を検出できるとは限りません。 (ソフトウェアは事前に作成された一連の命令であることを覚えておいてください。)

FATは特に機能が少ない。 FAT12はフロッピーディスク用に設計され、FAT16は最大4GBのシステム用に設計されました(ただし、MicrosoftのFAT16の実装のほとんどは2GBを超えると機能しない傾向がありました)。 VFAT拡張子がない場合、どちらも11文字を超えるファイル名をサポートしていませんでした(一部は「拡張子」と呼ばれる部分にあります)。 FATは、データを保存する機能が、大人に教える必要のある新しい概念であったときに、データを保存するように単純に設計されました。 FATが「最先端」のテクノロジーと見なされたとき、コンピュータテクノロジーはまだ普及しておらず、人々が高度な機能について心配するのに精巧ではありませんでした。

NTFSはいくつかの機能のサポートを追加しました。おそらく最も顕著なのは、オペレーティングシステムがユーザーのアクセス許可を簡単に追跡できるようにすることです。 NTFSにはさまざまなバージョンがあります。たとえば、Moabは、Windows Server 2008が self-healing NTFS のサポートを追加したことを指摘します。それでも、その機能はWindows Server 2008の新機能であるため、Windows XP(またはWindows Server 2003以前)ではサポートされていません。それでも、これは、オペレーティングシステムがディスクをマウントできないほど深刻な問題、またはオペレーティングシステムのカーネルに影響を与えるディスクの他の重要な領域に気付くのに役立ついくつかのメタデータを含んでいるようです。すべてのファイル内のデータの割合は、この特定の機能の影響を受けます。

そのようなオペレーティングシステム用のソフトウェアは、オペレーティングシステムがタスクを実行するための顕著な問題を引き起こさない限り、そのようなことに気付くことはほとんどありません。ディスクをチェックするオペレーティングシステムの部分(オペレーティングシステムによってはCheckDsk/ChkDsk/ScanDisk/ScanDskW)のようないくつかの例外があるかもしれませんが、主にファイルシステムがディスクチェックに役立つことを目的とした大量のデータを保存しないでください。

(RAID5はそのようなものを検出する傾向があります。すべてのビットに異常を通知するのに役立つパリティビットがあります。それでも、問題を通知するためにチェックを実行するのはRAID実装次第です。問題が発生した場合アクティブに処理されていないディスクの一部である場合、問題は、誰かがそのデータの使用を開始するまで気付かれない可能性があります。)

最近では、ビット数が多いほど、「1000万分の1」のような小さな可能性が影響を与える可能性が高くなりました。一般の人々は、「宇宙線」についても知っています。これは、物事に小さな影響を与える可能性があります。新しいデバイスではビットがぎゅっと詰め込まれているため、ビットを表すための物理的要件は小さくなり、小さな影響でもビットの認識方法が混乱する可能性が高くなります。 ReFSには、それらの検出を支援するように設計されたいくつかの機能があります。 WikipediaのReFSに関する記事 は、これを「自動整合性チェック」と呼んでいます。このファイルシステムの注目すべき機能として説明されているように、このような機能はNTFSよりも開発されている可能性があります(確かにFATよりもはるかにシンプルで、事実上そのような機能はありませんでした)。

2
TOOGAM