// Engineering Log
Виртуализация: Часть 4 — KVM
Опубликовано 22.09.2026
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
KVM (Kernel-based Virtual Machine) — подсистема виртуализации, встроенная в ядро Linux с версии 2.6.20. Она использует аппаратную поддержку виртуализации процессора (Intel VT-x, AMD-V) и превращает ядро Linux в гипервизор. Каждая виртуальная машина работает как обычный процесс Linux, поэтому для неё действуют привычные механизмы: планировщик, управление памятью, cgroups.
KVM состоит из модуля kvm.ko и модуля для конкретного процессора — kvm-intel.ko или kvm-amd.ko. Сам KVM отвечает только за выполнение кода ВМ на процессоре. Виртуальные диски, сетевые карты, видеоадаптер и остальные устройства эмулирует QEMU, который работает в пространстве пользователя. Поэтому на практике говорят о связке KVM + QEMU, а ВМ запускают через libvirt — слой управления с утилитой virsh. На этой связке построены Proxmox VE, OpenStack, большинство облачных провайдеров и российские платформы виртуализации.
Проверка поддержки
Процессор должен поддерживать аппаратную виртуализацию, и она должна быть включена в BIOS/UEFI:
grep -Ec '(vmx|svm)' /proc/cpuinfo # больше нуля — поддержка есть
ls -l /dev/kvm # устройство появляется после загрузки модуляВ Ubuntu и Debian есть утилита kvm-ok из пакета cpu-checker: она сообщает, можно ли использовать ускорение KVM, и подсказывает, если виртуализация выключена в BIOS.
Установка на Ubuntu или Debian
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system virtinst
sudo adduser $USER libvirt # затем выйти из системы и войти снова
virsh list --alllibvirt-daemon-system ставит службу libvirt, virtinst — утилиту virt-install для создания ВМ. Для управления из графического интерфейса есть virt-manager (настольное приложение) и веб-консоль Cockpit с модулем cockpit-machines, который позволяет создавать, запускать и настраивать ВМ из браузера.
Первая виртуальная машина
Пример установки ВМ с ISO-образа. Команда построена по примеру из документации virt-install:
virt-install --connect qemu:///system \
--name web01 \
--memory 4096 --vcpus 2 \
--disk size=40 \
--osinfo ubuntu24.04 \
--cdrom /var/lib/libvirt/images/ubuntu-24.04-live-server-amd64.iso \
--network bridge=br0--osinfoзадаёт тип гостевой ОС, и libvirt подбирает под него настройки по умолчанию; список известных значений выводитvirt-install --osinfo list;--disk size=40создаёт новый диск на 40 ГБ в пуле хранения по умолчанию;--network bridge=br0подключает ВМ к мосту хоста; без этого параметра ВМ попадает в сеть libvirt по умолчанию.
Повседневное управление:
virsh list --all # все ВМ и их состояние
virsh start web01 # запустить
virsh shutdown web01 # корректно выключить через гостевую ОС
virsh autostart web01 # запускать вместе с хостом
virsh edit web01 # изменить конфигурацию (XML)Сеть: NAT или мост
- Сеть по умолчанию (NAT). libvirt создаёт мост
virbr0и подсеть 192.168.122.0/24. ВМ выходят в интернет через адрес хоста, но из внешней сети к ним напрямую не подключиться. Подходит для рабочей станции и тестов. - Мост (bridge). Физический интерфейс хоста включается в мост Linux, например
br0, и ВМ оказываются в той же сети, что и хост, со своими адресами. libvirt при этом мостом не управляет: его настраивают средствами системы — в Ubuntu через Netplan. Как описать мост, VLAN и bonding в Netplan — в статье «Netplan: продвинутая настройка сети».
Настраивая мост на удалённом сервере, держите под рукой консоль провайдера: ошибка в конфигурации сети отрежет доступ по SSH.
Диски: qcow2 или raw
- qcow2 — основной формат QEMU: файл растёт по мере записи данных, поддерживает снимки и сжатие. Удобен, когда нужны снимки и экономия места.
- raw — образ «как есть», без служебной разметки. Проще и немного быстрее на вводе-выводе, легко переносится в другие системы, но снимков средствами формата не даёт.
Для рабочих ВМ часто используют raw на LVM или ZFS: снимки тогда делает хранилище, а не формат диска.
Чего в KVM нет
KVM и libvirt — это «кирпичи», а не готовая платформа. Из коробки нет:
- веб-интерфейса управления кластером;
- высокой доступности с автоматическим перезапуском ВМ на другом хосте;
- централизованного резервного копирования.
Всё это дают платформы поверх KVM: Proxmox VE, OpenStack, российские zVirt и SpaceVM. «Чистый» KVM с libvirt разумен для одного-двух хостов, стендов разработчиков и случаев, когда инфраструктура и так описана в Ansible или Terraform.
Типичные ошибки
- Виртуализация выключена в BIOS. ВМ запускается без ускорения KVM и работает в разы медленнее; проверяйте
/dev/kvmи выводkvm-ok. - Работа под root вместо группы libvirt и доступ к
qemu:///systemдля всех пользователей сервера. - Windows без драйверов virtio. Установщик не видит диск на контроллере virtio; образ с драйверами virtio-win подключают вторым приводом при установке.
- Снимки вместо резервных копий. Снимок qcow2 живёт в том же файле, что и диск ВМ.
- Нехватка памяти на хосте. Сумма памяти ВМ больше физической — и ядро начинает завершать процессы ВМ при нехватке памяти.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related