Гид по технологиям

Как создать сервер виртуализации на Linux

7 min read Виртуализация Обновлено 28 Nov 2025
Создать сервер виртуализации на Linux
Создать сервер виртуализации на Linux

Важно: убедитесь, что в BIOS/UEFI включена аппаратная виртуализация (Intel VT-x или AMD-V) перед установкой KVM.

Виртуализация: сервер и ноутбук

Почему виртуализация на Linux

Виртуализация позволяет запускать несколько изолированных систем на одном физическом компьютере. Это полезно для тестирования, обучения, CI/CD, развёртывания микросервисов, и для создания лабораторий. Linux предоставляет зрелые инструменты (KVM, QEMU, libvirt) с хорошей производительностью и гибкостью.

Ключевые одинлайновые определения:

  • KVM — гипервизор уровня ядра для Linux.
  • QEMU — эмулятор аппаратуры и пользовательских режимов, часто используется вместе с KVM.
  • libvirt — менеджер и API для управления виртуальными машинами.

Проверка совместимости аппаратуры

Перед установкой проверьте поддержку аппаратной виртуализации в CPU.

Скрипты ниже ищут флаги VT-x (Intel) и SVM (AMD) в /proc/cpuinfo:

grep vmx /proc/cpuinfo # for Intel CPUs   
  
grep svm /proc/cpuinfo # for AMD CPUs

Если команда ничего не вернула, можно посмотреть вывод lscpu и найти секцию “Virtualization”:

lscpu | grep -i Virtualization

Вывод grep vmx в /proc/cpuinfo

Если вы увидите упоминание vmx или svm, аппаратная виртуализация поддерживается. Если нет — включите VT-x/AMD-V в настройках BIOS/UEFI или используйте эмуляцию без аппаратного ускорения (значительно медленнее).

Рекомендации по памяти и диску

  • Минимум: 8 ГБ RAM для базовых экспериментов.
  • Рекомендуется: 16–64 ГБ RAM для удобной работы с несколькими VM.
  • Диск: SSD NVMe/SATA для лучшей производительности I/O. Планируйте отдельный пул хранения для образов VM.
  • CPU: больше ядер = больше параллельных ВМ. Для десктопа 4 ядра — хорошая отправная точка.

Установка KVM и сопутствующих пакетов

KVM — Kernel-based Virtual Machine. Ниже приведены команды для Fedora и Ubuntu. (Сохраняем оригинальные примеры, затем добавляем корректные варианты.)

Оригинальные примеры из источника:

sudo dnf -y groupinstall "Virtualization Host";  
sudo dnf -yinstall virt-install
sudo apt -yinstall qemu-kvm libvirt-daemon-system libvirt-daemon virtinst bridge-utils libosinfo-bin libguestfs-tools virt-top

Важно: в примере для Fedora есть опечатка в команде. Правильные команды выглядят так.

Для Fedora / RHEL / CentOS:

sudo dnf -y groupinstall "Virtualization Host"
sudo dnf -y install virt-install libvirt qemu-kvm libguestfs-tools bridge-utils

Для Ubuntu / Debian и производных:

sudo apt update
sudo apt -y install qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils libosinfo-bin libguestfs-tools virt-top

После установки проверьте, что модуль ядра загружен и служба libvirt запущена:

lsmod | grep kvm

sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo systemctl status libvirtd

lsmod и systemctl для KVM

Если у вас Ubuntu, служба может называться libvirtd или libvirt-bin в зависимости от версии. В выводе systemctl должно быть Active: active (running).

Сетевые варианты для виртуальных машин

Есть два распространённых подхода к сети виртуальных машин:

  • NAT (по умолчанию, virbr0): ВМ получают IP в виртуальной подсети и выход в интернет через NAT хоста. Удобно для тестирования.
  • Мост (bridge): ВМ становятся видимыми в вашей физической сети с собственными IP. Нужно, если виртуальные машины должны обслуживать внешние клиенты.

Когда использовать мост:

  • Нужно прямое подключение ВМ к локальной сети.
  • Хост — сервер в датацентре или в сети, где разрешены мосты.

Когда использовать NAT:

  • Лабораторные сценарии и изолированное тестирование.
  • Хост работает в сети с ограничениями на создание мостов.

