Virsh , zkratka pro Vir tual Sh ell, je uživatelské rozhraní příkazového řádku pro správu virtuálních hostujících počítačů. Virsh vám umožňuje vytvářet, vypisovat, upravovat, spouštět, restartovat, zastavovat, pozastavovat, obnovovat, vypínat a odstraňovat virtuální počítače. V současné době podporuje KVM, LXC, Xen, QEMU, OpenVZ, VirtualBox a VMware ESX. V této příručce budeme diskutovat o tom, jak spravovat KVM virtuální stroje s uživatelským rozhraním pro správu Virsh v Linuxu.
Ujistěte se, že máte na svém počítači se systémem Linux nainstalovaný nástroj KVM a Virsh. Následující průvodce vysvětluje, jak nainstalovat KVM na systémy založené na DEB a RPM.
- Instalace a konfigurace KVM v Ubuntu 20.04 Headless Server
- Nainstalujte a nakonfigurujte KVM na serveru CentOS 8
- Nainstalujte a nakonfigurujte KVM v OpenSUSE Tumbleweed
1. Správa virtuálních počítačů KVM pomocí příkazu Virsh
Pokud s Virsh a KVM začínáte, je lepší začít čtením nápovědy. Poskytne základní představu o tom, jak používat Virsh.
1.1. Získání nápovědy
Chcete-li zobrazit seznam dostupných příkazů spolu se stručným popisem, zadejte následující příkaz:
$ virsh help
Uvidíte rozsáhlý seznam dostupných příkazů virsh pro správu virtuálních strojů KVM z příkazového řádku.

