Tento průvodce krok za krokem vysvětluje, co je KVM a jak nainstalovat a nakonfigurovat KVM v operačním systému CentOS 8 Linux.
Tato příručka je oficiálně testována v minimální serverové edici CentOS 8. Měl by však fungovat také v RHEL 8 a jeho klonech jako AlmaLinux 8 a Rocky Linux 8.
Co je KVM?
KVM , zkratka pro K V založené na ernel irtuální M achine, je modul jádra FreeBSD a Linuxu, který umožňuje jádru fungovat jako hypervizor.
Od verze jádra 2.6.20 je KVM začleněno do hlavní řady jádra Linuxu.
Pomocí KVM můžete snadno nastavit virtualizační prostředí v počítači se systémem Linux a nasadit širokou škálu hostovaných operačních systémů včetně Linuxu, Windows, BSD, Mac OS a mnoha dalších.
Nyní se podívejme, jak nainstalovat a nakonfigurovat KVM v CentOS 8 Linux.
Předpoklady
Před instalací KVM se nejprve ujistěte, že váš systém podporuje virtualizaci hardwaru. V následující příručce jsme zdokumentovali několik různých způsobů, jak zjistit, zda systém Linux podporuje virtualizaci.
- Jak zjistit, zda procesor podporuje technologii virtualizace (VT)
Pokud váš systém podporuje virtualizaci hardwaru, pokračujte podle následujících kroků.
1. Nainstalujte a nakonfigurujte KVM na serveru CentOS 8
Pro účely této příručky budu používat následující systém:
Virtualizační server KVM:
- OS – CentOS 8 minimální server (bez GUI)
- IP adresa :192.168.225.53/24
I když je testován na CentOS 8, tato příručka by měla fungovat dobře i na RHEL 8.
1.1. Nainstalujte KVM v CentOS 8
Poznámka: Všechny příkazy zadané v tomto tutoriálu by měly být spouštěny jako root
uživatel. Pokud jste se přihlásili jako normální uživatel, přidejte sudo
před všemi příkazy uveďte níže.
Nainstalujte Kvm a všechny požadované závislosti pro nastavení virtualizačního prostředí na vašem serveru CentOS 8 pomocí příkazu jako root
uživatel:
# dnf install qemu-kvm libvirt virt-install
Tady,
- emu-kvm - metabalíček QEMU pro podporu KVM (tj. plná virtualizace QEMU na hardwaru x86),
- libvirt - programy pro knihovnu libvirt,
- virt-install - programy pro vytváření a klonování virtuálních strojů.
Jakmile je KVM nainstalováno, povolte a spusťte libvertd
služba (Pokud již není spuštěna):
# systemctl povolit libvirtd
# systemctl start libvirtd
Můžete také zkombinovat oba příkazy a spustit je jako jeden řádek, jak je uvedeno níže:
# systemctl enable --now libvirtd
Zkontrolujte stav služby libvirtd příkazem:
# systemctl status libvirtd
Ukázkový výstup:
● libvirtd.service – Virtualizační démon Načteno:načteno (/usr/lib/systemd/system/libvirtd.service; povoleno; přednastaveno dodavatelem:enable> Aktivní:aktivní (spuštěno) od středy 2020-07-15 14:27:32 IST; Před 5 s Dokumenty:man:libvirtd(8) https://libvirt.org Hlavní PID:1097 (libvirtd) Úkoly:17 (limit:32768) Paměť:57,0M CGroup:/system.slice/libvirtd.service └─1097 / usr/sbin/libvirtd 15. července 14:27:28 centos8.ostechnix.lan systemd[1]:Spouštění démona virtualizace... 15. července 14:27:32 centos8.ostechnix.lan systemd[1]:Spouštění démona virtualizace.Služba libvertd je v provozu!
Ověřte, zda jsou načteny moduly KVM:
# lsmod | grep kvmUkázkový výstup:
kvm_intel 294912 0kvm 786432 1 kvm_intelirqbypass 16384 1 kvmSkvělý! Jsou načteny moduly KVM. Pojďme nyní vytvořit síťový most.
1.2. Nastavte síťový most pomocí KVM v CentOS
Přemostěná síť sdílí skutečné síťové rozhraní hostitelského počítače s jinými virtuálními počítači pro připojení k vnější síti. Každý virtuální počítač se tedy může vázat přímo na jakýkoli dostupný
IPv4
neboIPv6
adresy, stejně jako fyzický počítač.Ve výchozím nastavení KVM nastavuje soukromý virtuální most, takže všechny virtuální počítače mohou mezi sebou komunikovat v rámci hostitelského počítače.
Poskytuje svou vlastní podsíť a DHCP pro konfiguraci sítě hosta a pro přístup k hostitelské síti používá NAT.
Podívejte se na IP adresu výchozích virtuálních rozhraní KVM pomocí
ip
příkaz:# ip aUkázkový výstup:
1:lo:mtu 65536 stav qdisc noqueue NEZNÁMÝ výchozí skupina qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:0 hostitel rozsahu inet 127.0.0.1/8 lo valid_lft navždy preferovaný_lft navždy inet6 ::1/128 hostitel rozsahu valid_lft navždy preferovaný_lft navždy2:enp0s3: mtu default 1500 qdisc UP qether_10l0l0l0l0l skupina fqether 08:00:27:b7:3a:84 brd ff:ff:ff:ff:ff:ff inet 192.168.225.52/24 brd 192.168.225.255 rozsah globální dynamická noprefixroute enp0s3 valid_lft 42221724sec preferovaná :ad3b:b969:8ec8:f9c7/64 rozsah globální noprefixroute valid_lft navždy preferovaný_lft navždy inet6 fe80::b404:4d52:8bee:18bf/64 odkaz na rozsah noprefixroute valid_lft navždy preferovaný_lft, navždy3:enpLOWULTCUP_AST,AST> 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:virbr0 192.168.122.1/24 brd 192.168.122.255 rozsah globální virbr0 platný_lft navždy preferovaný_lft navždy6:virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 stav DOWN výchozí skupina qlen 1000 link/ether:002:554cdb5 502:5 ff:ff:ff:ff:ff Jak vidíte, výchozí síť KVM
virbr0
používá192.168.122.1/24
IP adresa. Všechny virtuální počítače budou používat IP adresu v192.168.122.0/24
Rozsah IP adres a hostitelský operační systém budou dosažitelné na192.168.122.1
.Měli byste být schopni připojit ssh do hostitelského OS (na adrese
192.168.122.1
) zevnitř hostujícího OS a použijtescp
pro kopírování souborů tam a zpět.Je v pořádku, pokud k virtuálním počítačům uvnitř přistupujete pouze ze samotného hostitele. K virtuálním počítačům však nemůžete přistupovat z jiných vzdálených systémů v síti.
Protože používají jiný rozsah IP adres, např.
192.168.225.0/24
v mém případě. Abychom mohli přistupovat k virtuálním počítačům z jiných vzdálených hostitelů, musíme nastavit veřejný most, který běží v hostitelské síti a používá jakýkoli externí server DHCP v hostitelské síti.Abychom to řekli laicky, připravíme všechny VM tak, aby používaly stejnou řadu IP, jakou používá hostitelský systém.
Před nastavením veřejné přemostěné sítě bychom měli deaktivovat Netfilter z důvodů výkonu a zabezpečení . Netfilter je aktuálně na mostech ve výchozím nastavení povolen.
Chcete-li zakázat síťový filtr, vytvořte soubor s názvem
/etc/sysctl.d/bridge.conf
:# vi /etc/sysctl.d/bridge.confPřidejte následující řádky:
net.bridge.bridge-nf-call-ip6tables=0net.bridge.bridge-nf-call-iptables=0net.bridge.bridge-nf-call-arptables=0Uložte a zavřete soubor.
Potom vytvořte další soubor s názvem
/etc/udev/rules.d/99-bridge.rules
:# vi /etc/udev/rules.d/99-bridge.rulesPřidejte následující řádek:
ACTION=="add", SUBSYSTEM=="modul", KERNEL=="br_netfilter", RUN+="/sbin/sysctl -p /etc/sysctl.d/bridge.conf"Tímto se nastaví potřebné příznaky pro deaktivaci síťového filtru na mostech na příslušném místě při spouštění systému. Uložte a zavřete soubor. Restartujte systém aby se tyto změny projevily.
Dále bychom měli zakázat výchozí síť, kterou si KVM nainstaloval.
Najděte název výchozích síťových rozhraní KVM pomocí příkazu "ip link":
# ip odkazUkázkový výstup:
1:lo:mtu 65536 stav qdisc noqueue UNKNOWN režim VÝCHOZÍ skupina výchozí qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff::ff3:enp0s8: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff::ff4:enp0s9: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ffff:ff:ff :ff5:virbr0 : mtu 1500 qdisc noqueue state DOWN mode DEFAULT group 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 stav DOWN režim DEFAULT skupina výchozí qlen 1000 link/ether 52:54:00:5b:a4:cd brd ff:ff:ff:ff:ff:ff Jak vidíte ve výše uvedeném výstupu, položky
virbr0
avirbr0-nic
jsou sítě KVM.Odebereme výchozí síť KVM příkazem:
# virsh net-destroy defaultUkázkový výstup:
Výchozí nastavení sítě bylo zničenoZrušte definici výchozí sítě příkazem:
# virsh net-undefine defaultUkázkový výstup:
Výchozí nastavení sítě bylo nedefinovánoPokud výše uvedené příkazy z nějakého důvodu nefungují, můžete pomocí těchto příkazů zakázat a zrušit definici výchozí sítě KVM:
# ip link delete bridge typu virbr0# ip link delete virbr0-nicNyní spusťte
ip link
znovu pro ověření, zdavirbr0
avirbr0-nic
rozhraní jsou ve skutečnosti odstraněna:# ip odkazUkázkový výstup:
1:lo:mtu 65536 stav qdisc noqueue UNKNOWN režim VÝCHOZÍ skupina výchozí qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00 :002:enp0s3: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:b7:3a:84 brd ff:ff:ff::ff3:enp0s8: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff::ff4:enp0s9: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ffff:ff:ff :ff Výchozí sítě KVM jsou pryč.
Nyní nastavíme veřejný most KVM, který se použije při vytváření nového virtuálního počítače.
Vytvořte nové přemostěné rozhraní s názvem
br0
pomocínmcli
příkaz:# nmcli connection add type bridge autoconnect yes con-name br0 ifname br0Nastavte IP adresu pro rozhraní mostu:
# nmcli připojení upravit br0 ipv4.addresses 192.168.225.53/24 ipv4.manuál k metoděNastavte bránu pro rozhraní mostu:
# nmcli připojení upravit br0 ipv4.gateway 192.168.225.1Nastavte DNS pro rozhraní mostu:
# nmcli připojení upravit br0 ipv4.dns 192.168.225.1Dále musíme odstranit jednu z vašich karet síťového rozhraní a přidat ji jako slave k mostu.
Vezměte prosím na vědomí, že pokud má váš server pouze jednu NIC a přistupujete k serveru přes SSH, vaše připojení bude po odebrání NIC ukončeno. Doporučuji vám provést následující kroky v konzole vašeho serveru.
Například přidám
enp0s8
rozhraní jako slave k rozhraní mostubr0
.Chcete-li odebrat síťové rozhraní
enp0s8
, spustit:# nmcli připojení k enp0s8Nahraďte
enp0s8
s vlastní síťovou kartou.Poznámka: Pro mosty nepoužívejte karty bezdrátového síťového rozhraní. Většina bezdrátových prokládání nepodporuje přemostění. Pro bezproblémové připojení vždy používejte kabelová síťová rozhraní!
Dále přidejte
enp0s8
na most pomocí příkazu:# nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0Zde je síťové rozhraní mostu
br0
je připojen k síťovému rozhraní hostiteleenp0s8
. Nahraďte výše uvedené názvy síťových rozhraní, které odpovídají vaší síti.Restartujte správce sítě, aby se změny projevily:
# systemctl restartujte NetworkManagerPokud je to možné, je lepší restartovat systém:
# restartovatPřihlaste se ke svému serveru a zkontrolujte, zda byla IP adresa přiřazena k rozhraní mostu:
$ ip aUkázkový výstup:
1:lo:mtu 65536 stav qdisc noqueue NEZNÁMÝ výchozí skupina qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:0 inet 127.0.0.1/8 rozsah hostitel lo valid_lft navždy preferovaný_lft navždy inet6 ::1/128 rozsah hostitel valid_lft navždy preferovaný_lft navždy2:enp0s3: mtu 1500 qdisc fq_codel stav 00 link DOWN výchozí skupina:00 výchozí skupina 27:b7:3a:84 brd ff:ff:ff:ff:ff:ff3:enp0s8 : mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 08:00:27:2a:be:53 brd ff:ff:ff:ff:ff:ff4:enp0s9: mtu 1500 qdisc fq_codel state UP výchozí skupina qlen 1000 link/ether 08:00:27:41:91:4d brd ff:ff:ff:ff:ff:ff5:br0 : mtu 1500 qdisc noqueue state UP group 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 rozsah globální noprefixroute br0 valid_lft navždy preferovaný_lft navždy inet6 2409:4072:6084:198:df03:d9ed:62eb:df34/64 rozsah globální noprefixroute preferovaný_84lft forever:9e590 preferovaný_lft navždy:84lft navždy:rozsah odkaz noprefixroute valid_lft navždy preferovaný_lft navždy Jak vidíte na výše uvedeném výstupu, přemostěné síťové rozhraní
br0
je přiřazena IP adresa192.168.225.53
aenp0s8
záznam má nynímaster br0
vstup. Znamená to, žeenp0s8
patří mostu.Můžete také použít
bridge
příkaz pro zobrazení stavu mostu:# bridge link show br0 3:enp0s8:mtu 1500 master br0 state forwarding priority 32 cost 100 Úspěšně jsme vytvořili rozhraní mostu a je aktivní. Musíme udělat poslední věc.
Měli bychom nakonfigurovat KVM tak, aby používal toto rozhraní mostu jako výchozí rozhraní. Chcete-li tak učinit, vytvořte
XML
soubor s názvemhost-bridge.xml
:# vi host-bridge.xmlPřidejte následující řádky:
host-bridge Spuštěním následujících příkazů spusťte nově vytvořený most a nastavte jej jako výchozí most pro virtuální počítače:
# virsh net-define host-bridge.xml# virsh net-start host-bridge# virsh net-autostart host-bridgeOvěřte, zda je most aktivní a spustil se pomocí příkazu:
# virsh net-list --allUkázkový výstup:
Trvalé automatické spuštění stavu názvu------------------------------------------ ----- host-bridge aktivní ano anoGratulujeme! Úspěšně jsme nainstalovali a nakonfigurovali KVM na bezhlavém serveru CentOS 8.
2. Vytvářejte a spravujte hostující počítače KVM
Můžeme vytvářet a spravovat VM buď z příkazového řádku nebo pomocí jakýchkoli nástrojů pro správu KVM, jako je Cockpit a Virt-manager. Další podrobnosti naleznete v následujících příručkách.
- Jak spravovat virtuální stroje KVM pomocí programu Virsh
- Správa virtuálních strojů KVM pomocí webové konzole Cockpit
- Jak spravovat virtuální počítače KVM pomocí nástroje Virt-Manager
3. Povolit přístup ke konzole Virsh pro virtuální stroje
Po vytvoření hostů KVM k nim mohu přistupovat přes SSH, VNC klienta, Virt-viewer, Virt-manager a webovou konzoli Cockpit atd. Ale nemohl jsem k nim přistupovat pomocí virsh console
příkaz. Chcete-li získat přístup k hostům KVM pomocí „virsh console“, postupujte podle následujícího průvodce:
- Jak povolit přístup ke konzole Virsh pro hosty KVM
Další příručky související s KVM na tomto blogu
- Instalace a konfigurace KVM v Ubuntu 20.04 Headless Server
- Nainstalujte a nakonfigurujte KVM v OpenSUSE Tumbleweed
- Vytvořte virtuální počítač KVM pomocí obrazu Qcow2 v systému Linux
- Jak migrovat virtuální počítače Virtualbox na virtuální počítače KVM v systému Linux
- Povolte podporu UEFI pro virtuální počítače KVM v systému Linux
- Jak povolit vnořenou virtualizaci v KVM v Linuxu
- Zobrazení statistik virtualizačních systémů pomocí Virt-top v Linuxu
- Jak najít IP adresu virtuálního počítače KVM
- Jak přejmenovat hostující virtuální počítač KVM
- Přístup k obrazům disku virtuálního počítače a jejich úprava pomocí Libguestfs
- Rychle vytvářejte obrazy virtuálních strojů pomocí Virt-builderu
- Jak zachránit virtuální stroje pomocí Virt-Rescue
- Jak rozšířit velikost disku virtuálního počítače KVM v systému Linux
- Nastavte sdílenou složku mezi hostitelem KVM a hostem
- Jak změnit výchozí umístění fondu úložiště KVM Libvirt
- [Vyřešeno] Nelze získat přístup k souboru úložiště, oprávnění odepřeno Chyba v KVM Libvirt
- Jak exportovat a importovat virtuální stroje KVM v systému Linux
Závěr
V této příručce jsme probrali, jak nainstalovat a nakonfigurovat KVM v serverové edici CentOS 8.
Podívali jsme se také na to, jak vytvořit a spravovat virtuální stroje KVM z příkazového řádku pomocí virsh
a pomocí nástrojů GUI s názvem Cockpit a Virt-manager.
Nakonec jsme viděli, jak povolit virsh konzolový přístup pro virtuální stroje KVM.
V této fázi byste měli mít na svém serveru CentOS 8 plně funkční virtualizační prostředí.