Apakah berjalan secara permanen di snapshot VMWare buruk untuk kinerja?

18

Saya mengerti bahwa VMWare KB tidak menyukai snapshot yang berjalan lama terutama karena dua hal (Menurut saya)

  • Mengambil banyak foto dapat mengisi penyimpanan data. Snapshots hanyalah file delta. Katakanlah Anda memiliki VMDK 50 Gig, hampir penuh, dan Anda mengambil snapshot. Dalam snapshot Anda, Anda membalik setiap bit. File delta Anda juga akan sekitar 50 GB. Jepret lagi, balikkan bit, file delta 50 Gig lainnya. Ini bisa keluar dari kendali dengan cepat.

  • Mengambil foto dalam jumlah besar membawa risiko. Saat mengkonsolidasi snapshot Anda menulis perubahan delta ke VMDK asli. Ini membutuhkan waktu dan membawa risiko bahwa jika terjadi sesuatu, Anda hanya nuked VMDK Anda.

Peringatan mereka tampaknya masuk akal secara logis.

Dengan itu dikatakan, apakah inheren buruk untuk menjalankan mesin saya secara permanen dari snapshot VMDK? Saya ingin membuat pohon saya sebagai berikut:

  • Mendasarkan
    • Snap1
      • Jepret 2
      • Kamu di sini

Snap 1 dan 2 akan diambil segera setelah menginstal dan menyediakan sistem basis. Ini adalah mesin yang saya rencanakan untuk sering disegarkan sehingga saya hanya akan membuat pohon saya terlihat seperti berikut:

  • Mendasarkan
    • Snap1
      • Kamu di sini
      • Jepret 2

Hapus Snap2 dan buat ulang Snap2.

Saya tidak dapat melihat bagaimana ini dapat memiliki implikasi karena alasan berikut:

  • Karena saya hanya menginstal gambar dasar dan mengambil delta saya segera setelah tidak mungkin saya bisa mengisi data store. Dengan asumsi gambar dasar saya hanya 10 GB (pada disk yang disediakan 50 GB tipis), bahkan jika delta saya membalik setiap bit tunggal maksimum penggunaan saya bisa 60 GB (VMDK 10 GB basis yang dikunci + 50 GB delta di file VMDK snapshot). Ini mengasumsikan saya tidak membuat snapshot lebih lanjut.

  • Karena case use saya tidak meminta untuk mengkonsolidasikan snapshot saya tidak mengambil risiko kesalahan saat mengkonsolidasikan delta saya. Ketika saya kembali ke Snap1 dan menghapus Snap2, semua delta yang berada di Snap2 dengan mudah dihapus.

  • Beban penyimpanannya persis sama, jadi saya harus mendapatkan IOPS yang sama. Saya mengerti bahwa beberapa file (terutama file sistem) akan ada pada VMDK asli dan yang lainnya (semuanya setelah basis) akan berada di delta tetapi saya tidak melihat bagaimana ESXI akan peduli. Semua file berada pada datastore fisik yang sama sehingga kinerjanya harus setara dengan referensi segala sesuatu di VMDK asli tanpa snapshot.

Adakah pikiran? ESXI 5.5 dengan penyimpanan data menjadi RAID'd DAS.

Saya tidak memiliki lisensi vCenter sehingga templating dan kloning sudah tidak ada.

HASIL UJI

Saya masuk lebih awal hari ini untuk menjalankan beberapa tes. Inilah hasilnya. Ada penalti kinerja tetapi saya tidak yakin mengapa.

Sebelum Snapshotting: Sebelum Memotret

Setelah Snapshotting: Setelah Shapshoting

VM_Storage_Inception
sumber
Tidak pasti - seiring berjalannya waktu, foto-foto akan semakin berbeda. Akhirnya, mereka akan menjadi salinan yang pada dasarnya berbeda. Setelah Anda tidak mencadangkan banyak disk dengan memotretnya, konversikan snapshot menjadi volume yang benar-benar terpisah. Bagaimana? Biasanya, saya menggunakan dd dari VM ketiga, tetapi kebanyakan saya hampir disalibkan di sini untuk pendapat sesat seperti ini. :-) Tetapi: itu akan berhasil , dan akan efektif .
peterh
@ PeterHorvath - Itulah hal yang saya suka dengar. Solusi cerdas, hacky, efektif, tanpa tulang. Jika Anda tidak keberatan, bisakah Anda memberi saya tulisan tentang apa yang Anda lakukan di masa lalu atau sesuatu? Apakah Anda DD VMDK dan snapshot bersama?
VM_Storage_Inception
Jika saya perlu melakukannya lebih sering, saya melakukannya dengan skrip. Tapi bukan itu masalahnya, dan dalam kebanyakan kasus saya bahkan tidak menggunakan snapshpts, karena mereka lambat.
peterh