Примеры создания моста зависят от менеджера сети (NetworkManager, netplan, systemd-networkd). В Arch Wiki много рецептов для разных систем. Если вы используете одинаковую ОС на нескольких машинах, выбирайте один подход и автоматизируйте его.

Управление виртуальными машинами через GUI

Популярные инструменты:

  • Virtual Machine Manager (virt-manager): полноценный GUI для libvirt. Поддерживает сеть, диски, консоль.
  • GNOME Boxes: простой интерфейс для пользователей и тестирования. Меньше настроек.
  • Cockpit + Machines: веб-интерфейс для удалённого управления сервером.

Преимущества GUI:

  • Быстрое создание ВМ без разметки XML.
  • Удобный доступ к консоли, управление образами и сетями.

Ограничения GNOME Boxes: простой интерфейс, меньше опций для сетей, VLAN, тонкой настройки хоста.

Установка виртуальной машины из терминала

Команда virt-install полезна для автоматизированных инсталляций. Оригинальный шаблон из источника:

sudo virt-install \
--connect qemu:///system \
--name  \
--memory  \
--vcpus  \
--disk size= \
--cdrom /PATH/TO/ISO/FILE

Расширенный пример с объяснениями:

sudo virt-install \
  --connect qemu:///system \
  --name ubuntu-22-04 \
  --memory 4096 \
  --vcpus 2 \
  --disk path=/var/lib/libvirt/images/ubuntu-22-04.qcow2,size=40 \
  --os-variant ubuntu22.04 \
  --cdrom /home/user/isos/ubuntu-22.04-live-server-amd64.iso \
  --network network=default \
  --graphics spice

Пояснения:

  • –memory: Оперативная память в МБ.
  • –vcpus: Число виртуальных процессоров.
  • –disk: Путь и размер диска; можно использовать qcow2 или raw.
  • –os-variant: Оптимизация параметров для конкретной ОС.
  • –network: network=default использует virbr0 (NAT).
  • –graphics: spice или vnc для графической установки.

Вы также можете указать path вместо параметра size для управления местоположением и форматом образа.

virt-install в процессе создания VM

Автоматическая установка через Kickstart или preseed

Для массовой установки используйте Kickstart (RHEL/CentOS/Fedora) или preseed (Debian/Ubuntu). virt-install поддерживает передачу файла автоматической установки через –extra-args или подключив ISO с автоматикой.

Управление виртуальными машинами через терминал

Основной инструмент — virsh. Он может запускаться как отдельная команда или как интерактивная оболочка.

Популярные команды:

sudo virsh list --all        # список всех доменов
sudo virsh start    # запуск виртуальной машины
sudo virsh shutdown # корректное завершение
sudo virsh destroy  # экстренное выключение
sudo virsh undefine # удалить конфигурацию

Примеры операций с дисками и снапшотами:

sudo virsh snapshot-create-as  snapshot1 "Моментальный снимок" --disk-only --atomic
sudo virsh snapshot-list 
sudo virsh blockcommit  vda --active --verbose --pivot

SSH доступ к ВМ: ВМ, использующие мост, получают IP от вашей сети. Если используется virbr0, ВМ получают IP в виртуальной подсети и доступны от хоста по SSH, если открыт доступ и настроен сетевой маршрут.

virsh команды и вывод

Повышение производительности

Ключевые рекомендации:

  • Используйте virtio-драйверы для дисков и сети внутри гостя — это существенно быстрее, чем эмуляция IDE/rtl8139.
  • Выделяйте отдельные CPU или используйте pinning для критичных нагрузок.
  • Включите HugePages для уменьшения накладных расходов TLB.
  • Для дисков используйте qcow2 для снимков и raw для максимальной скорости (если не нужен функционал qcow2).
  • Правильно выбирайте режим кэша диска (none, writeback, writethrough) в зависимости от требований к целостности данных.

Пример включения virtio при установке: в списке устройств указывайте –disk и –network с соответствующими параметрами.

Безопасность и изоляция

Рекомендации по защите:

  • Включите SELinux/AppArmor и используйте sVirt, чтобы оградить процессы libvirt.
  • Ограничьте доступ к libvirt сокету — по умолчанию только root и члены группы libvirt.
  • Изолируйте управленческие сети и используйте VLAN/OVS для мультиарендных сред.
  • Регулярно обновляйте пакеты KVM/QEMU/libvirt.

