私は、KVMを使用してあるホストから別のホストに仮想マシンをリアルタイムで移行しています。これを行うためにWeb UIを作成しました。今進行状況バーを実装したいと思います。
私の考えは、移行中にソースとターゲットのディスクファイルサイズを比較することです。
サーバー1:
ls -ls /data/file.raw
858963 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw
サーバー2:
ls -ls /data/file.raw
698543 -rw------- 1 root root 21474836480 Dec 15 13:39 file.raw
割り当てられた値を取得し、パーセンテージとして計算します。
100 / 858963 * 698543 = 81%
美しい。しかし、問題があります。
ディスクがまれではありません。ファイルの合計サイズはです1717926 blocks
。実際には858963 blocks
割り当てのみがあります。したがって、リアルタイム移行はまだファイルの空白部分をコピーしていますが、進行状況バーは100%に達しました。
du
とを使ってみましたstat
。
ディスク転送ファイルのサイズだけを取得する方法は?
答え1
すでに提案されているようにvirsh migrationを使用するか、次のrsyncのスパースファイルサポートを利用してくださいman rsync
。
-S, --sparse Try to handle sparse files efficiently so they take up less space on the destination.
進行状況と速度を確認するには、rsync -ahHS
追加してみてください。-P