Nemusíte se vše učit nazpaměť. Stačí si přečíst popis příkazu, který chcete spustit, a použít jej.
Příkazy jsou seskupeny do následujících sekcí:
- Správa domény,
- Monitorování domény,
- Hostitel a hypervizor,
- Kontrolní bod,
- Rozhraní,
- Síťový filtr,
- Vytváření sítí
- Zařízení uzlu,
- Tajné,
- Snímek,
- Zálohování,
- Soubor úložiště,
- Velikost úložiště,
- Samotný Virsh.
Každá sekce obsahuje příkazy související s prováděním konkrétní sady úkolů. Můžete zobrazit část nápovědy skupiny, například Sítě , jako níže:
$ virsh help Networking
Uvidíte příkazy související s prováděním síťových úloh:
Networking (help keyword 'network'): net-autostart autostart a network net-create create a network from an XML file net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file net-destroy destroy (stop) a network net-dhcp-leases print lease info for a given network net-dumpxml network information in XML net-edit edit XML configuration for a network net-event Network Events net-info network information net-list list networks net-name convert a network UUID to network name net-start start a (previously defined) inactive network net-undefine undefine a persistent network net-update update parts of an existing network's configuration net-uuid convert a network name to network UUID net-port-list list network ports net-port-create create a network port from an XML file net-port-dumpxml network port information in XML net-port-delete delete the specified network port
Dále můžete zobrazit také část nápovědy konkrétního příkazu. Například zobrazím sekci nápovědy "net-name" příkaz:
$ virsh help net-name NAME net-name - convert a network UUID to network name SYNOPSIS net-name <network> OPTIONS [--network] <string> network uuid
1.2. Seznam virtuálních počítačů
Chcete-li zobrazit seznam hostovaných virtuálních počítačů v režimu spuštění nebo pozastavení, spusťte následující příkaz:
$ virsh list Id Name State --------------------
Jak vidíte, v režimu spuštění nebo pozastavení nejsou žádní hosté.
Můžete použít --inactive možnost vypsat neaktivní hosty.
Chcete-li zobrazit všechny hostující počítače, spusťte:
$ virsh list --all Id Name State -------------------------------- - centos8-uefi shut off - nginx_centos8 shut off
Jak vidíte ve výše uvedeném výstupu, mám dva virtuální stroje, konkrétně „centos8-uefi“ a „nginx_centos8“. Oba jsou vypnuté.
1.3. Spusťte virtuální počítače
Chcete-li spustit virtuální počítač, například "centos8-uefi", spusťte:
$ virsh start centos8-uefi
Uvidíte výstup jako níže:
Domain centos8-uefi started
Chcete-li ověřit, zda je virtuální počítač spuštěný, použijte "seznam" příkaz:
$ virsh list Id Name State ------------------------------ 1 centos8-uefi running
1.4. Uložit virtuální počítače
Chcete-li uložit aktuální stav běžícího virtuálního počítače, spusťte:
$ virsh save centos8-uefi centos8-save Domain centos8-uefi saved to centos8-save
Tento příkaz zastaví hosta s názvem "centos8-uefi" a uloží data do souboru s názvem "centos8-save". To bude chvíli trvat v závislosti na velikosti paměti, kterou využívá váš hostující počítač.
1.5. Obnovit virtuální počítače
Chcete-li obnovit dříve uložený stav virtuálního počítače, stačí zadat název souboru, jak je uvedeno níže:
$ virsh restore centos8-save Domain restored from centos8-save
Ověřte, zda je virtuální počítač obnoven pomocí příkazu "list":
$ virsh list Id Name State ------------------------------ 4 centos8-uefi running
1.6. Restartujte virtuální počítače
Chcete-li restartovat běžící virtuální počítač, spusťte:
$ virsh reboot centos8-uefi Domain centos8-uefi is being rebooted
1.7. Pozastavit/pozastavit virtuální stroje
Chcete-li pozastavit běžící virtuální počítač, postupujte takto:
$ virsh suspend centos8-uefi Domain centos8-uefi suspended
Ověřte to příkazem "list":
$ virsh list Id Name State ----------------------------- 1 centos8-uefi paused
1.8. Obnovit virtuální stroje
Chcete-li obnovit pozastavený virtuální počítač, spusťte:
$ virsh resume centos8-uefi Domain centos8-uefi resumed
1.9. Zastavit aktivní virtuální stroje
Chcete-li vynutit zastavení aktivního virtuálního počítače a ponechat jej v neaktivním stavu, spusťte:
$ virsh destroy centos8-uefi Domain centos8-uefi destroyed
Můžete také elegantně zastavit virtuální počítač namísto vynucení, jak je uvedeno níže:
$ virsh destroy centos8-uefi --graceful Domain centos8-uefi destroyed
1.10. Vypnutí virtuálních počítačů
Chcete-li vypnout běžící virtuální počítač, postupujte takto:
$ virsh shutdown centos8-uefi Domain centos8-uefi is being shutdown
1.11. Načíst výpis XML virtuálních strojů
Chcete-li zobrazit konfigurační soubor XML virtuálního počítače ve standardním výstupu, spusťte:
$ virsh dumpxml centos8-uefi
Tento příkaz zobrazí úplné podrobnosti konfigurace (software a hardware) virtuálního počítače:

Výpis XML můžete také exportovat do souboru namísto pouhého zobrazení ve standardním výstupu, jak je uvedeno níže:
$ virsh dumpxml centos8-uefi > centos8.xml
Tento příkaz vypíše soubor XML "centos8-uefi" do souboru s názvem "centos8.xml" a uloží jej do aktuálního pracovního adresáře.
1.12. Vytvářejte virtuální stroje s výpisem XML
Můžete vytvořit nový virtuální počítač hosta pomocí existujícího XML z dříve vytvořených hostů. Nejprve vytvořte výpis XML, jak je znázorněno výše, a poté vytvořte nový virtuální počítač pomocí souboru XML, jak je uvedeno níže:
$ virsh create centos8.xml Domain centos8-uefi created from centos8.xml
Tento příkaz vytvoří nový virtuální počítač a okamžitě jej spustí. Můžete to ověřit pomocí příkazu:

