KVM - одна из наиболее распространенных технологий аппаратной виртуализации для создания VPS и VDS. Она позволяет запускать на одном физическом сервере несколько независимых виртуальных машин с собственными операционными системами, дисками, сетевыми интерфейсами и выделенными лимитами ресурсов.

В этой статье разберем, что такое KVM, как работает эта технология, чем она отличается от контейнерной виртуализации, как создать виртуальную машину и какие настройки позволяют повысить производительность VDS.

6adde85a33f0c.webp

Что такое KVM и как он используется в VDS?

KVM (Kernel-based Virtual Machine) - технология виртуализации, встроенная в ядро Linux. Она превращает Linux-сервер в гипервизор, способный запускать полноценные виртуальные машины.

Каждая виртуальная машина получает собственную операционную систему и виртуальное оборудование: процессоры, оперативную память, диски, сетевые адаптеры и другие устройства.

Именно поэтому KVM широко используется хостинг-провайдерами для предоставления VDS и VPS. В отличие от контейнерной виртуализации, виртуальные машины KVM не обязаны использовать ядро операционной системы хоста.

Как работает KVM?

KVM использует функции аппаратной виртуализации современных процессоров. Для архитектуры x86 это Intel VT-x или AMD-V. Благодаря им большая часть инструкций виртуальной машины выполняется непосредственно процессором, а не полностью эмулируется программно.

На практике KVM обычно используется вместе с несколькими компонентами.

QEMU

QEMU предоставляет виртуальное оборудование и позволяет запускать гостевые операционные системы. При использовании аппаратного ускорения KVM большая часть вычислительной нагрузки выполняется непосредственно процессором.

libvirt

libvirt предоставляет единый интерфейс управления виртуальными машинами, сетями, дисками и другими ресурсами.

Для управления через командную строку обычно используется утилита virsh, а для графического управления может применяться virt-manager.

VirtIO

VirtIO - набор паравиртуализированных устройств и драйверов, предназначенных для эффективной работы дисковой и сетевой подсистемы виртуальных машин.

Использование VirtIO обычно позволяет получить значительно лучшую производительность, чем при эмуляции традиционных аппаратных устройств.

Преимущества KVM для VDS

Изоляция виртуальных машин

Каждая виртуальная машина работает в отдельной среде и имеет собственную операционную систему.

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

Выбор операционной системы

KVM позволяет запускать различные гостевые операционные системы, если они поддерживают используемую аппаратную архитектуру и виртуальное оборудование.

На KVM можно использовать, например:

  • Ubuntu;
  • Debian;
  • AlmaLinux;
  • Rocky Linux;
  • Windows Server;
  • FreeBSD;
  • другие совместимые операционные системы.

Гибкое распределение ресурсов

Для виртуальной машины можно определить количество виртуальных процессоров, объем оперативной памяти, размер диска и сетевые параметры.

Важно учитывать, что наличие определенного количества vCPU не всегда означает физически выделенные процессорные ядра. Это зависит от конфигурации конкретного тарифа и политики провайдера.

Высокая производительность

Использование аппаратной виртуализации и VirtIO позволяет получить производительность, близкую к работе непосредственно на физическом сервере для многих типов нагрузок.

Дополнительное влияние оказывают процессор хоста, тип накопителей, настройки дисковой подсистемы, уровень переподписки ресурсов и сетевой канал.

Безопасность

Изоляция виртуальных машин является одним из важных преимуществ KVM. Дополнительно безопасность обеспечивается настройками самого хоста и гостевой системы.

В Linux могут использоваться SELinux или AppArmor, nftables, firewalld и другие средства защиты.

KVM или контейнерная виртуализация?

KVM и контейнерные технологии решают похожие задачи, но работают по-разному.

Параметр

KVM

Контейнерная виртуализация

Ядро ОС

Собственное ядро гостевой ОС

Используется ядро хоста

Изоляция

Полноценная виртуальная машина

Изоляция на уровне контейнеров

Windows

Можно использовать как гостевую ОС

Зависит от платформы и хоста

Накладные расходы

Выше

Обычно ниже

Гибкость

Высокая

Зависит от ядра хоста

KVM хорошо подходит для проектов, которым необходима полноценная виртуальная машина с независимой операционной системой и гибкими настройками.

Как установить KVM

