web-dev-qa-db-ja.com

誰かがESXiのrsyncで真の差分同期を達成しましたか?

ESXiで何かをするためにサービスコンソールを使用しているという事実に後で私を怒らせてください...

ESXi 4.1U1で使用できるrsyncバイナリ(v3.0.4)が機能しています。 VMまたはバックアップを1つのローカルデータストアから別のローカルデータストアにコピーするときは、rsync over cpを使用する傾向があります。あるESXiボックスから別のESXiボックスにデータをコピーするのにrsyncを使用しましたが、それは小さなファイルの場合だけでした。

現在、プライマリESXiマシンとセカンダリESXiマシンの間で ghettoVCB を介して行われたバックアップの真の差分同期を実行しようとしています。しかし、これをローカル(同じESXiマシン上のあるデータストアから別のデータストアへ)で実行した場合でも、rsyncはファイル全体をコピーするように見えます。合計80 GBのサイズのVMDKが2つあります。rsyncは1〜2時間かかりますが、VMDKは毎日大きくなりません

以下は、私が実行しているrsyncコマンドです。最終的にこれらのファイルがリモートシステムのLUNから作成されたデータストアにコピーされるため、ローカルにコピーしています。これは、リモートシステム上のrsyncデーモンによって処理されるrsyncではありません。

rsync -avPSI VMBACKUP_2011-06-10_02-27-56/* VMBACKUP_2011-06-01_06-37-11/ --stats --itemize-changes --existing --modify-window=2 --no-whole-file
sending incremental file list
>f..t...... VM-flat.vmdk
 42949672960 100%   15.06MB/s    0:45:20 (xfer#1, to-check=5/6)
>f..t...... VM.vmdk
         556 100%    4.24kB/s    0:00:00 (xfer#2, to-check=4/6)
>f..t...... VM.vmx
        3327 100%   25.19kB/s    0:00:00 (xfer#3, to-check=3/6)
>f..t...... VM_1-flat.vmdk
 42949672960 100%   12.19MB/s    0:56:01 (xfer#4, to-check=2/6)
>f..t...... VM_1.vmdk
         558 100%    2.51kB/s    0:00:00 (xfer#5, to-check=1/6)
>f..t...... STATUS.ok
          30 100%    0.02kB/s    0:00:01 (xfer#6, to-check=0/6)

Number of files: 6
Number of files transferred: 6
Total file size: 85899350391 bytes
Total transferred file size: 85899350391 bytes
Literal data: 2429682778 bytes
Matched data: 83469667613 bytes
File list size: 129
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 2432530094
Total bytes received: 5243054

sent 2432530094 bytes  received 5243054 bytes  295648.92 bytes/sec
total size is 85899350391  speedup is 35.24

これは、ESXi自体がVMDKに多くの変更を加えているため、rsyncに関する限り、ファイル全体を再送信する必要があるためですか?

誰かが実際にESXiとの実際の差分同期を達成しましたか?

11
JuliusPIV

2 GBの増分変更のみを転送したようです。 rsyncは依然として1つのファイル全体とチェックサムを読み取る必要があるため、80GBのデータを読み取る必要があることに注意してください。 rsync中にサーバーの統計を確認します。 CPUまたはIO=操作中にバインドされますか?ディスクから80GBのファイルをどれだけ速く読み取ることができますか?これは、絶対最小転送時間に近くなります。

また、rsyncは転送中にファイルのコピーを作成し、最終的なファイルをアトミック操作で適切な場所に移動することにも注意してください。これは、宛先ディレクトリでの転送中にランダムなサフィックスが付いた同様のファイル名を確認することで確認できます。つまり、160GBのデータ(ソースと宛先ごとにそれぞれ80GB)を読み取り、宛先側で80GBを書き込む必要があります。 --inplaceオプションを見ましたか?ここで有益かもしれません。

要するに、変更は2GBしかないかもしれませんが、rsyncは多くの作業を行っています。おそらくIOバインドされています。同じディスクでの読み取りと書き込みのすべてが、多くの競合とスローダウンを引き起こす可能性があるためです。

6
bot403

このスレッドは非常に古いですが、誰かの助けになるかもしれません。

ESXは新しいブロックが書き込まれるたびにファイルシステムをロックするため、オプションを使用するとパフォーマンスはそれほど向上しません。ただし、より良い結果が得られる可能性がありますが、同期をキャンセルすると、ファイルの整合性が失われます。もっと。一貫性については、開いているファイルのrsyncが一貫していない可能性があります-> rsyncの前にスナップショットを使用することをお勧めします。

よろしくマルク

4
Nessi

見た目では、rsyncを使用してローカルからローカルへのコピーを行っています。その場合、rsyncのデフォルトの動作は、デルタ転送アルゴリズムをオフにし、「ファイル全体」の転送を行うことです。このデフォルトの動作の理論的根拠は、delta-xferアルゴリズムを使用したローカルからローカルへの転送は通常、単にファイル全体をコピーするよりも遅いということです。デルタアルゴリズムには、ファイル全体のコピーを行うよりもはるかに多くのCPU処理が含まれるためです。

ローカルからローカルへのコピーにdelta-xferアルゴリズムを使用するメリットがあると思われる場合は、--no-W(または--no-whole-file)オプションを指定して、rsyncに強制的に使用させることができます。 。

2
Steven Monday