Jawaban:

17

Ya, ada implikasi kinerja untuk snapshot yang berjalan lama. Bahkan ada implikasi yang lebih besar untuk mengkonsolidasikan VMDK delta kembali ke file disk asli. Ini dapat menyebabkan tidak responsif dalam sistem operasi VM Anda atau perilaku yang tidak diinginkan lainnya.

VMware memiliki fungsi templating dan kloning yang dibangun ke dalam vCenter. Anda memerlukan lisensi vSphere Essentials $ 600 untuk mengaktifkan ini.

Anda dapat membuat VM sesuai selera Anda, lalu mengkloningnya ke templat. Template itu kemudian dapat digunakan untuk menghasilkan mesin virtual baru dari gambar "Golden Master".

masukkan deskripsi gambar di sini

Ini memungkinkan Anda untuk memiliki "kondisi bersih" tetapi juga membuat VM yang sudah berjalan lama atau permanen dari gambar induk itu. Tidak perlu snapshot.

putih
sumber
Menarik, saya akan melihat ke dalamnya dan melihat cara kerjanya. Sayangnya saya tidak memiliki lisensi vCenter dan lebih suka tidak mengeluarkan uang $ 600 jika tidak ada implikasi kinerja pada snapshot yang digunakan dengan cara yang saya jelaskan. Templating dan kloning tampaknya tidak berbeda dengan mengambil OVA dan menggunakannya kembali. Menghapus snapshot tampak jauh lebih cepat dan saya tidak bisa secara logis melihat bagaimana akan ada implikasi kinerja bahkan jika itu bukan "metode resmi yang disetujui VMWare".
VM_Storage_Inception
Untuk menanggapi hasil edit Anda, dapatkah Anda mengarahkan saya ke sebuah artikel atau menjelaskan apa implikasi kinerja yang akan terjadi? Saya tidak bisa melihat bagaimana akan ada asumsi saya menggunakannya seperti yang saya jelaskan. Juga saya tidak akan pernah mengkonsolidasikan foto-foto kembali ke VMDK asli.
VM_Storage_Inception
Saya rasa saya mencoba memahami mengapa Anda bersikeras mendesain fitur yang dimaksudkan untuk digunakan untuk akses jangka pendek.
ewwhite
@VM_Storage_Inception - sepertinya Anda menginginkan pendekatan orang miskin terhadap Manajer Lab produk VMWare yang sudah tidak ada.
TheCleaner
5
Terkadang, membeli solusi yang tepat masuk akal. Anda telah menghabiskan lebih banyak upaya dan jam kerja untuk mencari tahu tentang solusi daripada hanya membayar lisensi vSphere Essentials ($ 600), yang akan memberi Anda opsi templat / kloning yang didukung.
ewwhite
4

Jawaban ewwhite benar, tetapi hanya untuk sedikit lebih memperluas atau penalti kinerja, pertimbangkan skenario berikut:

Anda membuat VM. Pembacaan virtual dari vmdk membutuhkan satu pembacaan disk fisik dengan ukuran yang sama. Cukup mudah.

Sekarang bayangkan Anda mengambil snapshot dari VM. Sekarang, untuk setiap pembacaan virtual, Anda akan dikenakan 2 pembacaan fisik, satu dari vmdk dasar dan satu dari delm vmdk, karena Anda memerlukan informasi dari keduanya untuk mendapatkan keadaan saat ini. Anda sekarang dua kali lipat dari disk fisik yang dibaca.