Рассмотрим базовый пример для Ubuntu Server. Команды необходимо выполнять на физическом сервере или в среде, где доступна вложенная виртуализация. На обычном арендованном VDS запуск собственного KVM может быть невозможен, если провайдер не разрешает nested virtualization.

Проверка поддержки виртуализации

В Ubuntu можно установить утилиту проверки:

sudo apt update
sudo apt install cpu-checker
kvm-ok

Если аппаратная виртуализация доступна, система сообщит, что ускорение KVM может использоваться.

Установка необходимых пакетов

sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst

После установки можно проверить состояние libvirt:

systemctl status libvirtd

И проверить подключение:

virsh list --all

Создание виртуальной машины KVM

Для хранения виртуальных дисков часто используется формат QCOW2. Он поддерживает такие возможности, как динамическое выделение пространства и снапшоты.

Создание виртуального диска

qemu-img create -f qcow2 /var/lib/libvirt/images/vds1.qcow2 40G

Создание виртуальной машины

Например, для установки Ubuntu Server 26.04 LTS можно использовать virt-install:

virt-install \
  --name vds1 \
  --vcpus 2 \
  --memory 4096 \
  --disk path=/var/lib/libvirt/images/vds1.qcow2,format=qcow2,bus=virtio \
  --cdrom /var/lib/libvirt/boot/ubuntu-26.04-live-server-amd64.iso \
  --network network=default,model=virtio \
  --graphics vnc \
  --noautoconsole

После создания виртуальной машины ее можно увидеть в списке:

virsh list --all

Настройка сети в KVM

KVM и libvirt поддерживают несколько вариантов подключения виртуальных машин к сети.

NAT

В стандартной конфигурации libvirt часто используется виртуальная сеть с NAT. Виртуальная машина получает внутренний IP-адрес и выходит в интернет через хост.

Такой вариант удобен для тестовых систем и серверов, которым не требуется прямое подключение к внешней сети.

Bridge

При использовании сетевого моста виртуальный сетевой интерфейс VM подключается к сети через интерфейс физического сервера.

В таком режиме виртуальная машина может выглядеть для сети как отдельный хост. Получение собственного публичного IP при этом зависит от настроек сети и наличия соответствующего адреса у провайдера.

Macvtap

Macvtap позволяет подключать виртуальные машины к физическому сетевому интерфейсу без традиционного Linux Bridge. Такой вариант подходит для некоторых сценариев, но имеет особенности взаимодействия между хостом и гостевой системой, поэтому применяется не всегда.

Настройка сети KVM VDS

Настройка Bridge в Ubuntu через Netplan

Пример конфигурации может выглядеть следующим образом:

network:
  version: 2
  ethernets:
    ens3:
      dhcp4: false
  bridges:
    br0:
      interfaces:
        - ens3
      dhcp4: true
      parameters:
        stp: false
        forward-delay: 0

После изменения конфигурации применяется Netplan:

sudo netplan apply

Важно: при удаленной настройке сервера ошибка в сетевой конфигурации может привести к потере SSH-доступа. Перед изменениями необходимо иметь резервный способ подключения к серверу или консоль управления.

Управление KVM через virsh

virsh позволяет управлять виртуальными машинами из командной строки.

Список виртуальных машин

virsh list --all

Запуск виртуальной машины

virsh start vds1

Корректное завершение работы

virsh shutdown vds1

Перезагрузка

virsh reboot vds1

Автоматический запуск вместе с хостом

virsh autostart vds1

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

virsh save vds1 /var/lib/libvirt/vds1.state

Восстановить сохраненное состояние можно командой:

virsh restore /var/lib/libvirt/vds1.state

Live Migration в KVM

При наличии нескольких совместимых узлов виртуализации libvirt поддерживает миграцию виртуальных машин между физическими серверами.

Live Migration позволяет переносить работающую VM с минимальным перерывом в ее работе. Это может использоваться, например, для обслуживания физического узла.

Однако Live Migration не заменяет перезагрузку гостевой операционной системы, если она необходима после обновления ядра или другого системного компонента.

Оптимизация производительности KVM VDS

Большинство стандартных виртуальных машин не требуют сложной ручной оптимизации. Однако для высоконагруженных систем можно использовать дополнительные возможности.

VirtIO для диска и сети

Для виртуальных дисков и сетевых интерфейсов рекомендуется использовать VirtIO, если гостевая операционная система имеет необходимые драйверы.

