# dsync: Efficient Block-wise Synchronization of Multi-Gigabyte Binary Data
**著者**: [[Thomas Knauth]]・[[Christof Fetzer]]([[TU Dresden]])
**会議**: LISA 13(27th Large Installation System Administration Conference)、2013-11-03–08、Washington D.C.
**ページ**: 45–58
**受賞**: Best Paper
## 問題設定
バックアップや定期的な状態同期はシステム管理者の必須タスクである。しかし rsync に代表される従来ツールは、今日の典型的なデータサイズである数百ギガバイト規模の同期において性能が著しく低下する。rsync の根本的な問題は「**事後的なチェックサム計算**」にある。変更を把握するためにファイル全体(あるいはブロック全体)のチェックサムを計算し直す必要があり、ディスク I/O・CPU 負荷ともに高くなる。
## 提案手法: dsync
dsync は**ブロックレベルの変更をオンラインで追跡**するアプローチを採る。変更後に検出するのではなく、書き込みが発生した瞬間にどのブロックが変更されたかを記録する。これにより:
- 同期時のチェックサム計算が不要になる
- 変更されたブロックのみを転送する効率的なデルタ同期(差分同期)が実現する
### 実装
ブロックレベルの変更追跡は **Linux カーネル 3.2.35 の拡張**として実装する。カーネル内部でブロックへの書き込みをフックし、ダーティビットマップを維持することで、ユーザー空間から変更済みブロックのリストを取得できる。
## 評価結果
| 比較軸 | rsync(チェックサムベース) | dsync(ブロック追跡) |
|---|---|---|
| 同期時間 | ベースライン | 最大 100 分の 1(2 桁高速) |
| ディスク I/O | 全ブロック読み取りが必要 | 変更ブロックのみ |
| キャッシュ汚染 | 大(全体スキャンでキャッシュ置換) | 小 |
| CPU 使用率 | チェックサム計算で高 | 低 |
合成ワークロードと実ワークロードの両方でベンチマークを実施し、有効性を実証した。
## 関連概念との接続
- [[ファイルレベル同期]]: rsync 系のファイルレベル同期に対して、dsync はより粒度の細かいブロックレベルで同期を行う上位互換的アプローチ。`[[ファイルレベル同期]]` の「差分同期」を実現する具体的な実装技術の一例。
- [[ブロックレベル差分同期]]: dsync が体現するコア概念。
## 意義
- LISA13 Best Paper 受賞。システム管理の実務的問題(バックアップ性能)をカーネルレベルの変更追跡で解決した実装指向の研究。
- 学術貢献としては「カーネルで追跡 → ユーザー空間で差分同期」という設計パターンを実証したこと。
- 実運用への示唆: データが大きくなるほど rsync の相対的コストは増大し、カーネル協調型の追跡機構が有効になる。
## 出典
- 原本: `.raw/articles/knauth-2026-06-30.md`
- USENIX: https://www.usenix.org/conference/lisa13/technical-sessions/presentation/knauth
- PDF: https://www.usenix.org/system/files/lisa13-knauth_1.pdf