Apa praktik terbaik untuk menjalankan SQL Server di Mesin Virtual?


21

Apa praktik terbaik untuk menjalankan SQL Server di Mesin Virtual? Aktivitas transaksi online saya sangat rendah, tetapi ada sejumlah besar pemrosesan data untuk tujuan menyediakan data pelaporan ke beberapa situs web.


2
Di mana disk disimpan? pada HDD 5400 RPM lokal? Pada SAN dengan koneksi Fiber dan 15k spindle disk? Semua VM hari ini adalah tentang IO, CPU hampir tidak ada dalam pertimbangan.
jcolebrand

Tidak, bukan lokal. Tapi saya tidak tahu detail SAN.
JerryOL

2
Saya tidak dapat menambahkan komentar karena saya belum memiliki reputasi yang cukup, tetapi [menurut Microsoft] [1] pada 2008 R2 ada sedikit perbedaan kinerja antara disk virtual tetap dan dinamis. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Terry Bochaton

@ Jerry, di masa depan jangan ragu untuk menandai jawaban seperti itu dan kami akan mengubahnya untuk Anda.
jcolebrand

Jawaban:


18

Seperti halnya mesin fisik, IO adalah raja. Akan ada hit IO yang terlihat dari virtualisasi (seberapa banyak hit yang bergantung pada teknologi yang Anda pilih), jadi pastikan Anda tidak melakukan apa pun yang dapat memperburuk ini dan membahayakan kinerja IO lebih jauh.

  • Ukuran yang selalu digunakan tetap, bukan disk virtual dinamis, dan memastikan bahwa drive / array yang mendasarinya cukup. Vdisks dinamis kurang berkinerja daripada yang ukuran tetap.
  • Jika data dalam VM tidak kritis misi, nyalakan kemampuan solusi VM untuk cache menulis (secara efektif berbohong kepada OS tamu tentang kapan hal-hal secara fisik ditulis ke disk) untuk kinerja tambahan. Ini berguna untuk mesin pengembangan dan pengujian di mana data mudah diganti, atau replika hanya-baca yang bersifat lokal untuk master yang dapat dibuat kembali jika mereka mengalami masalah, tetapi disarankan agar opsi tersebut tidak digunakan untuk produksi dan sistem cadangan karena mereka meningkatkan kemungkinan kehilangan data (atau lebih buruk, korupsi) jika mesin mati secara tak terduga.
  • Pastikan bahwa setiap VM memiliki RAM yang cukup yang didedikasikan untuknya sehingga set kerja normal dari setiap basis data sesuai dengan memori dengan jumlah ruang yang cukup untuk menghindari IO yang tidak perlu. Juga, pastikan bahwa hypervisor tidak akan mengeluarkan RAM VMs kapan saja (misalnya sebagian besar produk VMWare dapat melakukan ini, yang memungkinkan Anda untuk menjalankan set VM yang lebih besar daripada yang Anda bisa lakukan pada perangkat keras yang sama, tetapi penurunan kinerja dapat menjadi masif - ada opsi untuk menyetel atau mematikan perilaku ini).
  • Jika host menggunakan array RAID5, pertimbangkan untuk pindah ke RAID10. Ini akan mengurangi ruang yang tersedia tetapi menghapus masalah kinerja penulisan yang dapat terlihat dengan RAID5 (atau 6).
  • Untuk VM yang cenderung melihat banyak aktivitas IO, pertimbangkan untuk memberi mereka drive atau larik mereka sendiri, atau hanya minta mereka membagikan drive / larik mereka dengan data yang melihat aktivitas rendah.

Tentu saja jika seluruh DB Anda (dan segala sesuatu yang dijalankan oleh VM) sesuai dengan RAM yang dialokasikan untuk VM dan itu melihat sangat sedikit aktivitas menulis, kinerja IO bisa menjadi masalah yang jauh lebih kecil.

Edit: beberapa poin lagi:

  • Jika menggunakan disk virtual, pastikan bahwa tipe pengontrol terbaik digunakan untuk kinerja. Beberapa solusi virtualisasi menawarkan beberapa jenis pengontrol virtual untuk kompatibilitas tamu yang lebih baik dan Anda mungkin menemukan beberapa jenis yang kurang efisien daripada yang lain karena keterbatasan protokol dalam desain yang mereka tiru dan keterbatasan dalam driver OS tamu.
  • Jika solusi virtualisasi Anda menawarkan driver khusus untuk pengontrol drive virtual, pastikan OS tamu Anda menggunakannya - ini dapat mempercepat IO massal dengan mengurangi jumlah salinan memori-ke-memori dan host <-> hypervisor <-> konteks tamu sakelar yang terlibat dalam beberapa operasi.
  • Dua poin di atas berlaku jika Anda menggunakan penyimpanan jaringan seperti saham SMB sederhana atau iSCSI juga: pastikan bahwa Anda menggunakan pengontrol jaringan virtual paling efisien yang ditawarkan dan bahwa OS tamu Anda menggunakan driver yang disarankan untuk itu, jika tidak kedua latensi dan bandwidth mungkin lebih terbatas daripada kebutuhan oleh lapisan virtualisasi.

1
Ya dan tidak. Volume SAN yang dipasang ke VM melalui inisiator iSCSI akan sangat cepat!
Gayus

1
@ Gayus: poin bagus. Saya telah menambahkan catatan tentang vNIC dan driver, yang kemungkinan menjadi sumber kemacetan ekstra dalam kasus-kasus tersebut.
David Spillett

9

1
~ Apakah ada bagian yang ingin Anda sorot dari artikel?
jcolebrand

2
Tidak. Karena virtualisasi bisa menjadi topik yang kompleks, saya sarankan untuk membaca semuanya. Tidak terlalu banyak. Jika OP mencari jawaban cepat, itu mungkin bukan jawaban yang benar.
Eric Humphrey - lotsahelp

Saya mengejar praktik terbaik secara umum. Setelah baru saja memindahkan SQLServer 2000 Standard ke VM baru, saya mencoba menyelesaikan masalah dengan situs web yang memanggil prosedur tersimpan yang sekarang habis jika tidak di-cache dalam memori; meskipun memori fisik dan VM yang ditetapkan adalah sama, 4GB.
JerryOL

1
@ JererryOL: Pastikan bahwa RAM yang dialokasikan untuk VM tidak diizinkan untuk dikeluarkan (jika tidak mengalokasikan 4Gb ke VM tidak sama dengan memiliki 4GB pada mesin fisik) dan jika solusi virtualisasi yang Anda gunakan menawarkan berbagai jenis pengendali virtual memastikan yang terbaik diambil dan driver yang tepat digunakan oleh OS tamu.
David Spillett
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.