Пример диска:

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/var/lib/libvirt/images/vds1.qcow2'/>
  <target dev='vda' bus='virtio'/>
</disk>

Пример сетевого интерфейса:

<interface type='network'>
  <source network='default'/>
  <model type='virtio'/>
</interface>

HugePages

HugePages позволяют использовать страницы памяти увеличенного размера и в определенных сценариях могут снизить нагрузку на управление памятью.

Однако включать HugePages автоматически для любого VDS не следует. Количество страниц необходимо рассчитывать исходя из объема оперативной памяти виртуальных машин и конфигурации NUMA.

В конфигурации libvirt использование HugePages задается через блок memoryBacking:

<memoryBacking>
  <hugepages/>
</memoryBacking>

CPU Pinning

Для нагрузок, чувствительных к задержкам, виртуальные процессоры можно привязать к определенным физическим CPU.

При использовании libvirt это лучше делать через конфигурацию виртуальной машины или команду virsh vcpupin, а не запускать QEMU вручную через taskset.

CPU pinning может быть полезен для баз данных, некоторых игровых серверов и других нагрузок с высокими требованиями к стабильности задержек, но требует правильного планирования ресурсов физического сервера.

Мониторинг KVM VDS

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

virsh dominfo vds1

Для получения статистики:

virsh domstats vds1

На физическом сервере также используются стандартные Linux-инструменты:

top
htop
iostat -xz 1

Как проверить производительность диска

Для более корректного тестирования дисковой подсистемы вместо простого копирования файла через dd можно использовать fio.

Установить его можно командой:

sudo apt install fio

При тестировании важно учитывать тип нагрузки, размер блока, глубину очереди, соотношение чтения и записи и использование кэша. Поэтому результаты разных тестов нельзя сравнивать без одинаковых параметров.

Как проверить скорость сети

Для тестирования пропускной способности между двумя серверами удобно использовать iperf3.

На одном сервере запускается:

iperf3 -s

На втором:

iperf3 -c IP_СЕРВЕРА

Так можно оценить фактическую пропускную способность между двумя узлами без влияния скорости внешних сервисов тестирования.

Для каких задач подходит KVM VDS?

VDS на базе KVM может использоваться для самых разных проектов:

  • сайтов и интернет-магазинов;
  • баз данных;
  • корпоративных приложений;
  • Docker и других контейнерных платформ внутри виртуального сервера;
  • VPN;
  • серверов разработки и тестирования;
  • игровых серверов;
  • почтовых сервисов;
  • систем мониторинга;
  • Windows-приложений и удаленных рабочих столов при использовании Windows Server.

Итог

KVM - зрелая технология аппаратной виртуализации, которая широко используется для создания VPS и VDS. Она обеспечивает независимую гостевую операционную систему, гибкую настройку ресурсов и поддержку Linux, Windows и других совместимых ОС.

При выборе VDS важно учитывать не только тип виртуализации, но и параметры самого сервера: производительность CPU, объем RAM, тип накопителей, скорость сети, правила распределения ресурсов и качество технической поддержки.

Что важно запомнить?

  • KVM использует аппаратную виртуализацию процессора.
  • Каждая VM имеет собственную гостевую операционную систему.
  • Для управления обычно используются QEMU, libvirt и virsh.
  • VirtIO помогает повысить производительность диска и сети.
  • KVM поддерживает NAT, Bridge и другие варианты сетевой конфигурации.
  • HugePages и CPU pinning полезны не всегда и должны применяться с учетом конкретной нагрузки.
  • Live Migration позволяет переносить работающие виртуальные машины между совместимыми узлами.

Linux VDS на KVM от UkrLine

Если вам нужен готовый виртуальный сервер без самостоятельной настройки гипервизора, можно использовать Linux VDS на KVM от UkrLine.

В зависимости от выбранного тарифа сервер можно использовать для сайтов, баз данных, корпоративных приложений, VPN, Docker и других задач.

  • Виртуализация KVM.
  • Выбор конфигурации под требуемую нагрузку.
  • Высокоскоростные диски.
  • Полный root-доступ к серверу.
  • Возможность самостоятельной установки и настройки необходимого программного обеспечения.
  • Техническая поддержка при возникновении вопросов по работе VDS.

Подробнее о доступных конфигурациях: https://ukrline.ua/ru/linux-vds.php

В статье использованы материалы UkrLine.