ちょっと色々と試してみたので、公開。
うちのシステムは、RedHat4系とCentOS5系を使ってます。
なので、rsyncのバージョンは2系です。
rsyncの2系の挙動を見てると、差分チェックの為に、まず全ファイルをリストアップします。
その後、ファイル転送が始まります。
リストはメモリに保持されてるようです。
1000万以上のファイルがあったので、1GBくらいメモリを掴んでしまう。
ファイル転送中もこれはつかみっぱなし。
まぁ、1000万以上のファイルがあるって時点で当たり前だけどw
そこで、rsync3の登場!
こいつは、リストアップしながら転送してくれる。
なので、メモリ使用率は圧倒的に少ない。(topで見てたんだけど使用率は0%のまま)
その代わり、瞬間的にCPU使用率は上がってた気がする。
でも、これはマルチコアCPUなら問題ない。
で、まずは全ファイル転送を計測してみたら、rsync3系の実行時間がrsync2系に比べて、14%程少なかった。
そして、少し差分が出た状態で再びrsync。(30万ファイルくらいの差分)
この差分転送にかかる時間は凄い差が出た。
rsync3系の実行時間がrsync2系に比べて50%!
というわけで、rsync3の導入決定!
でも、多分サービス止めてパーティションをddでごっそりコピーした方が早いと思う。
HDDならランダムアクセスよりシーケンシャルアクセスに限るよね。
でも、その手段が取れない場合は、rsync3を導入すると幸せになれますよ。
1000万ファイルのデータ移行について検討中。
今までは、rsync使ってました。
これで、データ移行しようとすると、
40時間くらいかかってしまうのですよ…。
(サービス停止せずにやっているので)
サービス停止しても、4時間くらいかかるんだろうなぁと思ってます。
なんかいい方法ないかな?
はてなのデータセンターお引越しとかは、パーティション毎ddしたって書いてあったけど、
ちょっと面倒な構成なので、ディスク外して新サーバに直結とかはできない…。
外付けHDDとかにddでコピーすればいいのかな?
tarは、サービス停止させても3時間くらいかかりそうであまり大差ない感じ。
妙案求ム!!

最新コメント