KVM

Menyiapkan tumpukan Libvirt QEMU dan KVM di Debian

Menyiapkan tumpukan Libvirt QEMU dan KVM di Debian
Virtualisasi berbasis QEMU-KVM adalah inti dari tumpukan virtualisasi berbasis Linux. Ini gratis dan open source dan merupakan salah satu teknologi virtualisasi paling umum di seluruh industri. Sebagian besar penyedia layanan cloud menggunakan KVM dan untuk alasan yang bagus. Ini menawarkan tumpukan virtualisasi yang sangat efisien, namun sangat aman, dan tidak ada lisensi yang berbelit-belit untuk ditangani. Ini tidak terjadi dengan pengaturan Hyper-V atau VMWare khas Anda. Namun, trade-offnya adalah pengaturannya bisa sangat rumit, terutama untuk pengguna yang tidak berpengalaman. Artikel ini dimaksudkan untuk mengurangi kerumitan ini bagi pembaca.

Dengan itu, mari kita coba dan atur hypervisor KVM kita sendiri di server Debian 9 .

Mengaktifkan Ekstensi VT-x atau AMD-V

Idealnya, Anda memerlukan instalasi bersih dari distribusi Linux favorit Anda pada mesin (bukan VM) yang memiliki CPU yang cukup modern. Sebagian besar CPU Intel modern mendukung ekstensi VT-x dan, demikian pula, AMD memiliki ekstensi AMD-V. Ekstensi ini adalah "penyempurnaan" yang dibangun langsung ke dalam silikon CPU Anda yang memungkinkan virtualisasi lebih cepat dan lebih aman. Anda harus mengaktifkan ekstensi ini dari dalam menu BIOS/UEFI motherboard Anda. Lihat manual motherboard Anda untuk informasi lebih lanjut.

Jika Anda tidak ingin menodai workstation Linux Anda yang berfungsi dengan baik, Anda dapat menggunakan Mesin Virtual di cloud untuk menjalankan eksperimen ini. DigitalOcean, misalnya, menawarkan mesin virtual yang mengaktifkan virtualisasi bersarang. Ini memungkinkan Anda untuk menjalankan VM di dalam VM yang dihosting cloud (ini dikenal sebagai virtualisasi bersarang). Jelas, ini akan menjadi cara yang sangat tidak efisien untuk menjalankan hypervisor secara praktis tetapi sebagai percobaan, itu akan baik-baik saja. Pastikan untuk mendapatkan setidaknya 4GB memori dan lebih dari 2 CPU.

Setelah Anda mengaktifkan ekstensi tersebut, Anda dapat memverifikasinya dengan menjalankan lscpu dan mencari entri Virtualisasi:

$lscpu
… .
Virtualisasi:        VT-x
… .

Sekarang kami memiliki ekstensi yang diaktifkan, waktu untuk naik lebih jauh di tumpukan.

Menginstal KVM dan QEMU

KVM (atau Mesin Virtual Berbasis Kernel) terdiri dari beberapa modul kernel Linux yang akan memanfaatkan ekstensi CPU yang kami aktifkan sebelumnya. QEMU di sisi lain terdiri dari sekelompok program userland yang memberi kita kemampuan emulasi. Sebagai perangkat lunak mandiri QEMU dapat digunakan untuk menjalankan program dari satu arsitektur, seperti ARM, di arsitektur lain seperti x86_64 dan sebaliknya. Ini dapat digunakan untuk menjalankan apa pun dari satu file biner hingga sistem operasi yang lengkap.

Kami akan, tentu saja, menggunakannya hanya untuk memvirtualisasikan sistem operasi x86_64 pada platform x86_64. Dan untuk itu kita hanya perlu satu paket:

$ sudo apt install qemu-kvm

Anda dapat memverifikasi bahwa paket telah memuat semua modul yang diperlukan, dengan menjalankan:

$ lsmod | grep kvm
kvm_intel            200704  0
kvm                  598016  1 kvm_intel
irqbypass             16384  1 kvm

Itu saja yang Anda butuhkan, secara teoritis. Tetapi Anda akan segera menyadari bahwa itu praktis. Mesin virtual sangat kompleks dan kami memerlukan pembungkus perangkat lunak untuk mengelola semua berbagai tuntutan seperti jaringan, manajemen sistem file, dll dengan cara yang cukup otomatis (dan terukur). Untuk melakukan ini, kita memerlukan perpustakaan/daemon virtualisasi Libvirt.

Menginstal Libvirt

Libvirt adalah bagian klasik dari tumpukan virtualisasi Anda. Daemon libvirtd menjalankan layanan terkait virtualisasi di latar belakang. Layanan yang mendengarkan permintaan seperti "Buat VM", "Hancurkan VM", "Buat Jaringan", dll dan jalankan di dalamnya menggunakan utilitas Linux dasar seperti binari qemu, iptables, dll.

Libvirt sangat umum dan dapat digunakan untuk mengelola tamu KVM, wadah LXC, dan tumpukan virtualisasi Xen. Kami hanya akan fokus pada Libvirt untuk tamu KVM untuk saat ini. Libvirtd mengekspos API yang dapat dikonsumsi oleh aplikasi GUI seperti virt-manager atau oVirt atau alat baris perintah seperti virt-install, virsh, dll. Kami bahkan dapat menulis klien kustom kami sendiri yang menggunakan API standar yang sama.  Kami akan menggunakan alat baris perintah, seperti virsh dan virt-install, untuk menjaga semuanya tetap standar.

Mari kita instal semua alat ini:

$ apt install libvirt-clients libvirt-daemon-system virtinst

Kami juga membutuhkan paket lain libguestfs-tools, untuk membantu kami mengedit atau memodifikasi hard disk dan sistem file VM tamu.

