通常、バックアップチャンクを小さくすると重複排除による削減効果が高まり、大きくするとメタデータを減らせるうえ、復元時の読み取りをよりシーケンシャルで予測しやすくできます。
仮想マシンイメージ、家族写真、頻繁に編集するドキュメントを1つのディスクアレイにバックアップするホームサーバーを考えてみましょう。各ストリームを小さな断片に分割すれば、より多くの重複領域を見つけられますが、ハッシュ、インデックスエントリ、復旧時の分散読み取りも増加します。大きなチャンクは再構築を簡単にする一方で、小さな類似部分を見逃します。そのため、最適なサイズは一律のストレージ削減目標ではなく、データのパターンと復元経路に応じて決まります。
チャンクサイズが重複検出の粒度を決める
重複排除バックアップでは、チャンクを1回だけ保存し、後続のコピーを同じフィンガープリントへの参照に置き換えます。非常に大きな固定チャンクの内部で小さな編集が行われると、チャンク全体が新しいものとして扱われる場合があります。チャンクを小さくすると変更部分を分離できるため、変更されていない周辺部分を以前のバックアップと照合でき、再保存する代わりに参照できるデータ量が増えます。
一般に、小さなチャンクほどデータを細かい粒度で比較できるため、重複排除の効果が高くなります。この関係はチャンクベースのファイルバックアップで測定されています。この仕組みは魔法のような圧縮ではありません。境界が増えるたびに、特にバージョン管理されたドキュメント、VMイメージ、内部に小さな変更があるソフトウェアアーカイブで、繰り返し現れるバイト列を分離できる可能性が高まります。
ただし、この効果には逓減があります。同じ論理データ量で平均チャンクサイズを半分にすると、チャンクレコード数はおよそ2倍になり、フィンガープリントの計算、インデックスメモリ、マニフェスト、検索処理が増加します。データセットに再利用可能な部分領域がある場合にのみ、チャンク数の増加によって容量を節約できます。すでに圧縮された写真や暗号化アーカイブでは、追加のメタデータに見合う重複がほとんど得られないこともあります。
コンテンツ定義境界はバイトのずれによる削減効果の低下を防ぐ
固定サイズのチャンク分割ではバイトオフセットで切り分けるため、ファイルの先頭付近に数バイト挿入されると、それ以降のすべての境界がずれ、実質的には同じファイルでも全体が新しいものに見える場合があります。コンテンツ定義チャンク分割では、バイトストリーム自体から境界を選びます。局所的な挿入があっても、その後の特徴点が再び揃うことで、続くコンテンツを以前に保存したチャンクと一致させられます。
コンテンツ定義チャンク分割は境界のずれという問題に対処しますが、境界を見つけるためのCPU時間は必要です。多くのCDCシステムで「8 MBチャンク」と表現されるのは、同一サイズの断片ではなく、平均的な目標値です。最小、平均、最大の制限が一致確率と処理オーバーヘッドの両方を左右し、選択したアルゴリズムによって境界検出に必要な計算量も変わります。
したがって、チャンク分割方式は公称サイズと同じくらい重要になる場合があります。中程度のサイズのCDCストリームは、挿入後に小さな固定チャンクでは失われる類似性を維持しながら、レコード数を少なくできることがあります。ただし、CDCによってエントロピーの高いデータや暗号化データの重複排除がうまくいくわけではありません。暗号文の1ブロックを変更すると広い範囲が変化することがあり、圧縮はバックアップエンジンが認識する前に繰り返しパターンを意図的に除去するためです。
復元速度はチャンク数だけでなく局所性に左右される
復元では、ファイルを再構築するために必要な順序で参照チャンクを読み取ります。それらのチャンクが多数のコンテナやディスクに分散して格納されていると、長いシーケンシャル転送ではなく、小さなランダム読み取りが発生する可能性があります。小さなチャンクは参照数を増やしますが、本当の速度低下は、物理的な配置が復元順序から外れ、キャッシュミスによって同じコンテナを繰り返し取得するときに起こります。
リポジトリの運用期間が長くなると、断片化によって復旧スループットが大幅に低下することがあります。これは重複排除された復元速度の測定でも示されています。対策として、重複排除率を多少犠牲にしたり、復元時の局所性を高めるための組み立て処理を追加したりできます。これはチャンクの粒度と配置が別の要素であることを示しています。チャンク数が近い2つのリポジトリでも、一方が関連チャンクをまとめて配置していれば、復元速度は大きく異なる可能性があります。
一般に、大きなチャンクは、1つの参照でより多くの連続した有用データを取得でき、マニフェスト内のオブジェクト数も少なくなるため、局所性の向上に役立ちます。ただし、大きければ自動的に高速になるわけではありません。小さなファイルや範囲だけを復元する場合、大きな圧縮コンテナによって読み取り増幅が発生する可能性があります。高速なSSDでは、シーク時間よりも解凍やハッシュ計算のほうが重要になることもあります。復旧性能は、検索、読み取り、検証、解凍、書き込みからなるパイプライン全体で決まります。
インデックスとキャッシュの負荷が隠れた中間点を生む
小さなチャンクでは、より大きなフィンガープリントインデックスが必要になり、性能に余裕のないホームサーバーではストレージへあふれ出す可能性があります。インデックスが想定したキャッシュに収まらなくなると、バックアップの取り込みや復元時の検索がファイルデータとI/Oを奪い合います。大きなチャンクはインデックスを小さくできますが、照合の機会を減らします。その結果、メタデータを常にキャッシュへ保持しながら、一般的な重複領域を失わない中間的な範囲が生まれます。
ベクトル化CDCは、ほとんどの容量削減効果を維持しながらチャンク分割スループットを大幅に向上させられます。この結果は、ホーム環境でのテストで見落とされがちな固定条件、つまりアルゴリズムの実装が重要であることを示しています。チャンクサイズとチャンク分割器を同時に変更すると、境界検出の高速化によって細かい粒度に伴うCPUコストが隠れてしまい、明確な結論を出せません。
コンテンツハッシュは、バックアップストレージ以外にも価値があります。ZimaSpaceのコンテンツハッシュに関するガイドでは、変更されていないRAG素材をスキップするために同じフィンガープリントの原理を利用しています。どちらの処理でも、メタデータの保存と検索にかかるコストは、それによって回避できる処理より低くなければなりません。そうでなければ、細かな追跡は削減ではなくオーバーヘッドになります。
復元を優先したテストマトリクスでチャンクサイズを評価する
代表的なデータセットを、バージョン管理されたドキュメントまたはVMイメージ、圧縮メディア、多数の小さなファイルという3つのクラスで構成します。圧縮、暗号化、リポジトリの経過期間、ストレージハードウェア、同時実行数を一定に保ったまま、少なくとも3つのチャンクプロファイルを実行します。表示される重複排除率だけで判断せず、実際に書き込まれた物理バイト数、チャンク数、インデックスのピークメモリ使用量、バックアップスループット、完全復元のスループットを記録してください。
復元性能は、最大の重複排除率が最適だと仮定せず、主要な評価結果として扱う必要があります。断片化を考慮した冗長性排除では、復旧時の動作を分析するためにチャンク配置の情報を利用します。数か月にわたるバックアップ間の参照によって実際の復元ペナルティが現れるため、新しいリポジトリではシーケンシャルに見えても、複数世代の増分バックアップ後にホーム環境でのテストを繰り返してください。
復元時間が復旧目標の範囲内に収まり、最悪の実行時にもインデックスがメモリに十分余裕を持って収まる中で、最も小さいプロファイルを選択します。2つのプロファイルがその条件を満たす場合は、チャンク数が少なく運用が簡単なほうを優先してください。リポジトリの暗号化、パックサイズ、ディスクの種類、ワークロードの構成を変更した後は再テストしましょう。平均チャンクサイズは調整可能な変数であり、バックアップ品質を恒久的に示す指標ではありません。
| 指標 | 重要な理由 | プロファイルを却下する条件 |
|---|---|---|
| 物理バイト数 | 実際の削減効果を測定する | 削減効果がわずかである |
| チャンク数 | メタデータ負荷を予測する | インデックスがメモリ予算を超える |
| 完全復元MB/s | 復旧目標を検証する | 復元が期限に間に合わない |
| リポジトリの経過期間 | 断片化を明らかにする | 世代を重ねると性能が急落する |
テック&AIハブ
もっと読む

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

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

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

