Berate saya kemudian pada kenyataan bahwa saya menggunakan konsol layanan untuk melakukan apa pun di ESXi ...
Saya punya biner rsync yang berfungsi (v3.0.4) yang dapat saya gunakan di ESXi 4.1U1. Saya cenderung menggunakan rsync lebih dari cp ketika menyalin VM atau cadangan dari satu datastore lokal ke datastore lokal lainnya. Saya telah menggunakan rsync untuk menyalin data dari satu kotak ESXi ke kotak lain tapi itu hanya untuk file kecil.
Sekarang saya mencoba untuk melakukan sinkronisasi diferensial sejati dari backup yang diambil melalui ghettoVCB antara mesin ESXi utama saya dan yang sekunder. Tetapi bahkan ketika saya melakukan ini secara lokal (satu datastore ke datastore lain pada mesin ESXi yang sama) rsync tampaknya menyalin file secara keseluruhan. Aku punya dua VMDK ini benar-benar 80GB dalam ukuran, dan rsync masih membutuhkan manapun antara 1 dan 2 jam tapi VMDK ini tidak tumbuh yang banyak setiap hari.
Di bawah ini adalah perintah rsync yang saya jalankan. Saya menyalin secara lokal karena pada akhirnya file-file ini akan disalin ke datastore yang dibuat dari LUN pada sistem jarak jauh. Ini bukan rsync yang akan dilayani oleh daemon rsync pada sistem jarak jauh.
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
Apakah ini karena ESXi sendiri membuat begitu banyak perubahan pada VMDK sehingga sejauh menyangkut rsync seluruh file harus ditransmisikan ulang?
Adakah yang benar-benar mencapai sinkronisasi beda aktual dengan ESXi?
sumber
Jawaban:
Sepertinya Anda baru saja mentransfer perubahan tambahan sebesar 2GB. Ingatlah bahwa rsync masih harus membaca dalam satu file lengkap dan checksum sehingga harus membaca data 80GB. Periksa statistik server Anda selama rsync. Apakah Anda cpu atau IO terikat selama operasi? Seberapa cepat Anda bisa membaca file 80GB dari disk? Itu akan mendekati waktu transfer minimum absolut Anda.
Yang juga perlu diperhatikan adalah rsync membuat salinan file saat mentransfer kemudian memindahkan file terakhir ke tempatnya dalam operasi atom. Anda dapat melihat ini dengan melihat nama file yang sama dengan akhiran acak selama transfer di direktori tujuan. Ini berarti Anda harus membaca 160GB data (masing-masing 80GB untuk setiap sumber dan tujuan) dan menuliskan 80GB di sisi tujuan. Sudahkah Anda melihat opsi --inplace? Mungkin bermanfaat di sini.
Singkatnya Anda mungkin hanya memiliki 2GB perubahan tetapi rsync melakukan banyak pekerjaan. Anda mungkin terikat IO karena semua membaca dan menulis pada disk yang sama akan menyebabkan banyak pertengkaran dan perlambatan.
sumber
Utas ini sudah sangat lama, tetapi semoga membantu seseorang.
Karena ESX mengunci sistem file pada setiap penulisan blok baru, kinerjanya tidak terlalu bagus, dengan Opsi --di tempat Anda mungkin mendapatkan hasil yang lebih baik, tetapi berhati-hatilah, jika Anda membatalkan sinkronisasi, file tidak akan konsisten apa pun lebih. Tentang konsistensi, rsync dari file yang terbuka mungkin tidak konsisten - - lebih baik gunakan snapshot sebelum rsync.
Salam, Marc
sumber
Dengan kelihatannya, Anda melakukan salinan lokal-ke-lokal
rsync
. Dalam hal ini, perilaku defaultrsync
adalah mematikan algoritma delta-transfer, dan melakukan transfer "seluruh file". Alasan untuk perilaku default ini adalah bahwa transfer lokal ke lokal menggunakan algoritma delta-xfer biasanya akan lebih lambat daripada hanya menyalin seluruh file, karena algoritma delta melibatkan lebih banyak CPU berderak daripada hanya melakukan menyalin seluruh file.Jika Anda merasa bahwa salinan lokal-ke-lokal akan mendapat manfaat dari menggunakan algoritma delta-xfer, Anda dapat memaksa
rsync
untuk menggunakannya dengan menentukan opsi--no-W
(atau--no-whole-file
).sumber
--no-whole-file
opsi sebagai bagian dari perintah rsync; itu di luar tampilan layar.