1.13. Upravit konfigurační soubor XML virtuálních strojů
Pokud byste chtěli provést nějaké změny v hostujícím počítači, můžete jednoduše upravit jeho konfigurační soubor a provést změny, jak si přejete. Hosty lze upravovat, když běží, nebo když jsou offline.
$ virsh edit centos8-uefi
Tento příkaz otevře soubor ve vašem výchozím editoru, který nastavíte pomocí proměnné $EDITOR.
1.14. Povolit přístup ke konzole pro virtuální počítače
Po vytvoření KVM hostujících počítačů k nim můžete přistupovat přes SSH, VNC klienta, Virt-viewer, Virt-manager a webovou konzoli Cockpit atd. Nelze k nim však přistupovat pomocí příkazu "virsh console". Příkaz console se používá k připojení virtuální sériové konzole pro hosta. Chcete-li přistupovat k hostům KVM pomocí příkazu "virsh console", musíte v počítači hosta povolit přístup k sériové konzole. Chcete-li povolit přístup ke konzole virsh, postupujte podle následujícího průvodce:
- Jak povolit přístup ke konzole Virsh pro hosty KVM
1,15. Přejmenovat virtuální stroje
Pokud jste někdy chtěli přejmenovat virtuální počítač, postupujte podle následujícího průvodce.
- Jak přejmenovat hostující virtuální počítač KVM
1.16. Zobrazit ID domény virtuálních počítačů
Chcete-li najít ID domény běžícího hostujícího virtuálního počítače, spusťte:
$ virsh domid centos8-uefi 2
Vezměte prosím na vědomí, že host by měl být spuštěn, aby získal své ID domény.
1.17. Zobrazit název domény virtuálních počítačů
Chcete-li získat název domény běžícího virtuálního počítače, spusťte:
$ virsh domname <domain-id or domain-uuid>
Příklad:
$ virsh domname 2 centos8-uefi
Zde, 2 je ID domény.
1.18. Zobrazit UUID virtuálních počítačů
Chcete-li najít UUID hostujícího počítače, spusťte:
$ virsh domuuid <domain-name or domain-id>
Příklad:
$ virsh domuuid centos8-uefi
Nebo,
$ virsh domuuid 2
Ukázkový výstup:
de4100c4-632e-4c09-8dcf-bbde29170268
1.19. Zobrazit podrobnosti o virtuálních počítačích
Chcete-li zobrazit informace o počítači hosta, použijte název domény, ID domény nebo doménové uuid, jak je uvedeno níže:
$ virsh dominfo centos8-uefi
Nebo,
$ virsh dominfo 2
Nebo,
$ virsh dominfo de4100c4-632e-4c09-8dcf-bbde29170268
Ukázkový výstup:
Id: -
Name: centos8-uefi
UUID: de4100c4-632e-4c09-8dcf-bbde29170268
OS Type: hvm
State: shut off
CPU(s): 2
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: apparmor
Security DOI: 0

