RAIDのパリティは、通常、現在のブロックが冗長性の方程式を満たしていることを証明するため、NASのデータが誤っていても数学的には有効なままでいられます。しかし、それらのブロックが歴史的に正しいファイル内容を含んでいることを証明するわけではありません。
破損したデータが通常のストレージ経路を通じて書き込まれた場合、RAID層はその破損データに対して一致するパリティを計算することがあります。ストライプは内部的には一貫していますが、ファイルは論理的に、あるいは静かに損傷している可能性があります。
RAIDパリティは実際に何を検証しているのか?
パリティはストライプ内のブロック間の関係です。単純化した単一パリティの例では、データブロックとパリティブロックはXOR方程式で結ばれています。もし1つのブロックが欠けていれば、他のブロックから再構築できます。
この方程式は狭い問いに答えます:現在のこれらのブロック値は期待されるパリティ関係に合っていますか?しかし、それが写真にユーザーが元々保存したピクセルが含まれているか、データベースページが最新のコミット済みトランザクションを反映しているか、マルウェアがファイルを意図的に変更したかどうかは答えません。
なぜ誤ったデータと正しいパリティが共存できるのか?
悪いメモリ経路、ソフトウェアの欠陥、アプリケーションのバグ、あるいは既に破損したソースがRAIDがパリティを計算する前に誤ったデータを生成したとします。ストレージスタックは誤ったデータを書き込み、その誤った値からパリティを更新します。両方の書き込みは完全に完了することがあります。
結果としてできたストライプはRAIDの観点からは一貫しています。後のパリティチェックで不一致は見つかりません。なぜなら方程式は依然として成り立っているからです。障害はパリティ層の上位で発生しているため、パリティは意図された内容の独立した記録を持ちません。
| 状態 | データブロック | パリティ | RAIDが見るもの |
|---|---|---|---|
| 正常な書き込み | 正しい | 一致する | 一貫している |
| 誤ったデータが通常通り書き込まれた | 誤っている | 誤ったデータに一致する | 一貫している |
| ライトホール | 新旧の値が混在 | 最終ストライプと一致しない | 不一致 |
| 潜在的セクターエラー | 1つのブロックが読み取り不能または変更されている | 再構築に役立つ場合がある | 残りの情報による |
なぜRAIDのライトホールは別の問題なのか?
ライトホールは、ストライプの更新がデータとパリティの変更の一部だけが安定したストレージに到達した後に中断された場合に発生します。その結果、ストライプは古い値と新しい値の混合を含むことがあります。これはパリティの不整合であり、「誤ったデータに一致するパリティ」とは異なります。
Linux MDの部分パリティログのドキュメントは、PPLがメインのストライプ更新前に部分パリティを記録することでRAID 5のライトホールを解決することを説明しています。また重要な境界として、パリティの一貫性を保護しても、すべての障害モードからユーザーデータの途中状態を自動的に保護するわけではないことを指摘しています。
LinuxデバイスマッパーRAIDのドキュメントで説明されているRAIDジャーナルは、同じ種類の非原子的なコンポーネント更新を解決します。中断された書き込み後もパリティ方程式の一貫性を保ちますが、アプリケーションが正しいバイトを提供したかどうかは判断できません。
エンドツーエンドの整合性は何が加わるのか?
エンドツーエンドのチェックサムは、データブロックやレコードに別の識別子を追加します。スクラブ処理はチェックサムを再計算し、保存された値と比較します。冗長コピーのうち1つが検証に失敗し、もう1つが成功した場合、どのコピーが信頼できるかの証拠になります。
Btrfsのスクラブドキュメントは、データとメタデータのチェックサムおよび読み取りエラーを検査し、検証済みのレプリカが利用可能な場合に修復する方法を説明しています。これはパリティだけに頼ってストライプ方程式の均衡を確認するのとは異なります。
チェックサムも信頼できる経路で保護・保存されなければなりません。内容とそのチェックサムが論理的に誤った新しいバージョンで一緒に上書きされた場合、システムはその誤ったバージョンを一貫して検証してしまいます。
RAIDはどこでまだ役立つのか?
パリティはドライブの故障や読み取り不能なブロックの回復に依然として有用です。欠損情報を再構築し、可用性を維持し、故障がRAIDモデル内にある場合に修復をサポートします。誤りはパリティにアプリケーションの正確さ、歴史的な真実、または同じストレージスタックからの独立性を証明させようとすることです。
この境界はホームNASデータ保護におけるRAIDの限界の一部です。RAID、チェックサム、スナップショット、バックアップは異なる問いに答え、それらを重ねて使うことでより強力になります。互換的に扱うべきではありません。
よくある質問
パリティチェックが成功したらすべてのファイルが正しいことを証明しますか?
いいえ。チェックされたストライプが現在のパリティ関係を満たしていることを証明しますが、ファイルが論理的に正しいか、悪意を持って変更されていないか、RAID層の上位で一貫して破損していないかは証明しません。
チェックサムは正しいコピーを特定できますか?
保存されたチェックサムと一致するコピーと一致しないコピーを区別できます。修復には有効な冗長コピーやバックアップが必要であり、チェックサムは書き込み後に正当にチェックサムが計算された悪いバージョンを検出できません。
RAIDジャーナリングはファイルシステムジャーナリングと同じですか?
いいえ。RAIDジャーナリングはアレイの更新の一貫性、特にデータとパリティの関係を保護します。ファイルシステムジャーナリングはメタデータ更新などのファイルシステムトランザクションの一貫性を保護します。
まとめ
有効なパリティは現在のストライプが数学的に自己一貫していることを意味しますが、バイトが意図されたものとは限りません。エンドツーエンドのチェックサム、トランザクションの意味論、スナップショット、独立したバックアップが、パリティでは答えられない広範な整合性と回復の問題に答えるために必要です。
テック&AIハブ
もっと読む

Home AssistantはLAN接続とリモート接続でなぜパフォーマンスが異なるのですか?
LAN接続とリモート接続のHome Assistantセッションではネットワーク経路が異なります。リモート接続では、DNS、暗号化、WAN、プロキシやVPN、再接続処理による遅延が加わります。

Home AssistantはCGNATや二重NAT環境でも安定して動作しますか?
CGNATと二重NATは通常、ローカルでのHome Assistantの制御には影響しません。主に、リモートクライアントがホームネットワークへのインバウンド経路を確立する方法が変わります。

インターネット障害中、ネットワーク遅延はHome Assistantにどのような影響を与えるか?
インターネット接続の喪失とネットワーク遅延は異なる障害です。DNS、クラウド連携、ゲートウェイ、リモートクライアントが待機している間も、ローカルデバイスへの経路は高速なまま維持されることがあります。

