データ破損
データ破損とは、書き込み、読み取り、保存、送信、または処理中に発生するコンピューターデータのエラーのことで、元のデータに意図しない変更が加えられます。コンピューター、伝送、およびストレージシステムは、エンドツーエンドのデータ整合性またはエラーの欠如を提供するために、多くの手段を使用します。
一般的に、データ破損が発生すると、そのデータを含むファイルは、システムまたは関連アプリケーションからアクセスされたときに予期しない結果を生成します。結果は、データの軽微な損失からシステムのクラッシュに至る可能性があります。たとえば、ドキュメントファイルが破損している場合、ユーザーがドキュメントエディターでそのファイルを開こうとすると、エラーメッセージが表示されるため、ファイルが開かないか、一部のデータが破損した状態で開くことがあります(または場合によっては、完全に破損しているため、ドキュメントが判読できません)。隣接するイメージは、ほとんどの情報が失われた破損したイメージファイルです。
一部の種類のマルウェアは、通常は動作しないコードまたはガベージコードで上書きすることにより、ペイロードの一部として意図的にファイルを破損する可能性がありますが、悪意のないウイルスは、アクセス時にファイルを意図せず破損する可能性もあります。このペイロード方式を使用したウイルスまたはトロイの木馬が、コンピューターのオペレーティングシステムソフトウェアまたは物理ハードウェアの実行に重要なファイルを変更した場合、システム全体が使用できなくなる可能性があります。
一部のプログラムは(エラーの後)ファイルを自動的に修復するよう提案できますが、一部のプログラムは修復できません。破損のレベルと、エラーを処理するアプリケーションの組み込み機能に依存します。破損にはさまざまな原因があります。
概要
コンピューターシステムに関連するデータ破損には、未検出と検出の2種類があります。 サイレントデータ破損とも呼ばれる検出されないデータ破損は、データが正しくないことを示すものがないため、最も危険なエラーになります。検出されたデータの破損は、データが失われても永続的な場合もあれば、システムの一部がエラーを検出して修正できる場合に一時的な場合もあります。後者の場合、データの破損はありません。
データ破損は、ホストからストレージメディアまで、システム内のどのレベルでも発生する可能性があります。最新のシステムは、多くのレイヤーで破損を検出し、破損を回復または修正しようとします。これはほとんど常に成功しますが、システムメモリに到着する情報が破損して、予測できない結果を引き起こすことは非常にまれです。
送信中のデータ破損にはさまざまな原因があります。データ送信の中断は情報の損失を引き起こします。環境条件は、特に無線伝送方法を扱う場合に、データ伝送を妨げる可能性があります。重い雲は衛星通信をブロックする可能性があります。ワイヤレスネットワークは、電子レンジなどのデバイスからの干渉を受けやすくなっています。
ハードウェアとソフトウェアの障害は、データ損失の2つの主な原因です。バックグラウンド放射、ヘッドクラッシュ、ストレージデバイスの経年劣化または摩耗は前者のカテゴリに分類されますが、通常、ソフトウェアの障害はコードのバグが原因で発生します。宇宙線は、DRAMのほとんどのソフトエラーを引き起こします。
サイレント
一部のエラーは、ディスクファームウェアまたはホストオペレーティングシステムによって検出されることなく、気付かれることはありません。これらのエラーは、 サイレントデータ破損として知られています 。
ディスクストレージサブシステム自体以外にも多くのエラーソースがあります。たとえば、ケーブルがわずかに緩んでいる、電源が信頼できない、大きな音などの外部振動、ネットワークが検出されない破損、宇宙放射線、およびソフトメモリエラーのその他の多くの原因などを引き起こす可能性があります。分析すると、ファームウェアのバグがストレージ障害の5〜10%を占めました。全体として、サイレント破損に関するCERNの調査で観察されたエラー率は、1016ビットごとのエラー率よりはるかに高いです。 Webshop Amazon.comは、システムでの同様の高いデータ破損率を認めています。
1つの問題は、ハードディスクドライブの容量が大幅に増加したが、エラー率が変わらないことです。データ破損率は常にほぼ一定でした。つまり、最新のディスクは古いディスクほど安全ではありません。古いディスクでは、データがわずかな量しか保存されていなかったため、データ破損の可能性は非常に少なかった。最新のディスクでは、安全性は低くなりますが、より多くのデータを保存するため、確率ははるかに大きくなります。こうすることで、ストレージデバイスが比較的小さく低速である一方で、サイレントデータの破損は深刻な問題になりません。そのため、小さなディスクのユーザーがサイレント破損に直面することはほとんどなかったため、データ破損はソリューションを必要とする問題とは見なされませんでした。しかし現代では、より大きなドライブと非常に高速なRAIDセットアップの出現により、ユーザーはかなり短い時間で1016ビットを転送できるため、データ破損のしきい値に簡単に到達できます。
例として、ZFSの作成者であるジェフ・ボンウィックは、大規模なデータウェアハウジングと分析を専門とするデータベースソフトウェア会社であるGreenplumの高速データベースは15分ごとに静かな破損に直面していると述べました。別の例として、41か月にわたって150万台を超えるHDDでNetAppが実施した実際の研究では、40万件を超えるサイレントデータ破損が見つかり、そのうち30,000件以上はハードウェアRAIDコントローラーによって検出されませんでした。 CERNが6か月にわたって行った約97ペタバイトのデータを含む別の調査では、約128メガバイトのデータが完全に破損していることがわかりました。
サイレントデータの破損は連鎖障害を引き起こす可能性があり、システムが一定期間実行されると、未検出の初期エラーが発生し、最終的に検出されるまでより多くの問題が発生します。たとえば、ファイルシステムのメタデータに影響する障害は、ファイルシステムが破損した状態で使用されているため、複数のファイルが部分的に破損したり、完全にアクセスできなくなったりする可能性があります。
対策
データ破損がポアソンプロセスとして動作する場合、データの各ビットが独立して変更される可能性が低いため、データ破損は一般にチェックサムを使用して検出でき、多くの場合、エラー修正コードを使用して修正できます。
修正不可能なデータ破損が検出された場合、自動再送信やバックアップからの復元などの手順を適用できます。特定のレベルのRAIDディスクアレイには、ハードディスクセット全体のデータのパリティビットを保存および評価する機能があり、実装されているRAIDのレベルに応じて、単一または複数のディスクの障害時に破損データを再構築できます。一部のCPUアーキテクチャでは、さまざまな透過的なチェックを使用して、CPUキャッシュ、CPUバッファー、および命令パイプラインのデータ破損を検出および軽減します。例は、Intel Itaniumプロセッサで利用可能なIntel Instruction Replayテクノロジーです。
多くのエラーは、各セクタのディスクに保存されているECC / CRCコードを使用して、ハードディスクドライブによって検出および修正されます。ディスクドライブがセクターで複数の読み取りエラーを検出した場合、オペレーティングシステムの関与なしでディスクの障害のあるセクターをスペアセクターに再マッピングすることにより、ディスクの別の部分で障害のあるセクターのコピーを作成できます(ただし、セクターへの次の書き込みまで遅延される)。この「サイレント修正」は、SMARTおよびほとんどのオペレーティングシステムで使用可能なツールを使用して監視し、SMARTパラメータの劣化を監視することで、差し迫った障害がないかディスクドライブを自動的にチェックします。
Btrfs、HAMMER、ReFS、ZFSなどの一部のファイルシステムは、内部データとメタデータチェックサムを使用して、サイレントデータ破損を検出します。さらに、破損が検出され、ファイルシステムがデータの冗長性を提供する統合RAIDメカニズムを使用している場合、そのようなファイルシステムは破損したデータを透過的に再構築することもできます。このアプローチにより、ストレージスタック内の異なるレイヤーにまたがらず、データ破損が発生する可能性がある他のデータ整合性アプローチと比較して、通常、 エンドツーエンドデータ保護と呼ばれるデータパス全体をカバーする改善されたデータ整合性保護が可能になりますデータは異なるレイヤー間の境界を通過します。
データスクラビングは、複数のエラーが蓄積されてパリティビットの数を圧倒する前にディスクエラーが検出されて回復されるため、データ破損の可能性を減らすもう1つの方法です。読み取りごとにパリティがチェックされる代わりに、ディスクの定期スキャン中にパリティがチェックされます。これは、多くの場合、優先度の低いバックグラウンドプロセスとして実行されます。 「データスクラブ」操作はパリティチェックをアクティブにすることに注意してください。ユーザーがディスクからデータを読み取る通常のプログラムを実行するだけの場合、ディスクサブシステムでパリティチェックオンリードがサポートされ、有効にされていない限り、パリティはチェックされません。
適切なメカニズムを使用してデータ破損を検出および修復する場合、データの整合性を維持できます。これは、検出されないエラーがデータベースインデックスを破損したり、データを変更してアカウントの残高に大きく影響する可能性のある商用アプリケーション(銀行など)で特に重要です。データセットは使用できません。