Perbedaan antara Xen PV, Xen KVM dan HVM?

53

Saya tahu bahwa Xen biasanya lebih baik daripada OpenVZ karena penyedia tidak dapat menjual lebih banyak di Xen. Namun, apa perbedaan antara Xen PV, Xen KVMdan HVM(saya telah melalui spesifikasi penyedia ini ? Mana yang lebih baik untuk tujuan apa dan mengapa?


Sunting:

Untuk pengguna akhir yang hanya akan meng-hosting situs web, mana yang lebih baik? Dari efisiensi atau sudut pandang lain, apakah ada kelebihan satu di atas yang lain?


sumber

Jawaban:

47

Jenis virtualisasi yang didukung Xen

Xen mendukung menjalankan dua jenis tamu yang berbeda. Tamu Xen sering disebut sebagai domUs (domain tidakrivasi). Kedua tipe tamu (PV, HVM) dapat digunakan secara bersamaan pada sistem Xen tunggal.

Xen Paravirtualization (PV)

Paravirtualization adalah teknik virtualisasi yang efisien dan ringan yang diperkenalkan oleh Xen, yang kemudian diadopsi juga oleh solusi virtualisasi lainnya. Paravirtualization tidak memerlukan ekstensi virtualisasi dari CPU host. Namun para tamu yang divonis memerlukan kernel khusus yang porting untuk berjalan secara asli pada Xen, sehingga para tamu menyadari hypervisor dan dapat berjalan secara efisien tanpa emulasi atau perangkat keras yang ditiru secara virtual. Kernel tamu Xen PV tersedia untuk sistem operasi Linux, NetBSD, FreeBSD, OpenSolaris, dan Novell Netware.

Tamu PV tidak memiliki perangkat keras emulasi apa pun, tetapi konsol grafis masih memungkinkan menggunakan guest pvfb (framebuffer paravirtual). Konsol grafis tamu PV dapat dilihat menggunakan klien VNC, atau Redhat's virt-viewer. Ada server VNC terpisah di dom0 untuk setiap PVFB tamu.

Kernel Linux.org upstream kernel.org sejak Linux 2.6.24 termasuk dukungan tamu Xen PV (domU) berdasarkan kerangka Linux pvops, sehingga setiap kernel Linux hulu dapat secara otomatis digunakan sebagai kernel tamu Xen PV tanpa tambalan atau modifikasi tambahan.

Lihat halaman wiki XenParavirtOps untuk informasi lebih lanjut tentang Linux pvops Xen dukungan.

Xen Full virtualization (HVM)

Sepenuhnya tervirtualisasi alias HVM (Hardware Virtual Machine) tamu memerlukan ekstensi virtualisasi CPU dari host CPU (Intel VT, AMD-V). Xen menggunakan versi modifikasi Qemu untuk meniru perangkat keras PC lengkap, termasuk BIOS, pengontrol disk IDE, adaptor grafis VGA, pengontrol USB, adaptor jaringan dll untuk tamu HVM. Ekstensi virtualisasi CPU digunakan untuk meningkatkan kinerja persaingan. Tamu yang tervirtualisasi sepenuhnya tidak memerlukan kernel khusus, jadi misalnya sistem operasi Windows dapat digunakan sebagai tamu Xen HVM. Para tamu yang tervirtualisasi sepenuhnya biasanya lebih lambat dari para tamu yang divonis, karena persaingan yang diperlukan.

Untuk meningkatkan kinerja HVM yang sepenuhnya tervirtualisasi, para tamu dapat menggunakan driver perangkat khusus paravirtual untuk mem-bypass emulasi untuk disk dan IO jaringan. Para tamu Xen Windows HVM dapat menggunakan driver GPLPV opensource. Lihat halaman wiki XenLinuxPVonHVMdrivers untuk informasi lebih lanjut tentang driver Xen PV-on-HVM untuk para tamu Linux HVM.

Ini dari http://wiki.xenproject.org/wiki/XenOverview

KVM bukan Xen sama sekali, itu adalah teknologi lain, di mana KVM adalah modul kernel asli Linux dan bukan kernel tambahan, seperti Xen. Yang membuat KVM desain yang lebih baik. Kelemahan di sini adalah bahwa KVM lebih baru dari Xen, jadi mungkin kurang beberapa fitur.

dyasny
sumber
9
+1 KVM sama sekali bukan Xen. Sama sekali tidak setuju bahwa KVM adalah desain yang lebih baik. Xen menyediakan isolasi yang jauh lebih baik dan tidak bergantung pada kernel Linux dan kerentanan potensial.
Antoine Benkemoun
2
Terimakasih atas infonya! Saya tidak bisa mengerti semuanya. Dari sudut pandang pengguna akhir, siapa yang akan meng-hosting situs web, mana yang lebih baik? Apakah ada keuntungan signifikan dari yang satu di atas yang lain?
2
Xen memiliki kerentanannya sendiri. Tetapi menjalankan OS dengan dua kernel bootstrap adalah cacat desain, tidak peduli seberapa baik Anda melakukannya
dyasny
1
JP19: itu tergantung pada situs web. Jika Anda dapat menentukan beban pada VPS, Anda dapat bertanya di sini atau google untuk solusi terbaik.
dyasny
2
Xen adalah hypervisor, dan begitu pula KVM. KVM memiliki perangkat PV, dan menambahkan lebih banyak dengan waktu, itu juga memungkinkan PCI lolos. Jadi saya tidak mengerti maksud argumen Anda, Nils
dyasny
32

Xen adalah hypervisor yang berjalan pada logam (pc / server) dan kemudian host mesin virtual yang disebut domain.

Sebuah Xen PVdomain adalah domain paravirtualized , yang berarti sistem operasi (biasanya kita berbicara linux di sini) telah dimodifikasi untuk berjalan di bawah Xen, dan tidak perlu benar-benar meniru perangkat keras. Ini harus menjadi cara yang paling efisien, kinerja yang bijaksana.

Sebuah Xen HVMdomain adalah hardware ditiru domain, yang berarti sistem operasi (bisa Linux, Windows, apa pun) belum diubah dengan cara apapun dan hardware akan ditiru. Ini agak lambat, jadi biasanya Anda menginstal driver PV di os tamu untuk perangkat keras kritis (biasanya disk dan jaringan), sehingga tamu secara keseluruhan akan berjalan sepenuhnya tervirtualisasi, tetapi perangkat keras yang paling berkinerja kinerja akan menjalankan paravirtualized. Sistem linux baru-baru ini memiliki driver pv untuk disk dan jaringan di kernel, dan ada juga berbagai driver PV untuk Windows. Dengan semua pengembangan pada HVM dalam beberapa tahun terakhir, biasanya ada sedikit perbedaan dalam kinerja antara HVM dan PV untuk beban kerja standar.

KVMbukan Xen, itu adalah platform virtualisasi lain yang dibangun di dalam kernel Linux. Dari sudut pandang tamu menyerupai Xen HVM: tamu menjalankan sepenuhnya tervirtualisasi dan ada driver khusus untuk menjalankan beberapa bagian paravirtualized (lagi, disk dan jaringan).

Baik Xen HVM dan Linux KVM membutuhkan dukungan virtualisasi berbantuan perangkat keras (Intel VT-x, AMD AMD-V), sedangkan Xen PV tidak dapat menjalankan sistem operasi tanpa dukungan PV (Anda tidak dapat menjalankan Windows pada Xen PV).

Baik Xen HVM dan Linux KVM akan menggunakan bagian dari perangkat lunak virtualisasi qemu untuk meniru perangkat keras yang sebenarnya untuk perangkat yang tidak menggunakan driver PV di sistem tamu.

Xen (baik PV dan HVM) dapat melakukan migrasi langsung dari tamu yang berjalan dari satu server fisik ke yang lain, saya tidak tahu apakah KVM juga bisa.

Baik Xen dan KVM tidak dapat overcommit memori sehingga Anda biasanya mendapatkan "true RAM", sementara platform lain seperti VMware dapat menukar bagian ram tamu ke disk.

Ada perbedaan tetapi biasanya berlaku untuk instalasi tertentu dan tidak ke server pribadi virtual generik untuk dijual kepada orang lain. Sebagai contoh, Xen hypervisor terbaru mendukung memori transenden yang dapat meningkatkan pemanfaatan memori dan kinerja tamu jika tamu memiliki dukungan untuk itu (kernel linux> = 3.sesuatu).

Semua teknologi itu akan memberi Anda pengalaman hebat jika diterapkan dengan benar, dan tidak akan membuat perbedaan besar dari sudut pandang Anda. Tentu saja, ada ribuan cara kesalahan bisa terjadi dan itu tidak terkait dengan solusi virtualisasi khusus (yaitu, tamu Anda dapat disimpan pada disk yang lambat dan itu akan merusak kinerja Anda).

Luke404
sumber
3
KVM dapat overcommit memori dan juga Xen.
dyasny
@dyasny Saya tidak tahu tentang KVM tapi saya cukup yakin Xen tidak bisa overcommit memori dalam arti sebenarnya dari kata (memungkinkan ukuran maksimum yang berbeda adalah hal yang berbeda). Harap tautkan sumber Anda jika Anda yakin benar.
Luke404
Xen mendukung balooning. Tambahkan swapping standar untuk ini dan Anda sudah memiliki setidaknya 2 mekanisme overcommit. Ini setua tahun 2008: blog.xen.org/index.php/2008/08/27/…
dyasny
3
@dyasny Anda mungkin berpikir tentang overcommit sebagai memungkinkan maksimum yang lebih tinggi. AFAIK, makna yang diterima adalah mengalokasikan lebih banyak memori untuk tamu daripada kehadiran fisik di tuan rumah, dan ini tidak diterapkan di Xen. Anda tidak dapat mengempiskan balon tamu (mis. Memberikannya lebih banyak memori) jika Anda tidak memiliki memori fisik yang tersedia di host, dan Anda tidak dapat memulai tamu baru jika Anda telah mengalokasikan semua memori host Anda (kecuali jika Anda mengembang menjalankan balon tamu, sehingga benar-benar mengurangi memori yang dialokasikan sehingga Anda tidak terlalu berkomitmen pada apa pun).
Luke404
1
Saya berpikir tentang overcommit tidak hanya memungkinkan lebih dari yang dimiliki oleh host secara fisik, tetapi juga sebagai benar-benar menggunakan lebih dari host secara fisik miliki. Bertukar itu mengerikan, tetapi ini adalah mekanisme yang memungkinkan Anda mengalokasikan lebih banyak halaman memori daripada yang Anda miliki secara fisik di host, baik untuk proses, atau VM - tidak masalah. Sejauh ini saya akan pergi ke semantik yang satu ini.
dyasny