Перейти к основному содержимому
Как настроить KVM/QEMU

Как настроить KVM/QEMU

Инструкция описывает настройку сервера SELECTOS Hele для задач KVM-хоста: проверка аппаратной виртуализации, установка пакетов, запуск служб libvirt и создание первой гостевой ВМ.

В образах SELECTOS Hele нет графической среды, поэтому управление хостом и ВМ выполняется только из командной строки утилитами virsh или virt-install.

Последовательность настройки

Рекомендуемая последовательность для KVM-хоста:

  1. Включите виртуализацию
  2. Установите SELECTOS
  3. Проверьте поддержку KVM
  4. Подготовьте диск
  5. Установите пакеты
  6. Запустите libvirt
  7. Добавьте пользователя в группу libvirt
  8. Скачайте образы
  9. Настройте сеть
  10. Создайте ВМ на основе QCOW2-образа
  11. Управляйте ВМ

Если заранее известно, что оборудование поддерживает виртуализацию KVM, при установке можно сразу выбрать вариант разметки с LVM (автоматическая разметка с LVM) и смонтировать логический том в /var/lib/libvirt/images — тогда шаг 4 упрощается.


1. Включите виртуализацию

В BIOS/UEFI включите Intel® VT-x® или AMD-V и сохраните настройки.

2. Установите SELECTOS

На этапе разметки дисков выберите автоматическую разметку, предлагаемую по умолчанию, и завершите установку.

примечание

Один диск:

  • система, /boot и swap размещаются автоматически;
  • место под образы ВМ на корневом разделе / используйте, только если его достаточно по объему.

Несколько дисков:

  • установщик размечает выбранный системный диск;
  • остальные диски остаются без разделов — их удобно отдать под хранилище ВМ на шаге 4.

Дальнейшие шаги выполняются в уже загруженной системе.

3. Проверьте поддержку KVM

1. Проверьте, поддерживает ли ваш процессор аппаратную виртуализацию:

egrep -c '(vmx|svm)' /proc/cpuinfo

Команда выводит общее число логических ядер процессора с поддержкой аппаратной виртуализации Intel® VT-x® или AMD-V.

Если счетчик равен 0, KVM-хост на этом сервере невозможно настроить без смены оборудования.

2. Проверьте, загружены ли в ядро Linux модули аппаратной виртуализации KVM:

lsmod | grep kvm
Пример вывода
kvm_intel             569344  0
kvm 1445888 2 vboxdrv,kvm_intel
irqbypass 16384 1 kvm

На процессорах Intel® обычно загружается модуль ядра kvm_intel, а на процессорах AMD — kvm_amd.

Если модули не загружены, KVM-хост на этом сервере невозможно настроить без смены оборудования.

4. Подготовьте диск

libvirt по умолчанию использует /var/lib/libvirt/images/. Смонтируйте сюда отдельный раздел или диск, чтобы не заполнять корневой /. Команды разметки — в справке по parted.

Посмотрите доступные устройства:

lsblk
sudo parted -l

Если при установке второй диск не размечался (например, /dev/sdb), создайте на нем раздел и файловую систему. Подробности по командам parted — в справке по parted.

Пример для всего диска /dev/sdb под GPT и ext4:

sudo parted /dev/sdb --script mklabel gpt mkpart primary 1MiB 100%
sudo mkfs.ext4 -L kvm-images /dev/sdb1
sudo mkdir -p /var/lib/libvirt/images

Добавьте монтирование при загрузке (подставьте UUID из sudo blkid /dev/sdb1):

echo 'UUID=<uuid> /var/lib/libvirt/images ext4 defaults 0 2' | sudo tee -a /etc/fstab
sudo mount -a
df -h /var/lib/libvirt/images

Создайте каталоги для ISO, дисков ВМ и шаблонов:

sudo mkdir -p /var/lib/libvirt/images/iso /var/lib/libvirt/images/templates

5. Установите пакеты

Установите KVM, QEMU и libvirt:

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients \
bridge-utils virtinst
ПакетНазначение
qemu-kvmэмуляция устройств и запуск ВМ с ускорением KVM
libvirt-daemon-systemуправление ВМ через демон libvirt и интеграция с systemd
libvirt-clientsуправление ВМ через утилиты virsh, virt-install
bridge-utilsуправление сетевыми мостами для ВМ
virtinstустановка ВМ из командной строки (virt-install)

6. Запустите libvirt

Запустите демон и проверьте гипервизор:

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd
virt-host-validate qemu

Исправьте предупреждения по сети, правам или модулям ядра, если они есть в выводе.

7. Добавьте пользователя в группу libvirt

Чтобы управлять ВМ без sudo, добавьте учетную запись в группу libvirt и перелогиньтесь:

usermod -aG libvirt,kvm $USER
groups

8. Скачайте образы

1. Назначьте права на каталоги и загрузите образы:

sudo chown -R root:libvirt /var/lib/libvirt/images
sudo chmod 775 /var/lib/libvirt/images /var/lib/libvirt/images/iso

2. Cкачайте из репозитория SELECTOS QCOW2-образ и контрольную сумму:

cd /var/lib/libvirt/images/iso
wget https://repo.selectos.selectel-lab.ru/iso/hele/server/SELECTOS-2.0-amd64-CD-1.iso
wget https://repo.selectos.selectel-lab.ru/iso/hele/server/SHA256SUM
sha256sum -c SHA256SUM

3. Создайте пул default:

virsh pool-define-as default dir --target /var/lib/libvirt/images
virsh pool-build default
virsh pool-start default
virsh pool-autostart default

virsh pool-info default

9. Настройте сеть

По умолчанию существует сеть default для гостевых ВМ — активируйте ее:

virsh -c qemu:///system net-start default
virsh -c qemu:///system net-autostart default

10. Создайте ВМ на основе QCOW2-образа

virt-install \
--connect qemu:///system \
--name selectos-hele \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/SELECTOS-2.0-amd64.qcow2,format=qcow2 \
--os-variant generic \
--import \
--cloud-init root-password-generate=on \
--network default \
--graphics none \
--console pty,target_type=serial

Сохраните сгенерированный пароль для авторизации в ОС при последующем использовании ВМ.

11. Управляйте ВМ

КомандаОписание
virsh -c qemu:///system list --allпоказать все ВМ
virsh -c qemu:///system start selectos-heleзапустить ВМ
virsh -c qemu:///system shutdown selectos-heleкорректно выключить ВМ
virsh -c qemu:///system console selectos-heleподключиться к консоли ВМ
virsh -c qemu:///system dominfo selectos-heleпоказать информацию о ВМ
virsh -c qemu:///system dumpxml selectos-heleвывести XML-конфигурацию ВМ

Завершение работы ВМ

Принудительно остановить ВМ
virsh -c qemu:///system destroy "$vm" 2>/dev/null
Удалить ВМ вместе с дисками
virsh -c qemu:///system undefine "$vm" --remove-all-storage --snapshots-metadata --managed-save