Mengapa snapshot VM memengaruhi kinerja?

27

Saya membaca di salah satu artikel VMware KB bahwa snapshots akan secara langsung mempengaruhi kinerja VM.

Tetapi tim saya terus bertanya kepada saya bagaimana foto dapat memengaruhi kinerja.

Saya ingin memberi mereka alasan kuat di balik pernyataan bahwa foto itu adalah pembunuh kinerja.

Adakah yang bisa menjelaskan sedikit teori tentang bagaimana snapshots sebenarnya mempengaruhi kinerja? Apakah hanya karena laju hard disk I / O disk akan lambat?

Samselvaprabu
sumber
2
Tidak yakin apakah ini artikel KB yang Anda baca atau tidak. Saya pikir saya akan menambahkannya sebagai referensi.
Aaron Copley

Jawaban:

28

Saat Anda membuat snapshot, gambar disk asli "beku" dalam kondisi yang konsisten, dan semua akses tulis sejak saat itu akan menuju ke gambar diferensial baru. Lebih buruk lagi, seperti yang dijelaskan di sini dan di sini , gambar diferensial memiliki bentuk log perubahan, yang merekam setiap perubahan yang dibuat ke file sejak foto diambil. Ini berarti, bahwa akses baca harus membaca tidak hanya satu file, tetapi juga semua data perbedaan (data asli ditambah setiap perubahan yang dilakukan pada data asli). Jumlahnya semakin bertambah ketika Anda membuat foto.

Ansgar Wiechers
sumber
2
Penjelasan terbaik. Anda tidak hanya menggandakan IOPS, tetapi ada overhead CPU dalam menghitung perbedaan level blok.
Aaron Copley
3
Setelah membaca artikel ini yang ditautkan oleh Aaron Copley ( kb.vmware.com/selfservice/microsites/… ) sepertinya lebih buruk dari itu. Snapshot bukan gambar diferensial, ini adalah log perubahan, jadi jika Anda menulis data yang sama di tempat yang sama 10 kali, snapshot akan menambah ukurannya dengan 10 kali lipat ukuran data yang Anda tulis. Alih-alih gambar diferensial harus lebih efisien karena harus menimpa data yang ditulis ulang di lokasi yang sama.
Maks
1
@zespri Masalahnya mempengaruhi semua platform virtualisasi yang menggunakan teknologi snapshot semacam ini, termasuk Hyper-V.
Ansgar Wiechers
1
Ini jelas salah. Lihat komentar @ Falcon Momot untuk jawaban yang benar. Bahkan artikel yang tertaut hanya menyatakan disk "dapat kehabisan ruang" yang jelas ketika ruang yang tersisa sebelum mengambil snapshot lebih kecil dari disk snapshotted dan deltadisk tidak memiliki cukup ruang untuk berkembang.
Daniel
2
@AnsgarWiechers Jawaban ini jelas salah. Artikel yang ditautkan ( kb.vmware.com/s/article/1015180 ) menyatakan; "Disk anak, yang dibuat dengan snapshot, adalah disk yang jarang. Disk jarang menggunakan mekanisme copy-on-write (COW), di mana disk virtual tidak berisi data di tempat, sampai disalin di sana dengan tulisan." Diikuti oleh; "Jika mesin virtual menjalankan snapshot, itu membuat perubahan pada disk anak atau jarang. Semakin banyak operasi penulisan yang dilakukan pada disk ini, semakin besar ia tumbuh, ke batas atas ukuran disk dasar ditambah sejumlah kecil overhead. "
Steve365
5

Ketika Anda membuat snapshot pada VM, ini membuat Delta Disk dan sistem operasi menulis ke file ini, bukan VMDK asli. File ini disebut VM_Name-Delta.VMDK tetapi jika sistem perlu merujuk ke file sebelum snapshot itu akan merujuk ke VM_Name.VMDK meningkatkan I / O operasi ini. Jika Anda mengambil beberapa snapshot, Anda merujuk ke file delta terakhir dari snapshot terakhir bukan VMDK asli sehingga meningkatkan I / O.

Contoh.

OS ---> Snapshot (File A Dibuat) ---> (File Snapshot B Dibuat)

Jika saya perlu merujuk ke File A itu akan mencari melalui 3 VMDK untuk menemukan ini.

Juga jika Anda memasukkan status memori VM pada saat snapshotting ini membuat ini lagi adalah file delta dan merujuk ke file memori asli jika diperlukan.

File yang dibuat ini mencantumkan semua file yang dibuat pada saat proses snapshot

Zapto
sumber
2

Sejauh yang saya tahu, VMWare menggunakan logika copy-on-write untuk mengimplementasikan snapshot mereka. Oleh karena itu, ketika Anda membuat satu, setiap operasi yang dilakukan pada VM Anda (mis. Hampir semua yang ada di runtime) akan menyebabkan sedikit VM untuk disalin sampai semuanya pada dasarnya dikloning.

Masalah kinerja lain dengan ini adalah bahwa bacaan harus mengalir ke salinan asli jika copy pekerjaan belum memiliki data (karena tidak ada yang berubah untuk menyebabkan salinan).

Jika Anda ingin memiliki snapshot sebagai cadangan tetapi tidak dapat mentolerir penurunan kinerja kecil, pertimbangkan kloning VM sebagai gantinya.

Falcon Momot
sumber
-2

Dari nilai co-stop tinggi (% CSTP) yang terlihat selama aktivitas snapshot mesin virtual :

Ketika ukuran dan jumlah snapshot pada mesin virtual meningkat, demikian juga jumlah operasi perintah penyimpanan dalam vmkernel. Untuk setiap perintah penyimpanan yang dikeluarkan oleh OS tamu mesin virtual, beberapa operasi perintah penyimpanan mungkin diperlukan untuk melintasi seluruh rantai snapshot untuk membaca blok data yang paling tepat.

Shahnawaz Usmani
sumber