Как настроить KVM/QEMU
Инструкция описывает настройку сервера SELECTOS Hele для задач KVM-хоста: проверка аппаратной виртуализации, установка пакетов, запуск служб libvirt и создание первой гостевой ВМ.
В образах SELECTOS Hele нет графической среды, поэтому управление хостом и ВМ выполняется только из командной строки утилитами virsh или virt-install.
Последовательность настройки
Рекомендуемая последовательность для KVM-хоста:
- Включите виртуализацию
- Установите SELECTOS
- Проверьте поддержку KVM
- Подготовьте диск
- Установите пакеты
- Запустите libvirt
- Добавьте пользователя в группу libvirt
- Скачайте образы
- Настройте сеть
- Создайте ВМ на основе QCOW2-образа
- Управляйте ВМ
Если заранее известно, что оборудование поддерживает виртуализацию 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
Если отдельного диска нет, оцените свободное место: df -h /. При достаточном объеме можно временно хранить образы на / в /var/lib/libvirt/images без дополнительного раздела.
Чтобы увеличить место на том же диске, потребуется изменить существующую разметку — это делают вручную через parted или при переустановке. Для настройки LVM поверх нового раздела см. конфигурирование LVM при установке.
Создайте каталоги для 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
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 destroy "$vm" 2>/dev/null
virsh -c qemu:///system undefine "$vm" --remove-all-storage --snapshots-metadata --managed-save