ローリングチェックサムはNASの増分バックアップをどのようにサポートするのか?

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

ローリングチェックサムは、挿入によって後続の固定オフセットがすべてずれた場合でも、変更されていないバイト領域を見つけることで、NASの増分バックアップを支援します。

ホームサーバーに保存された数ギガバイトのディスクイメージの先頭付近に、1つの段落を追加するとします。絶対オフセットだけに基づくブロック比較では、残りの部分まで変更されたように見えることがあります。ローリングチェックサムは新しいファイル上を低コストでスライドし、以前のNASコピーと一致する領域を特定します。これにより、検証済みの一致がない内容だけをリテラルデータとしてバックアップに送信できます。

宛先は完全なデータではなくブロックシグネチャを公開する

古いNASコピーはブロックに分割され、各ブロックに高速な弱いチェックサムと強力なコンテンツハッシュが割り当てられます。比較前に送信元へ渡す必要があるのは、これらのコンパクトなシグネチャだけです。これにより、宛先ファイルを2回転送する必要がなくなります。

元の2つのチェックサムによるブロックシグネチャでは、この2種類のシグネチャの交換と、重複しない宛先ブロックへの分割について説明しています。弱い値は高速な検索テーブルを作成し、強い値は候補が見つかった際にバイトを再利用してよいかを確認します。

シグネチャの通信量は通常、ファイルの通信量よりはるかに少なくなりますが、ブロック数に応じて増加します。非常に小さいブロックは一致精度を高める一方で、シグネチャのメモリ使用量、メタデータ交換量、検索処理を増加させます。この違いは、後の家庭環境でのテストでも確認できます。

ローリング更新によってずれた一致を低コストで見つける

ブロック長のウィンドウでは、次のバイト位置のチェックサムを、ウィンドウから出るバイトを取り除き、入ってくるバイトを追加することで導き出せます。そのため送信元は、重なり合う各ウィンドウを最初からハッシュ計算せずに、すべてのオフセットを検査できます。

実用的なローリングチェックサムの一致に関する解説では、強いハッシュを計算する前に、高速なローリング値で一致しない候補の大半を除外する方法を示しています。この段階的な比較により、すべてのバイト位置を高コストな暗号処理にかけることなく、ずれた領域を発見できます。

両方のチェックに合格すると、送信元は既存の宛先ブロックへの参照を出力します。合格しない場合は、検証済みの別の領域が始まるまで、新しいリテラルバイトを蓄積します。自動化を進める前に、中間結果を検査できる状態にしておく必要があります。

ブロックサイズとバイトの安定性が節約量の上限を決める

大きなブロックはシグネチャのオーバーヘッドを減らしますが、小さな編集によってより多くのバイトが変更された扱いになります。小さなブロックは再利用できる範囲を見つけやすくする一方で、CPUとメタデータの使用量を増やします。圧縮ファイルや暗号化ファイルでは、小さな編集の後に大きく変化することがあり、安定した領域がほとんど残らない場合もあります。

ずれたブロックの一致に関するエンドツーエンドの分析では、内容が認識可能なまま残っている場合、挿入によって後続のすべてのブロックを再送する必要がない理由を説明しています。また、弱い検索用チェックサムと、衝突による誤った再利用を防ぐ強い検証用ハッシュの違いも示しています。

この仕組みの限界は、バックアップ前にデータが変換される場合に現れます。ノンスが変化するクライアント側暗号化、再圧縮、コンテナの書き換えなどでは、大半のバイトが置き換わる可能性があります。そのため、ローリング検出でも、バイトストリームに残っていない意味的な類似性を復元することはできません。

制御したファイル編集で差分転送の効率をベンチマークする

追記、ファイル先頭付近への挿入、散在する編集、再圧縮、再暗号化を表すコピーを作成します。ファイルサイズ、シグネチャのバイト数、一致したブロック数、リテラルバイト数、双方で読み取ったバイト数、CPU時間、経過時間、最終的な強いハッシュの結果を記録します。

結果をバックアップのチェックサム整合性と関連付けたうえで、ネットワーク、ストレージキャッシュ、送信元のバージョンを固定し、ブロックサイズを変えて測定します。転送量の削減と、追加で発生するNASの読み取りおよびチェックサム処理を比較します。この境界は、現実的な運用条件の下で個別に測定する必要があります。

ネットワークコストがスキャンコストを上回る場合は、大容量でほとんど安定しているファイルにローリング転送を使用します。変換によってブロックの再利用性が失われる場合や、両方のバージョンを読み取るコストがファイル送信を上回る場合は、ファイル全体の転送またはスナップショットレプリケーションに切り替えます。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.