1,20. Zobrazit informace o hostiteli KVM
Chcete-li získat informace o vašem hostitelském systému, spusťte:
$ virsh nodeinfo
Ukázkový výstup:
CPU model: x86_64
CPU(s): 4
CPU frequency: 1167 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 8058840 KiB
1.21. Zobrazit informace o virtuálním CPU
Chcete-li zobrazit informace o virtuálním CPU, spusťte:
$ virsh vcpuinfo <domain-id or domain-name or domain-uuid>
Příklad:
$ virsh vcpuinfo centos8-uefi
VCPU: 0
CPU: 3
State: running
CPU time: 5.6s
CPU Affinity: yyyy
VCPU: 1
CPU: 1
State: running
CPU time: 0.0s
CPU Affinity: yyyy
1,22. Najděte IP adresu virtuálních počítačů
Zjištění IP adresy virtuálního stroje není velký problém. Pokud máte konzolový přístup k virtuálnímu stroji, můžete snadno zjistit jeho IP adresu pomocí příkazu „ip“. Je však také možné identifikovat IP adresu virtuálního počítače KVM, aniž byste museli přistupovat k jeho konzoli. Následující průvodce vysvětluje, jak najít IP adresu virtuálního počítače KVM.
- Jak najít IP adresu virtuálního počítače KVM
1,23. Odstranit virtuální počítače
Pokud již virtuální počítač nechcete, jednoduše jej smažte, jak je uvedeno níže:
$ virsh destroy centos8-uefi
$ virsh undefine centos8-uefi
První příkaz násilně zastaví virtuální počítač, pokud již běží. A druhý příkaz jej zruší a zcela odstraní.
K odstranění úložných svazků a snímků můžete dále použít následující možnosti.
--managed-save remove domain managed state file
--storage remove associated storage volumes (comma separated list of targets or source paths) (see domblklist)
--remove-all-storage remove all associated storage volumes (use with caution)
--delete-storage-volume-snapshots delete snapshots associated with volume(s)
--wipe-storage wipe data on the removed volumes
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)
2. Správa virtuálních sítí
Doufám, že jste se naučili spravovat virtuální stroje KVM pomocí příkazu Virsh v Linuxu. V této části jsou uvedeny důležité příkazy pro správu virtuálních sítí KVM v systému Linux pomocí nástroje příkazového řádku virsh.
2.1. Seznam virtuálních sítí
Chcete-li zobrazit seznam dostupných virtuálních sítí, spusťte:
$ virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
Jak můžete vidět, mám pouze jednu virtuální síť, která je výchozí.
2.2. Zobrazit podrobnosti o virtuální síti
Chcete-li zobrazit podrobnosti o virtuální síti, spusťte:
$ virsh net-dumpxml default
Nahraďte "default" názvem vaší sítě ve výše uvedeném příkazu.
Ukázkový výstup:
<network connections='1'>
<name>default</name>
<uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:ee:35:49'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
2.3. Spusťte virtuální sítě
Chcete-li spustit neaktivní síť, spusťte:
$ virsh net-start <Name-Of-Inactive-Network>
Automatické spuštění sítě:
$ virsh net-autostart <network-name>
2.4. Vytvořte výpis XML virtuálních sítí
Chcete-li vytvořit konfigurační soubor XML existující virtuální sítě, spusťte:
$ virsh net-dumpxml default > default.xml
Výše uvedený příkaz vytvoří XML konfiguraci "výchozí" sítě a uloží ji do souboru s názvem "default.xml" v aktuálním adresáři.
Soubor XML můžete zobrazit pomocí příkazu cat:
$ cat default.xml
<network connections='1'>
<name>default</name>
<uuid>ce25d978-e455-47a6-b545-51d01bcb9e6f</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:ee:35:49'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
2.5. Vytvořte nové virtuální sítě ze souboru XML
Chcete-li vytvořit novou virtuální síť pomocí existujícího souboru XML a okamžitě ji spustit, spusťte:
$ virsh net-create <Name-of-XMLfile>
Pokud chcete vytvořit síť ze souboru XML, ale nechcete ji spouštět automaticky, spusťte:
$ virsh net-define <Name-of-XMLfile>
2.6. Deaktivujte virtuální sítě
Chcete-li deaktivovat aktivní síť, spusťte:
$ virsh net-destroy <network-name>
2.7. Smazat virtuální sítě
Chcete-li odstranit virtuální síť, nejprve ji deaktivujte, jak je uvedeno výše, a poté spusťte:
$ virsh net-undefine <Name-Of-Inactive-Network>
Virsh má spoustu příkazů a možností. Naučit se důkladně používat nástroj příkazového řádku Virsh stačí k nastavení kompletního virtuálního prostředí v Linuxu. Nepotřebujete žádné GUI aplikace.
Další podrobnosti najdete na prvních manuálových stránkách.
$ man virsh
3. Spravujte hosty KVM graficky
Pamatovat si všechny virsh příkazy je téměř nemožné a také zbytečné. Pokud je pro vás obtížné provádět všechny úlohy správy Kvm z příkazového řádku, můžete vyzkoušet grafické nástroje pro správu KVM, jako je Virt-manager a Cockpit.
- Správa virtuálních strojů KVM pomocí webové konzole Cockpit
- Jak spravovat virtuální počítače KVM pomocí nástroje Virt-Manager
Závěr
Pokud víte, jak spravovat virtuální stroje KVM pomocí uživatelského rozhraní pro správu Virsh v systému Linux, jste na půl cesty ke správě virtualizačního prostředí podnikové úrovně. Nastavení KVM a správa virtuálních strojů KVM pomocí příkazu virsh jsou velmi důležité pro všechny administrátory Linuxu.
Vybraný obrázek od Eliase Sch. od Pixabay.