## 定義 ファイルレベル同期とは、パッケージマネージャーを介さずにマスターイメージのファイルシステムをサーバーフリート全体に直接同期することで、全サーバーの状態をゴールデンイメージと一致させるフリート管理手法である。rsync を原型とするが、大規模本番環境ではクライアントプル型のカスタム実装が一般的。ファイル変更後のシェルトリガー(デーモン再起動等)・I/O スロットリング・差分同期を組み合わせ、サービスへの影響を最小化しながら確実な状態収束を実現する。(Source: [[@2013__LISA__Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One]]) ## 利点と特性 - **べき等性**: いかなる破損状態からでも再同期で正常状態に回復できる。パッケージ DB 破損、部分適用失敗などの障害に耐性がある。 - **均一性の強制**: 全マシンを同一状態に保つ。異なる設定が混在することで生じるデバッグの複雑性を排除する。 - **パッケージマネージャー非依存**: rpm・dpkg のデータベース破損・設定ファイル競合・予期しないマシン状態による失敗を回避する。 - **差分レビュー可能性**: イメージを Perforce 等のバージョン管理システムにチェックインし、変更差分をレビューできる。 ## 制約と注意点 - マシン固有の設定ファイル(ネットワーク設定・ログファイル等)は同期対象から除外する必要がある。 - パッケージ postinstall スクリプトの多くが機能しないため、個別のトリガー機構が必要。 - SSH ホスト鍵のようにマシンごと一意であるべきファイルをゴールデンイメージに含められない。 - カスタム設定・カスタムパッケージは同期範囲外に配置するか、明示的に除外リストに入れる必要がある。 ## 横断的知見 - **ファイルレベル同期の根本的限界はチェックサム計算コスト**: rsync はファイル・ブロックのチェックサムを同期のたびに計算するため、データ量が増えるほど同期時間が線形に増大する。[[ブロックレベル差分同期]](dsync)はこれを回避するため最大 2 桁の高速化を達成した。(Source: [[@2013__LISA__Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One]], [[@2013__LISA__dsync - Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data]]) - **設計レベルの対比**: Marc Merlin(Google)の実装はファイルレベル同期でフリート管理を実現し、Knauth & Fetzer(TU Dresden)の dsync はブロックレベルで同期効率を解決した。同じ LISA 2013 年の 2 論文が「何を同期の単位とするか」という設計軸の両極を示している。(Source: 両論文) ## 未解決の問い - ファイルレベル同期と Infrastructure as Code(Ansible・Puppet・Chef 等)はどのように位置づけられ、どのような場合にどちらが適切か? - コンテナ化・不変インフラ(イミュータブルインフラ)との関係は? ファイルレベル同期は「事前コンテナ時代の不変インフラ」として見なせるか? - Google の独自実装に近い OSS 実装として何が存在するか?(Fabric・Salt・その他) - I/O スロットリングのアルゴリズム・パラメーター設定に関する定量的な知見はあるか? ## 関連 - [[@2013__LISA__Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One]] — Google でのファイルレベル同期実装の詳細 - [[@2013__LISA__dsync - Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data]] — rsync の限界を克服するブロックレベル同期の提案(対比論文) - [[ブロックレベル差分同期]] — ファイルレベル同期の対概念 - [[ライブアップグレード]] — ファイルレベル同期を基盤とした OS ライブアップグレード手法 - 関連 MOC: [[SRE - MOC]] ## 出典 - [[@2013__LISA__Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One]] - [[@2013__LISA__dsync - Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data]]