linux-labs

Вики / Службы и systemd

KVM и libvirt (virsh)

Концепция Ubuntu 24.04 · libvirt · KVM СлужбыВиртуализацияСеть

Виртуальные машины на 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 --allnet-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   # удалённый хост

См. также