Panduan langkah demi langkah ini menjelaskan apa itu KVM, dan cara menginstal dan mengkonfigurasi KVM di sistem operasi CentOS 8 Linux.
Panduan ini secara resmi diuji dalam edisi server minimal CentOS 8. Namun, itu juga harus bekerja di RHEL 8 dan klonnya seperti AlmaLinux 8 dan Rocky Linux 8.
Apa itu KVM?
KVM , kependekan dari K V . berbasis ernel irtual M achine, adalah modul kernel FreeBSD dan Linux yang memungkinkan kernel untuk bertindak sebagai hypervisor.
Mulai dari kernel versi 2.6.20, KVM digabung ke kernel utama Linux.
Dengan menggunakan KVM, Anda dapat dengan mudah menyiapkan lingkungan virtualisasi di mesin Linux dan menerapkan berbagai sistem operasi tamu termasuk Linux, Windows, BSD, Mac OS, dan banyak lagi.
Sekarang mari kita lihat cara menginstal dan mengkonfigurasi KVM di CentOS 8 Linux.
Prasyarat
Sebelum menginstal KVM, pastikan terlebih dahulu sistem Anda mendukung virtualisasi perangkat keras. Kami telah mendokumentasikan beberapa cara berbeda untuk mengidentifikasi apakah sistem Linux mendukung Virtualisasi dalam panduan berikut.
- Cara Mengetahui Apakah CPU Mendukung Teknologi Virtualisasi (VT)
Jika sistem Anda mendukung virtualisasi perangkat keras, lanjutkan langkah-langkah berikut.
1. Instal Dan Konfigurasi KVM Di Server CentOS 8
Untuk tujuan panduan ini, saya akan menggunakan sistem berikut:
Server virtualisasi KVM:
- OS – Server minimal CentOS 8 (Tanpa GUI)
- Alamat IP :192.168.225.53/24
Meskipun diuji pada CentOS 8, panduan ini juga harus baik-baik saja di RHEL 8.
1.1. Instal KVM di CentOS 8
Catatan: Semua perintah yang diberikan melalui tutorial ini harus dijalankan sebagai root
pengguna. Jika Anda telah masuk sebagai pengguna biasa, tambahkan sudo
di depan semua perintah berikan di bawah ini.
Instal Kvm dan semua dependensi yang diperlukan untuk menyiapkan lingkungan virtualisasi pada server CentOS 8 Anda menggunakan perintah sebagai root
pengguna:
# dnf install qemu-kvm libvirt virt-install
Di sini,
- emu-kvm - Metapackage QEMU untuk dukungan KVM (yaitu virtualisasi penuh QEMU pada perangkat keras x86),
- libvirt - program untuk perpustakaan libvirt,
- pasang-virt - program untuk membuat dan mengkloning mesin virtual.
Setelah KVM diinstal, aktifkan dan mulai libvertd
layanan (Jika belum dimulai):
# systemctl aktifkan libvirtd
# systemctl start libvirtd
Anda juga dapat menggabungkan kedua perintah dan menjalankannya sebagai satu baris seperti di bawah ini:
# systemctl aktifkan --sekarang libvirtd
Periksa status layanan libvirtd dengan perintah:
# systemctl status libvirtd
Contoh keluaran:
● libvirtd.service - daemon virtualisasi Dimuat:dimuat (/usr/lib/systemd/system/libvirtd.service; diaktifkan; preset vendor:aktifkan> Aktif:aktif (berjalan) sejak Rabu 15-07-2020 14:27:32 WIB; 5 detik yang lalu Dokumen:man:libvirtd(8) https://libvirt.org PID Utama:1097 (libvirtd) Tugas:17 (batas:32768) Memori:57.0M CGroup:/system.slice/libvirtd.service 1097 / usr/sbin/libvirtd 15 Juli 14:27:28 centos8.ostechnix.lan systemd[1]:Memulai daemon Virtualisasi...15 Juli 14:27:32 centos8.ostechnix.lan systemd[1]:Memulai daemon Virtualisasi.Layanan libvertd aktif dan berjalan!
Verifikasi apakah modul KVM dimuat:
# lsmod | grep kvmContoh keluaran:
kvm_intel 294912 0kvm 786432 1 kvm_intelirqbypass 16384 1 kvmBesar! Modul KVM dimuat. Mari kita buat jembatan jaringan sekarang.
1.2. Siapkan jaringan jembatan dengan KVM di CentOS
Jaringan yang dijembatani berbagi antarmuka jaringan nyata dari komputer host dengan VM lain untuk terhubung ke jaringan luar. Oleh karena itu setiap VM dapat mengikat secara langsung ke
IPv4
yang tersedia atauIPv6
alamat, seperti komputer fisik.Secara default KVM menyiapkan jembatan virtual pribadi, sehingga semua VM dapat berkomunikasi satu sama lain, di dalam komputer host.
Ini menyediakan subnet dan DHCP sendiri untuk mengonfigurasi jaringan tamu dan menggunakan NAT untuk mengakses jaringan host.
Lihat alamat IP antarmuka virtual default KVM menggunakan
ip
perintah:# ip aContoh keluaran:
1:lo:mtu 65536 status noqueue qdisc grup UNKNOWN default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 cakupan host lo valid_lft selamanya prefer_lft selamanya inet6 ::1/128 host cakupan valid_lft selamanya preferen_lft selamanya2:enp0s3: mtu 1500 qdisc fq_codel status grup UP default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 ruang lingkup global dynamic noprefixroute enp0s3 valid_lft 42217detik prefer_lft 42217detik inet6 2409:4072:918:98cf :ad3b:b969:8ec8:f9c7/64 lingkup global noprefixroute valid_lft selamanya prefer_lft selamanya inet6 fe80::b404:4d52:8bee:18bf/64 tautan lingkup noprefixroute valid_lft selamanya prefer_lft selamanya3:enp0s8: UP,LOW 1500 qdisc status fq_codel grup UP default qlen 1000 tautan/eter 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP grup default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:virbr0 : mtu 1500 qdisc status noqueue TURUN default grup qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 cakupan global virbr0 valid_lft selamanya prefered_lft selamanya6:virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 status TURUN default grup qlen 1000 tautan/eter 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff Seperti yang Anda lihat, jaringan default KVM
virbr0
menggunakan192.168.122.1/24
Alamat IP. Semua VM akan menggunakan alamat IP di192.168.122.0/24
Rentang IP dan OS host dapat dijangkau di192.168.122.1
.Anda harus dapat ssh ke OS host (di
192.168.122.1
) dari dalam OS tamu dan gunakanscp
untuk menyalin file bolak-balik.Tidak apa-apa jika Anda hanya mengakses VM di dalam dari Host itu sendiri. Namun Anda tidak dapat mengakses VM dari sistem jarak jauh lain di jaringan.
Karena mereka menggunakan rentang IP yang berbeda yaitu
192.168.225.0/24
dalam hal ini. Untuk mengakses VM dari host jarak jauh lainnya, kita harus menyiapkan jembatan publik yang berjalan di jaringan host dan menggunakan server DHCP eksternal apa pun yang ada di jaringan host.Untuk menempatkan ini dalam istilah awam, kita akan membuat semua VM menggunakan seri IP yang sama yang digunakan oleh sistem host.
Sebelum menyiapkan jaringan penghubung publik, kita harus menonaktifkan Netfilter untuk alasan kinerja dan keamanan . Netfilter saat ini diaktifkan pada bridge secara default.
Untuk menonaktifkan netfilter, buat file bernama
/etc/sysctl.d/bridge.conf
:# vi /etc/sysctl.d/bridge.confTambahkan baris berikut:
net.bridge.bridge-nf-call-ip6tables=0net.bridge.bridge-nf-call-iptables=0net.bridge.bridge-nf-call-arptables=0Simpan dan tutup file.
Kemudian buat file lain bernama
/etc/udev/rules.d/99-bridge.rules
:# vi /etc/udev/rules.d/99-bridge.rulesTambahkan baris berikut:
TINDAKAN=="tambahkan", SUBSYSTEM=="modul", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"Ini akan menyetel tanda yang diperlukan untuk menonaktifkan netfilter pada jembatan di tempat yang sesuai pada permulaan sistem. Simpan dan tutup file. Mulai ulang sistem Anda untuk menerapkan perubahan ini.
Selanjutnya, kita harus menonaktifkan jaringan default yang diinstal KVM untuk dirinya sendiri.
Temukan nama antarmuka jaringan default KVM menggunakan perintah "ip link":
# ip linkContoh keluaran:
1:lo:mtu 65536 status qdisc noqueue mode UNKNOWN default grup DEFAULT qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc status fq_codel mode UP DEFAULT grup default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc status fq_codel UP mode DEFAULT grup default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc status fq_codel mode UP DEFAULT grup default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff5:virbr0 : mtu 1500 qdisc status noqueue mode DOWN default grup DEFAULT qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff6 :virbr0-nic : mtu 1500 qdisc fq_codel master virbr0 status DOWN mode default grup DEFAULT qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff Seperti yang Anda lihat pada output di atas, entri
virbr0
danvirbr0-nic
adalah jaringan KVM.Mari kita hapus jaringan KVM default dengan perintah:
# default virsh net-destroyContoh keluaran:
Default jaringan dimusnahkanHapus definisi jaringan default dengan perintah:
# virsh net-undefine defaultContoh keluaran:
Default jaringan tidak ditentukanJika perintah di atas tidak berfungsi karena alasan apa pun, Anda dapat menggunakan perintah ini untuk menonaktifkan dan tidak menentukan jaringan default KVM:
# ip link hapus virbr0 type bridge# ip link hapus virbr0-nicSekarang jalankan
ip link
sekali lagi untuk memverifikasi apakahvirbr0
danvirbr0-nic
antarmuka sebenarnya dihapus:# ip linkContoh keluaran:
1:lo:mtu 65536 status qdisc noqueue mode UNKNOWN default grup DEFAULT qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc status fq_codel mode UP DEFAULT grup default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff :ff3:enp0s8: mtu 1500 qdisc status fq_codel UP mode DEFAULT grup default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff :ff4:enp0s9: mtu 1500 qdisc status fq_codel mode UP DEFAULT grup default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff :ff Nah, jaringan default KVM hilang.
Sekarang, mari kita siapkan jembatan publik KVM untuk digunakan saat membuat VM baru.
Buat antarmuka penghubung baru bernama
br0
menggunakannmcli
perintah:# nmcli connection tambahkan tipe bridge autoconnect yes con-name br0 ifname br0Setel alamat IP untuk antarmuka jembatan:
# koneksi nmcli memodifikasi br0 ipv4.addresses 192.168.225.53/24 manual metode ipv4.Setel Gateway untuk antarmuka jembatan:
# koneksi nmcli memodifikasi br0 ipv4.gateway 192.168.225.1Setel DNS untuk antarmuka jembatan:
# koneksi nmcli memodifikasi br0 ipv4.dns 192.168.225.1Selanjutnya kita perlu menghapus salah satu kartu antarmuka jaringan Anda dan menambahkannya sebagai slave ke bridge.
Harap dicatat bahwa jika server Anda hanya memiliki satu NIC dan Anda mengakses server melalui SSH, koneksi Anda akan dihentikan setelah menghapus NIC. Saya menyarankan Anda untuk melakukan langkah-langkah berikut di konsol server Anda.
Sebagai contoh, saya akan menambahkan
enp0s8
antarmuka sebagai budak dari antarmuka jembatanbr0
.Untuk menghapus antarmuka jaringan
enp0s8
, jalankan:# koneksi nmcli del enp0s8Ganti
enp0s8
dengan kartu jaringan Anda sendiri.Catatan: Jangan gunakan kartu antarmuka jaringan nirkabel untuk jembatan. Kebanyakan interlacing nirkabel tidak mendukung bridging. Selalu gunakan antarmuka jaringan kabel untuk konektivitas tanpa batas!
Selanjutnya, tambahkan
enp0s8
ke jembatan menggunakan perintah:# koneksi nmcli tambahkan tipe bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0Di sini, antarmuka jaringan jembatan
br0
dilampirkan ke antarmuka jaringan hostenp0s8
. Ganti nama antarmuka jaringan di atas yang sesuai dengan jaringan Anda.Mulai ulang pengelola jaringan untuk menerapkan perubahan:
# systemctl restart NetworkManagerJika memungkinkan, lebih baik untuk me-restart sistem Anda:
# rebootMasuk ke server Anda dan periksa apakah alamat IP telah ditetapkan ke antarmuka jembatan:
$ ip aContoh keluaran:
1:lo:mtu 65536 status noqueue qdisc grup UNKNOWN default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 cakupan host lo valid_lft selamanya prefer_lft selamanya inet6 ::1/128 host cakupan valid_lft selamanya preferen_lft selamanya2:enp0s3: mtu 1500 qdisc fq_codel status grup BAWAH default qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff3:enp0s8 : mtu 1500 qdisc fq_codel master br0 status grup UP default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel status UP grup default qlen 1000 tautan/eter 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:br0 : mtu 1500 qdisc status noqueue UP grup default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff inet 192.168.225.53/24 brd 192.168.225.255 lingkup global noprefixroute br0 valid_lft selamanya lebih disukai_lft selamanya inet6 2409:4072:6084:198:df03:d9ed:62eb:df34/64 lingkup global noprefixroute valid_lft selamanya preferen_lft selamanya inet6 fe80::e8c8:e98b:7fef link lingkup noprefixroute valid_lft selamanya prefered_lft selamanya Seperti yang Anda lihat pada output di atas, antarmuka jaringan yang dijembatani
br0
diberikan dengan alamat IP192.168.225.53
danenp0s8
entri sekarang memilikimaster br0
masuk. Artinyaenp0s8
milik jembatan.Anda juga dapat menggunakan
bridge
perintah untuk menampilkan status jembatan:# tautan jembatan tampilkan br0 3:enp0s8:mtu 1500 master br0 state forwarding priority 32 cost 100 Kami telah berhasil membuat antarmuka jembatan dan aktif. Kita perlu melakukan satu hal terakhir.
Kita harus mengkonfigurasi KVM untuk menggunakan antarmuka jembatan ini sebagai antarmuka default. Untuk melakukannya, buat
XML
file bernamahost-bridge.xml
:# vi host-bridge.xmlTambahkan baris berikut:
host-bridge Jalankan perintah berikut untuk memulai jembatan yang baru dibuat dan menjadikannya sebagai jembatan default untuk VM: # virsh net-define host-bridge.xml# virsh net-start host-bridge# virsh net-autostart host-bridgeVerifikasi apakah jembatan aktif dan mulai menggunakan perintah:
# virsh net-list --allContoh keluaran:
Nama Status Autostart Persistent -------------------------------------------- ----- host-bridge aktif ya yaSelamat! Kami telah berhasil menginstal dan mengonfigurasi KVM di server tanpa kepala CentOS 8.
2. Membuat dan mengelola mesin tamu KVM
Kami dapat membuat dan mengelola VM baik dari baris perintah atau menggunakan alat manajemen KVM seperti Cockpit dan Virt-manager. Lihat panduan berikut untuk detail selengkapnya.
- Cara Mengelola Mesin Virtual KVM Dengan Program Virsh
- Mengelola Mesin Virtual KVM Menggunakan Cockpit Web Console
- Cara Mengelola Mesin Virtual KVM Dengan Virt-Manager
3. Aktifkan Akses Konsol Virsh Untuk Mesin Virtual
Setelah membuat tamu KVM, saya dapat mengaksesnya melalui SSH, klien VNC, Virt-viewer, Virt-manager dan konsol web Cockpit dll. Tapi saya tidak dapat mengaksesnya menggunakan
virsh console
memerintah. Untuk mengakses tamu KVM menggunakan "konsol virsh", lihat panduan berikut:
- Cara Mengaktifkan Akses Konsol Virsh Untuk Tamu KVM
Panduan terkait KVM lainnya di blog ini
- Instal Dan Konfigurasi KVM Di Server Tanpa Kepala Ubuntu 20.04
- Instal Dan Konfigurasi KVM Di OpenSUSE Tumbleweed
- Membuat Mesin Virtual KVM Menggunakan Gambar Qcow2 Di Linux
- Cara Migrasi VM Virtualbox Ke VM KVM Di Linux
- Aktifkan Dukungan UEFI Untuk Mesin Virtual KVM Di Linux
- Cara Mengaktifkan Virtualisasi Bersarang Di KVM Di Linux
- Menampilkan Statistik Sistem Virtualisasi Dengan Virt-top Di Linux
- Cara Menemukan Alamat IP Mesin Virtual KVM
- Cara Mengganti Nama Mesin Virtual Tamu KVM
- Mengakses Dan Memodifikasi Gambar Disk Mesin Virtual Dengan Libguestfs
- Buat Gambar Mesin Virtual dengan Cepat Dengan Pembuat Virt
- Cara Menyelamatkan Mesin Virtual Dengan Virt-rescue
- Cara Memperpanjang Ukuran Disk Mesin Virtual KVM Di Linux
- Siapkan Folder Bersama Antara Host dan Tamu KVM
- Cara Mengubah Lokasi Kumpulan Penyimpanan Default KVM Libvirt
- [Terpecahkan] Tidak dapat mengakses file penyimpanan, Izin ditolak Kesalahan di KVM Libvirt
- Cara Mengekspor Dan Mengimpor Mesin Virtual KVM Di Linux
Kesimpulan
Dalam panduan ini, kami membahas cara menginstal dan mengkonfigurasi KVM di edisi server CentOS 8.
Kami juga melihat cara membuat dan mengelola mesin virtual KVM dari baris perintah menggunakan
virsh
alat dan menggunakan alat GUI bernama Cockpit dan Virt-manager.Terakhir, kami melihat cara mengaktifkan akses konsol virsh untuk mesin virtual KVM.
Pada tahap ini, Anda harus memiliki lingkungan virtualisasi yang berfungsi penuh di server CentOS 8 Anda.
Cent OS