Вики / Службы и systemd
KVM и libvirt (virsh)
Виртуальные машины на Linux — управление через virsh, сети и хранилища, консоль.
KVM — гипервизор в ядре Linux; libvirt — слой управления поверх него, а
virsh — его CLI. На этом же стеке работает и сам тренажёр linux-labs (эфемерные
лаб-ВМ). Демон libvirtd под systemd.
virsh list --all # все домены (ВМ): запущенные и выключенные
virsh nodeinfo # ресурсы хоста
egrep -c 'vmx|svm' /proc/cpuinfo # поддержка аппаратной виртуализации (>0 = есть)
Подключение к удалённому хосту:
virsh -c qemu+ssh://user@host/system ....
virsh start vm1 # запустить
virsh shutdown vm1 # мягко выключить (ACPI)
virsh destroy vm1 # жёстко выключить (= выдернуть питание)
virsh reboot vm1
virsh console vm1 # serial-консоль (выход: Ctrl+])
virsh dominfo vm1 # состояние, память, vCPU
virsh autostart vm1 # автозапуск при старте хоста
virsh undefine vm1 # удалить определение (диск остаётся!)
virsh net-list --all # виртуальные сети
virsh net-dumpxml default # XML сети
virsh net-start default ; virsh net-autostart default
virsh pool-list # пулы хранилищ
virsh vol-list default # тома (диски ВМ)
virsh domiflist vm1 # сетевые интерфейсы ВМ (MAC, мост)
virsh dumpxml vm1 # полное определение ВМ (XML)
Снимки:
virsh snapshot-create-as vm1 snap1
virsh snapshot-list vm1
virsh snapshot-revert vm1 snap1
virsh: failed to connect to the hypervisor
libvirtd не запущен (systemctl status libvirtd) или нет прав — пользователь
должен быть в группе libvirt. Для системного инстанса нужен URI qemu:///system.
ВМ не стартует
virsh start vm1 печатает ошибку; подробности — journalctl -u libvirtd и логи
/var/log/libvirt/qemu/vm1.log. Часто: нет файла диска, занятый порт, мало памяти.
Нет сети у ВМ
Виртуальная сеть не запущена: virsh net-list --all → net-start. Проверь мост и
firewall на хосте.
Не зайти в ВМ
virsh console vm1 (нужен включённый serial в гостевой ОС) — выход Ctrl+]. Либо
по SSH, если у ВМ есть сеть.
virsh list --all # все ВМ
virsh start|shutdown|destroy|reboot vm
virsh console vm # serial-консоль (Ctrl+] выход)
virsh net-list --all ; virsh domiflist vm
virsh snapshot-create-as vm snap ; virsh snapshot-revert vm snap
virsh -c qemu+ssh://user@host/system list # удалённый хост
См. также
- SSH-клиент (ssh, scp, туннели) — Сеть
- systemctl — Службы и systemd
- qemu-img (образы дисков ВМ) — Хранилище и ФС