Virtualisasi

Apa itu Nested virtualisation?

Definisi

Nested virtualisation lets a virtual machine itself run virtual machines, by exposing the processor virtualisation extensions to the guest. It is required for Proxmox VE, VM-based CI jobs and some Docker configurations. Many providers disable it, which is the usual reason those workloads fail elsewhere.

Mengapa Nested virtualisation penting

Ini diperlukan untuk Proxmox VE, pekerjaan CI berbasis VM, dan beberapa konfigurasi Docker. Banyak penyedia yang menonaktifkannya, yang biasanya menjadi alasan mengapa beban kerja tersebut gagal di tempat lain.

Nested virtualisation dalam praktik

Saat Anda menjalankan virtualisasi bersarang, Anda mem-boot hypervisor di dalam tamu KVM dan meneruskan ekstensi virtualisasi CPU host. Anda akan memeriksa /proc/cpuinfo di tamu untuk flag svm atau vmx. Jika tidak ada, hypervisor dalam Anda jatuh ke emulasi perangkat lunak, yang dapat memangkas kinerja hingga sepuluh kali lipat. Anda mungkin juga perlu mengaktifkan tipe CPU 'host' daripada model generik untuk mendapatkan flag tersebut. Salah mengaturnya dan beban kerja Proxmox atau CI Anda berjalan merangkak.

Kesalahan umum tentang Nested virtualisation

Orang menganggap virtualisasi bersarang hanya penting untuk menjalankan OS penuh seperti Windows di VM. Koreksinya: itu juga merusak jaringan overlay default Docker dan modul kernel tertentu, karena itu bergantung pada fitur virtualisasi di dalam tamu. Jadi beban kerja kontainer bisa gagal pada penyedia yang menonaktifkan nesting, meskipun Anda tidak pernah berniat menjalankan VM.

Nested virtualisation — pertanyaan umum

Bisakah saya menjalankan Docker di dalam VM bersarang?

Ya, dan ini adalah alasan paling umum orang membutuhkan virtualisasi bersarang. Jaringan bridge default Docker menggunakan iptables dan modul kernel yang mungkin berperilaku berbeda tanpa ekstensi virtualisasi CPU diekspos. Paket KVM kami menyertakan virtualisasi bersarang, jadi kontainer Docker Anda berjalan seperti yang diharapkan.

Bagaimana cara memeriksa apakah virtualisasi bersarang diaktifkan?

Di dalam VM Anda, jalankan grep -E '(svm|vmx)' /proc/cpuinfo. Jika Anda melihat flag tersebut, nesting tersedia. Jika tidak, hypervisor tidak mengeksposnya, yang biasanya berarti penyedia menonaktifkannya.

Lainnya dari virtualisasi

KVM
KVM adalah virtualisasi perangkat keras penuh yang dibangun ke dalam kernel Linux, memberi setiap tamu kernelnya sendiri dan isolasi yang ditegakkan perangkat keras dari penyewa lain.
OpenVZ
OpenVZ adalah virtualisasi berbasis kontainer di mana setiap instance berbagi kernel host, sehingga tamu tidak dapat memuat modul kernel atau menjalankan sistem operasi yang berbeda.
LXC
LXC adalah kontainerisasi asli Linux yang mengisolasi proses dengan namespaces dan cgroups sambil berbagi kernel host.
Hypervisor
Hypervisor adalah lapisan perangkat lunak yang membuat dan menjalankan mesin virtual, mengalokasikan CPU fisik, memori, dan IO di antara mereka.
vCPU
vCPU adalah prosesor virtual yang disajikan ke tamu, didukung oleh waktu penjadwalan pada inti fisik atau utas.
cloud-init
cloud-init adalah mekanisme standar untuk mengonfigurasi mesin virtual pada boot pertama, menggunakan metadata yang disediakan oleh platform.