Sebuah Mesin Virtual (VM) adalah istilah umum untuk banyak teknologi virtualisasi.
Ada banyak variasi pada teknologi virtualisasi, tetapi yang utama adalah:
- Virtualisasi Tingkat Perangkat Keras
- Virtualisasi Tingkat Sistem Operasi
qemu-kvm
dan VMWare
adalah contoh yang pertama. Mereka menggunakan hypervisor untuk mengelola lingkungan virtual di mana sistem operasi penuh berjalan. Misalnya, pada qemu-kvm
sistem Anda dapat memiliki satu VM yang menjalankan FreeBSD, yang lain menjalankan Windows, dan yang lain menjalankan Linux.
Mesin virtual yang dibuat oleh teknologi ini berperilaku seperti komputer individual yang terisolasi bagi tamu. Ini memiliki CPU virtual, RAM, NIC, grafik dll yang diyakini tamu sebagai artikel asli. Oleh karena itu, banyak sistem operasi yang berbeda dapat dipasang di VM dan bekerja "di luar kotak" tanpa perlu modifikasi.
Meskipun ini sangat nyaman, karena banyak OS akan diinstal tanpa banyak usaha, ini memiliki kekurangan karena hypervisor harus mensimulasikan semua perangkat keras, yang dapat memperlambat segalanya. Alternatifnya adalah perangkat keras para-virtualisasi, di mana perangkat dan driver virtual baru dikembangkan untuk tamu yang dirancang untuk kinerja di lingkungan virtual. qemu-kvm
berikan virtio
berbagai perangkat dan driver untuk ini. Kelemahan dari ini adalah bahwa OS tamu harus didukung; tetapi jika didukung, manfaat kinerjanya besar.
lxc
adalah contoh Virtualisasi Tingkat Sistem Operasi, atau kontainer. Di bawah sistem ini, hanya ada satu kernel yang diinstal - kernel host. Setiap wadah hanyalah sebuah isolasi dari proses userland. Misalnya, server web (misalnya apache
) dipasang dalam wadah. Sejauh menyangkut server web itu, satu-satunya server yang diinstal adalah server itu sendiri. Wadah lain mungkin menjalankan server FTP. Server FTP itu tidak mengetahui penginstalan server web - hanya miliknya sendiri. Wadah lain dapat berisi instalasi pengguna penuh dari distro Linux (selama distro tersebut mampu berjalan dengan kernel sistem host).
Namun, tidak ada penginstalan sistem operasi terpisah saat menggunakan kontainer - hanya instance layanan userland yang terisolasi. Oleh karena itu, Anda tidak dapat menginstal platform yang berbeda dalam sebuah wadah - tidak ada Windows di Linux.
Wadah biasanya dibuat dengan menggunakan chroot
. Ini membuat root pribadi yang terpisah (/
) untuk sebuah proses untuk bekerja dengan. Dengan membuat banyak root pribadi individu, proses (server web, atau distro Linux, dll) berjalan dalam sistem file mereka sendiri yang terisolasi. Teknik yang lebih canggih, seperti cgroups
dapat mengisolasi sumber daya lain seperti jaringan dan RAM.
Ada pro dan kontra untuk keduanya dan banyak perdebatan panjang mengenai mana yang terbaik.
- Container lebih ringan, karena OS lengkap tidak diinstal untuk masing-masing container; yang merupakan kasus untuk hypervisor. Karena itu mereka dapat berjalan pada perangkat keras dengan spesifikasi lebih rendah. Namun, mereka hanya dapat menjalankan tamu Linux (di host Linux). Selain itu, karena mereka berbagi kernel, ada kemungkinan wadah yang disusupi dapat memengaruhi wadah lain.
- Hypervisor lebih aman dan dapat menjalankan OS yang berbeda karena OS lengkap diinstal di setiap VM dan tamu tidak mengetahui VM lain. Namun, ini menggunakan lebih banyak sumber daya pada host, yang harus relatif andal.
Wadah sedikit mirip dengan lingkungan chroot kecuali ia mencapai isolasi ruang pengguna yang lebih lengkap. Itu tidak menyediakan VM nyata, tetapi sistem operasi virtual. VM menciptakan ilusi beberapa mesin, di mana masing-masing mesin tersebut dapat menjalankan sistem operasi yang nyata dan lengkap seolah-olah di atas logam kosong. "Sistem operasi lengkap" di sini termasuk kernel. Beberapa VM (mis. QEMU) bahkan memungkinkan untuk menstimulasi berbagai jenis arsitektur "bare metal".
Kontainer malah menciptakan ilusi beberapa kernel, yang masing-masing menjalankan userland yang lengkap. Anda dapat, misalnya, menjalankan Debian di satu penampung dan Arch di penampung lainnya, sehingga perspektif dari dalam penampung hampir sama dengan VM. Namun, Anda hanya dapat menjalankan sistem pengguna OS yang kompatibel dengan satu kernel aktual, dalam hal ini, Linux. Ini berbeda dari VM asli, di mana Anda dapat menjalankan kernel independen dan sistem operasi apa pun.
Jadi VM yang sebenarnya lebih mahal, dari segi sumber daya, daripada wadah; jika Anda tidak memerlukan kernel yang berbeda di setiap VM, sebaiknya gunakan wadah.
Ada sistem virtualisasi lain yang melakukan sesuatu yang mirip dengan LXE, seperti openVZ, banyak digunakan oleh vendor VPS. OpenVZ VPS adalah userland independen yang menggunakan kernel OS host-nya. Inilah sebabnya mengapa VPS semacam itu hadir dalam banyak rasa linux tetapi tidak ada yang lain; mereka harus kompatibel dengan kernel host.
Virtualisasi gaya OpenVZ dan LXC disebut virtualisasi tingkat sistem operasi .
Sebuah hipervisor adalah sistem yang mengelola mesin virtual, seperti VirtualBox, QEMU, atau Xen. Beberapa hypervisor, seperti Xen, berjalan di atas logam kosong dan tidak memerlukan OS host (walaupun mereka mungkin memerlukan OS yang dihosting untuk berfungsi sebagai antarmuka kontrol). Lainnya, seperti VirtualBox dan QEMU, dijalankan di dalam OS host. Beberapa, seperti QEMU, memungkinkan simulasi arsitektur mesin yang berbeda; yang lain, seperti VirtualBox, tidak (yaitu, arsitektur VM selalu sama dengan host sebenarnya). Menyimulasikan arsitektur memerlukan lebih banyak sumber daya, sama seperti VM nyata memerlukan lebih banyak sumber daya daripada penampung.
Virtualisasi gaya hypervisor disebut virtualisasi tingkat platform .