私は毎晩、rsyncを使用して複数の仮想ディスクを1つのLinux Debianコンピューターから別のLinux Debianにコピーします。
ほとんどのファイルは「穴」が開いた未加工の画像です。一部の部分は書き込まれなかったため、ディスク上に割り当てられていないままです。
rsyncは常に1つのファイルでハングします。ハングは、50 GBが転送された後、毎回発生します。これが常にまったく同じ時点にあるかどうかはわかりませんが、ls -sh
は50 GBを表示します。
これは、151 Gbを含む800 Gbファイルです(したがって、649 Gbは未割り当てです)。他のいくつかの仮想ディスクにも同様の数値があり、rsyncはそれらでうまく機能します。
Rsyncを使用してファイルをローカルで更新し、ネットワークに関与することなくまったく同じ動作をします(--no-whole-file
を使用すると、これは要件です。後で参照してください)。
Rsyncがストールすると、1つのCPUコアを100%使用し、受信側でディスクアクティビティをゼロにします(これはプルリクエストなので、rsyncはこの側から実行されます)、CPUとディスクを送信側で使用しません。
数時間実行しました。
Ctrl+c 直ちにrsyncを停止します。
ローカルでコピーするために実行した場合、停止すると、1つのCPUコアが100%になり、ディスクアクティビティがゼロになります。
私が見つけた唯一の例外は、このファイルを新しい場所にrsyncするときです(つまり、宛先ファイルが存在しません)。したがって、問題は古いデータと新しいデータの比較に関連していると思います。
スナップショットは各バックアップ後に使用されるため、--inplace
を使用して宛先ディスクへの書き込みを制限しています。したがって、このオプションは必須であり、rsyncも必要です。ただし、これらのファイルの変更された部分のみを更新できるツールを見つけた場合は除きます。
内部ハッシュバッファーのアルゴリズムが非効率的であるため、rsyncは巨大なファイルに対してこの種の問題を抱えていることが知られています。
大きな値を指定して--block-size
オプションを使用する必要があります。ただし、現在のバージョンでは128 kBを超える使用は許可されていません。一部のWebページでは--block-size=10485760 --protocol=29
を使用するように指示されていますが、私の場合、rsyncによって拒否されます。
Rsyncに対するバグレポートを見てください。多分新しいものを提出してください。それらは https://rsync.samba.org/bugzilla.html から見つけることができます
ここかバグレポートかに関係なく、より詳細な情報を提供する必要があります。両端にあるrsyncのバージョン、OS、および使用しているコマンドは何ですか?ファイルやrsync転送は圧縮されていますか? zlibのバージョンは何ですか?
https://bugzilla.samba.org/show_bug.cgi?id=10518 そして多分 https://bugzilla.samba.org/show_bug.cgi?id=10372 関連があるかもしれません。 http://www.anchor.com.au/blog/2013/08/out-tridging-tridge/ も参照してください