Bagus! Sekarang kami telah menginstal seluruh tumpukan dan mengetahui bagaimana arsitekturnya ditata. Untuk menggunakan libvirt (dan alat terkait) tambahkan pengguna Anda ke grup libvirt-qemu dan libvirt.

$ sudo usermod -aG libvirt
$ sudo usermod -aG libvirt-qemu

Atau jalankan perintah sebagai pengguna root.

Virsh dan Memulai Jaringan Default

Utilitas baris perintah virsh adalah sesuatu yang akan sering Anda gunakan, saat mengelola VM Anda. Anda cukup mengetik virsh dan masuk ke antarmuka baris perintah virsh, atau ketik virsh [Opsi] dari cangkang biasa Anda. Lihat keluaran bantuan virsh setiap kali Anda terjebak dengan beberapa operasi terkait VM.

Perintah virsh pertama yang akan kita gunakan akan memanggil jaringan default yang dapat dihubungkan oleh VM:

$virsh net-autostart default
$ virsh net-start default

Ini akan memulai jaringan default dan akan memastikan bahwa itu dimulai secara otomatis ketika host reboot. Untuk memeriksa detail tentang jaringan default ini gunakan perintah:

$ virsh net-dumpxml default

default
3d723dc6-49a4-4f73-bf6d-623d6b46b099












File xml dapat menunjukkan kepada Anda kisaran kemungkinan alamat IP dan bagaimana mereka akan berkomunikasi dengan dunia luar. Pada dasarnya, lalu lintas akan datang kepada mereka melalui NAT dan mereka tidak akan menjadi bagian dari jaringan eksternal host Anda. Anda dapat menggunakan Bridge Networking untuk mengekspos setiap VM ke LAN mesin host.

Untuk memulai Mesin Virtual

Untuk memulai mesin virtual kita memerlukan media instalasi (seperti ISO instalasi untuk sistem operasi apa pun) dan berapa banyak CPU dan berapa banyak memori yang perlu dialokasikan ke VM, dan jika perlu VNC. Langkah ini adalah di mana Anda dapat benar-benar menghargai penginstal GUI seperti virt-manager, namun, kami akan melakukannya menggunakan perintah virt-install yang agak rumit.

Saya suka menyimpan semua media boot saya di /var/lib/libvirt/boot dan semua VM dan hard disk virtual mereka di /var/lib/libvirt/images (lokasi default) ini menyederhanakan organisasi.

$cd /var/lib/libvirt/boot
$ wget http://rilis.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.iso

Perintah di atas mengambil ISO desktop Ubuntu, Anda dapat dengan mudah mendapatkan CentOS atau distribusi lain yang Anda inginkan.

Untuk membuat VM baru dan mem-boot-nya, jalankan:

$ virt-install --virt-type kvm \
--beri nama myVM \
--memori 2048 --vcpus=2 \
--cdrom /var/lib/libvirt/boot/ubuntu-18.04.2-desktop-amd64.iso \
--ukuran disk = 40 \
--grafis vnc, dengarkan = 0.0.0.0,port=5900 \
--tidak ada konsol otomatis

Perintah di atas memang rumit. Saya sarankan menyimpan perintah ini dalam file teks dan menjalankannya sebagai skrip yang dapat dieksekusi setiap kali Anda membuat VM baru. Sebagian besar parameter seperti tipe-virt dan nama-virt cukup jelas. Mereka hanya membosankan untuk ditulis.

Opsi terakhir untuk tampilan VNC akan memulai server VNC dan memungkinkan Anda memiliki akses konsol ke VM Anda dari jarak jauh, dengan menghubungkan ke port 5900 host. Buka klien VNC di desktop Anda dan buka IP host KVM Anda di port 5900. Pastikan Anda mencapai IP host dan bukan IP VM. VNC Anda akan terhubung ke output video VM Anda dan Anda dapat melanjutkan instalasi.

Kemana Selanjutnya??

Dari sini Anda dapat mencoba menjeda, menghentikan, dan menghapus VM. Anda juga dapat memodifikasi infrastruktur yang mendasarinya dengan menambahkan kumpulan untuk penyimpanan dan mengonfigurasi jaringan jembatan. Semua file konfigurasi, untuk masing-masing VM, antarmuka jaringan, dan kumpulan penyimpanan disimpan di /etc/libvirt/ dan /etc/libvirt/qemu.

Terkadang Anda harus secara fisik menghapus file hard disk yang disimpan di /lib/libvirt/images bahkan setelah menghapus VM dari libvirt. Untuk mengotomatisasi hal-hal lebih lanjut, coba impor gambar qcow2 yang sebagian besar distribusi linux seperti Ubuntu dan CentOS. Ini memiliki OS yang sudah diinstal di dalamnya.

Kesimpulan

Menyiapkan ini tidak semudah menyiapkan VirtualBox dan alasan di balik ini bermacam-macam. Sebagian besar tumpukan rumit karena dirancang untuk menjadi modular dan sangat skalabel. Itu tidak membuat asumsi apa pun tentang di mana Anda menjalankan VM. Lingkungan dapat berupa desktop pribadi atau pusat data. Bekerja dengan GUI dapat membantu mengurangi kerumitan ini sampai batas tertentu. Namun, sistem ini dirancang untuk bekerja dengan REST API untuk terhubung ke sistem penagihan organisasi Anda, sistem pemantauan, dll. Mereka hampir tidak pernah disentuh oleh manusia setelah dikerahkan.

Konon, otomatisasi adalah nama permainan dengan libvirt dan qemu-kvm. Baca dengan teliti melalui dokumentasi resmi dan tulis skrip keren Anda sendiri untuk menjalankan armada VM dan beri tahu kami jika Anda menganggap tutorial ini berguna.

OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...
Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...