Резервное копирование и аварийное восстановление

Подходы:

  • Используйте моментальные снимки (snapshots) для быстрых точек восстановления.
  • Копируйте образы qcow2/raw и метаданные конфигурации (virsh dumpxml) перед обновлениями.
  • Для резервирования гостевых ОС используйте стандартные инструменты внутри гостя (rsync, borg, Veeam и т. п.).

Пример экспорта конфигурации и образа:

sudo virsh dumpxml  > /backup/vm-name.xml
sudo cp /var/lib/libvirt/images/vm-name.qcow2 /backup/

Отладка и частые ошибки

  • “kvm: disabled by bios” — аппаратная виртуализация выключена в BIOS/UEFI. Включите VT-x/AMD-V.
  • Нет вывода из lsmod|grep kvm — модуль не загружен. Попробуйте sudo modprobe kvm_intel или kvm_amd.
  • libvirtd не запускается — проверьте логи systemd: sudo journalctl -u libvirtd.

Когда KVM не подходит

  • Требуется поддержка специфичных аппаратных вендоров, которых нет в Linux/QEMU.
  • Нужна максимальная совместимость с Hyper-V или VMware на уровне гипервизора — в некоторых корпоративных средах предпочтут специализированные решения.

Альтернативные подходы

  • Docker/Podman — контейнеризация, если достаточно изоляции на уровне процессов.
  • VMware ESXi — коммерческий гипервизор для корпоративного использования.
  • Proxmox VE — дистрибутив/панель управления на базе KVM + LXC для удобного управления кластером.

Практические контрольные списки

Для домашней лаборатории:

  • Проверить поддержку VT-x/AMD-V.
  • Установить минимум 16 ГБ RAM.
  • Установить KVM, libvirt, virt-manager.
  • Создать пул хранения на SSD.
  • Настроить NAT-сеть для простых тестов.

Для серверного развёртывания:

  • Планирование CPU и NUMA.
  • Настроить мосты и VLAN.
  • Включить sVirt/SELinux и аудит.
  • Автоматизировать инсталляции через kickstart/Cloud-Init.

Факты и хитрости

  • virtio обеспечивает наилучшую производительность для сетевых и дисковых устройств.
  • qcow2 даёт гибкость (снапшоты, экономия места), но raw быстрее на последовательных операциях.
  • Использование SPICE/Remote Viewer даёт лучший опыт на графических системах, чем VNC.

Критерии приёмки

  • ВМ запускается и доступна по SSH/консоли.
  • Производительность диска и сети отвечает требованиям тестовой нагрузки.
  • Сервис libvirtd автоматически запускается после перезагрузки.
  • Конфигурации и образы сохранены в резервной копии.

Краткое резюме

KVM + QEMU + libvirt — крепкий выбор для виртуализации на Linux. Проверьте поддержку аппаратной виртуализации, выделите достаточный объём памяти и быстрые диски, выберите подходящий сетевой режим (NAT или мост), и используйте virt-install и virsh для автоматизации. Для GUI-управления подходят virt-manager, GNOME Boxes и Cockpit. Обратите внимание на virtio-драйверы, безопасность (sVirt, SELinux) и регулярные бэкапы.

Полезно знать: начните с одной VM и постепенного увеличения нагрузки. Тестируйте сетевые варианты и бэкап-процедуры до перехода в продакшен.

Панель управления виртуальными машинами

Примеры вывода virsh и virsh list

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Обновление MATE с GTK2 на GTK3 в Arch Linux
Linux

Обновление MATE с GTK2 на GTK3 в Arch Linux

Массовое удаление писем в Outlook
Руководство

Массовое удаление писем в Outlook

Просмотр таблиц Excel рядом в отдельных окнах
Excel

Просмотр таблиц Excel рядом в отдельных окнах

Оформление книги в OpenOffice
Полиграфия

Оформление книги в OpenOffice

Windows Mobile как модем: инструкция по tethering
Руководство

Windows Mobile как модем: инструкция по tethering

Как активировать карту Payoneer
Финансы

Как активировать карту Payoneer