Untuk dua snapshot, Anda melakukan tiga kali pembacaan, dan seterusnya. Jika Anda memiliki banyak snapshot, Anda dapat melihat bagaimana ini bisa menjadi penalti performa yang cukup signifikan. Ini tidak berarti kinerja n-kali lebih buruk (karena caching, bagian yang belum diubah, dll.), Tapi itu bukan praktik yang baik.

tfrederick74656
sumber
Saya hampir yakin snapshots menggunakan tabel "blok mana yang ada dalam file". Jadi membaca satu blok tunggal hanya akan menghasilkan satu blok membaca dari file yang sesuai. Tentu saja, membaca beberapa blok dapat mengakibatkan mengakses beberapa file, yang berarti penalti untuk memindahkan kepala disk jika Anda tidak menjalankan dari SSD, tetapi jumlah total akses blok disk tidak boleh berubah.
Guntram Blohm mendukung Monica
1
Cara saya memahaminya, snapshot hanya menyimpan perubahan dari disk asli. Jika Anda menyimpan file A, maka ambil snapshot, lalu ubah file A lagi, hanya perubahan pada file tersebut yang ditulis ke snapshot. Jadi, Anda perlu membaca baik VMDK asli dan snapshot untuk mendapatkan seluruh file. Jika tidak, setiap snapshot hanya akan menjadi salinan lengkap dari disk asli, yang tidak.
tfrederick74656
itu mungkin benar, tetapi jumlah total blok yang perlu Anda baca tetap sama (misalnya 10 blok dari snapshot dan 100 dari disk dasar). ESXi pertama-tama memeriksa snapshots yang ada untuk blok yang diperlukan sampai berakhir pada snapshot yang benar (atau disk dasar). Mungkin ada penalti kecil karena sistem mungkin akan melewati bagian snapshot yang melintasi sepenuhnya ketika tidak ada snapshot sama sekali. Selain itu, file snapshot yang berjalan lama mungkin akan menderita fragmentasi parah.
Dirk Trilsbeek
Sistem snapshot disk virtual yang dibaca N untuk snapshot N akan menjadi implementasi yang sangat bodoh. Saya ragu itu bagaimana ini diterapkan di VMWare. Optimalisasi sederhana dapat dilakukan dengan hanya membuat file indeks yang menyimpan di mana diskfile setiap blok drive yang ditiru adalah. Misalkan Anda memiliki disk virtual 512GB dengan ukuran blok 4kB, Anda hanya perlu indeks 64 MB untuk menentukan dalam waktu yang konstan mana hingga 16 file disk virtual berisi blok.
Lie Ryan
1
Berdasarkan jawaban di serverfault.com/questions/430138 saya harus tidak setuju. Saya selalu memikirkan snapshot sebagai hasil dari aritmatika biner, bukan hanya kumpulan data baru. Jadi jika Anda memiliki bit 01010101 di VMDK dasar Anda, Anda snapshot, lalu ubah bit-bit itu ke 10101010, delta Anda akan berisi 11111111 (menunjukkan bahwa setiap bit dalam file asli berubah, BUKAN nilai baru 10101010). Seperti yang saya setujui dengan komentar di atas, VMDK seharusnya adalah file mentah. Di mana indeks akan disimpan? Saya belum pernah melihat ini disebutkan di pub teknologi VMWare.
tfrederick74656
0

Snapshots VMware ESX dimaksudkan untuk penggunaan jangka pendek.

Penggunaan lama dan IO yang berat dapat menyebabkan pembekuan VM. Jika Anda memiliki kasus ketika menulis IO lebih besar / lebih cepat dari konsolidasi snapshot ESX akan membekukan VM untuk melindungi data. Dengan snapshot waktu terfragmentasi dan ESX melakukan konsolidasi internal Anda dapat mengalami pembekuan berkala.

Anda dapat melakukan VM templating secara manual melalui ssh. Salin folder VM yang berisi vmdk, vmx, dll ke folder baru. Dalam file vmx, VM yang baru disalin mengubah UID dan alamat MAC.

VMware memiliki produk, Linked Clone, yang merupakan hal yang sama yang Anda coba lakukan. Dan mereka mengatakan itu memiliki masalah kinerja potensial. Dalam praktiknya Anda akan membuat ulang VM setelah beberapa saat. https://www.vmware.com/support/ws5/doc/ws_clone_typeofclone.html

dario
sumber