データストアのミラーリングKPT風メモ
遠隔地にある4TBクラスのデータストアを、一般回線を用いてミラーリングしようと試みています。いったんスリッパオンラインでデータを移し、そこからの変更分はrsyncを用いて同期させていこうと思っていたのですが、データストア側で大規模なリネーム、ムーブが行われると、追従するために回線を圧迫してしまいます。
これはいけない。いけてない。
とりあえず、現状整理です。
KEEP
新規データの取得と既存データの管理:
rsyncにより差分をピンポイントで取得することが可能。既存のデータについても、データストア側で消去された部分については--deleteオプションで反映させることができます。
転送速度の管理:
rsyncの機能で転送の帯域幅を制限することができます。これによりISPからの制限を実行時に反映させることができます。
PROBLEM
改名、移動されたファイル、ディレクトリの扱い:
データストア側でファイル、ディレクトリが改名、移動された場合、rsyncではそれが削除&新規作成として認識されてしまい、新規作成分として大量のデータが転送にかけられてしまいます。
rsyncの帯域幅制限を使うにしても、モッタイナイことをしているのは確かなのでなんとかしたいところ。
TRY
データの改名、移動を認識したい:
gitやmercurialといったバージョン管理システムを利用して、データストア側の改名、移動をミラーリング側でもそれとして認識できるようにできるかどうか、調査・実験してみます。データストア側にバージョン管理ステムの導入をお願いすること自体は可能。
具体的には...データを持ったclとそのデータをバックアップしているsvを用意し、その間でgit/mercurialしてみます。clで数百GBのmvを実行してコミット、sv側でそれを反映する際にファイル転送が発生するか否かを見ます。
さて、ひとつやってみるといたしましょう。