Mar 21, 2025
Базовые знания о виртуализации: понятия, технологии, инструменты
Виртуализация — один из ключевых инструментов в современной ИТ-инфраструктуре. Она позволяет запускать несколько изолированных операционных систем на одном физическом сервере, экономя ресурсы и повышая гибкость работы.
Современные операционные системы, включая Linux, Windows, macOS, а также специализированные гипервизоры (например, VMware ESXi, Proxmox VE, XenServer) предоставляют собственные механизмы и интерфейсы для управления виртуальными машинами. Например:
-
В Linux наиболее популярны связка KVM + QEMU + libvirt, а также LXC/LXD для контейнерной виртуализации.
-
В Windows встроен гипервизор Hyper-V, который активно используется в корпоративных средах и облачных решениях.
-
В macOS для разработчиков доступен инструмент Virtualization.framework, а ранее использовался Parallels и VirtualBox.
В этой статье — краткий, но емкий справочник по ключевым понятиям виртуализации, с акцентом на практическое применение.
🔧 Основы виртуализации
Hypervisor (гипервизор)
Программа, которая управляет виртуальными машинами. Бывает двух типов:
-
Type 1 (bare-metal) — работает напрямую на “железе” (например, VMware ESXi, Xen, Hyper-V).
-
Type 2 (hosted) — работает внутри ОС, как обычное приложение (например, VirtualBox, VMware Workstation).
VM (Virtual Machine)
Полноценная, изолированная система с собственной ОС, эмулируемыми устройствами, памятью и CPU. Для пользователя VM — это обычный компьютер, просто виртуальный.
vCPU (Virtual CPU)
Виртуальный процессор, предоставляемый VM. Гипервизор отображает vCPU на физические ядра или потоки.
⚙️ Оптимизация виртуальных машин
CPU Pinning
Закрепление виртуальных процессоров за конкретными физическими ядрами. Это снижает задержки и повышает стабильность работы.
Huge Pages
Память в Linux по умолчанию управляется страницами по 4 KB. Huge Pages — это большие страницы (2 MB или 1 GB), которые ускоряют доступ к памяти и снижают нагрузку на TLB.
NUMA (Non-Uniform Memory Access)
Архитектура, в которой каждый CPU имеет “свою” память. Для максимальной производительности VM лучше размещать vCPU и RAM в рамках одного NUMA-узла.
🧩 Устройства ввода-вывода и проброс
SR-IOV (Single Root I/O Virtualization)
Позволяет физическому устройству (например, сетевой карте) создать множество виртуальных функций (VF), которые можно напрямую назначить VM.
-
PF (Physical Function) — основное устройство.
-
VF (Virtual Function) — виртуальное “дочернее” устройство.
PCI Passthrough
Позволяет VM работать с физическим устройством напрямую — например, с видеокартой, диском или сетевой картой. Используется с VFIO и IOMMU.
VirtIO
Набор паравиртуальных драйверов для дисков, сети и других устройств. Обеспечивает более быструю работу VM за счёт прямого взаимодействия с гипервизором.
💾 Диски и хранилища
Виртуальные диски
-
qcow2
— поддерживает сжатие, снапшоты, шифрование. -
raw
— простой и быстрый, но без дополнительных возможностей.
Thin Provisioning
Выделение пространства по мере использования, без предварительного резервирования всего объема.
Snapshots
Позволяют сохранить состояние диска или всей VM в определённый момент времени.
VirtIO Disk
Паравиртуальный драйвер для ускоренной работы дисков.
🌐 Сетевые технологии
Типы сетевых подключений VM:
-
Bridge — VM напрямую в физической сети.
-
NAT — VM за NAT, доступ к интернету есть, но изолирована.
-
Macvtap / Macvlan — отдельный MAC и доступ к физической сети.
Tap-интерфейсы
Виртуальные сетевые устройства уровня L2, используемые для подключения VM к bridge.
VirtIO Net
Паравиртуальный сетевой интерфейс с высокой производительностью.
Встроенные сетевые сервисы
Часто гипервизоры запускают dnsmasq
для DHCP, DNS, TFTP (например, libvirt).
PXE Boot
Поддержка загрузки VM по сети, используется для автоматической установки.
9p / VirtFS
Простой механизм шаринга директорий между хостом и VM.
🧰 Инструменты и сервисы
KVM
Модуль ядра Linux, превращающий систему в гипервизор. Работает с QEMU.
QEMU
Эмулятор и виртуализатор, может использовать KVM для ускорения.
libvirt
Фреймворк для управления виртуализацией. Предоставляет virsh
, virt-manager
, API.
Cloud-init
Автоматизация инициализации VM: пользователь, SSH, hostname, сеть и др.
📌 Заключение
Виртуализация — это не только запуск одной ОС внутри другой. Это целая экосистема драйверов, сервисов и утилит, которые позволяют гибко управлять вычислительными ресурсами, повышать эффективность и автоматизировать развертывание сервисов.