DevOps & CI/CD

Виртуализация

Технология, позволяющая запускать на одном физическом сервере несколько изолированных виртуальных сред со своими ОС и ресурсами.

Что такое виртуализация

Виртуализация — технология, при которой физические ресурсы (процессор, память, диск, сеть) абстрагируются от железа и представляются программам в виде виртуальных. Одна машина превращается в несколько независимых сред, каждая со своей операционной системой, и ни одна не знает о существовании остальных.

Ради чего: сервер под одним приложением утилизируется на 10–15%, остальное оплаченное железо простаивает. Виртуализация превращает этот простой в полезную нагрузку. Без неё не было бы ни облачных вычислений, ни VPS, ни IaaS — вся аренда «серверов по клику» построена на ней.

Ключевой компонент — гипервизор: именно он делит ресурсы и держит изоляцию.

Что такое аппаратная виртуализация

Аппаратная виртуализация — поддержка виртуализации на уровне процессора: Intel VT-x и AMD-V. Процессор получает дополнительный режим выполнения, в котором гостевое ядро работает почти нативно, а при попытке привилегированной операции управление автоматически передаётся гипервизору.

Что это меняет: без аппаратной поддержки гипервизор вынужден анализировать и подменять инструкции программно — падение производительности в разы. С ней накладные расходы измеряются процентами.

Смежные технологии того же класса:

  • EPT / NPT — аппаратная трансляция памяти гостя, снимает главный тормоз ранней виртуализации.
  • IOMMU (Intel VT-d / AMD-Vi) — изоляция устройств по адресам DMA. Без неё невозможен GPU passthrough.
  • SR-IOV — одно физическое устройство (обычно сетевая карта) представляется как несколько виртуальных.
# Проверить поддержку и что она включена в UEFI
egrep -c '(vmx|svm)' /proc/cpuinfo    # 0 — выключено или нет поддержки
lscpu | grep -i virtualization        # VT-x / AMD-V
dmesg | grep -i -e DMAR -e IOMMU      # IOMMU активен

Если счётчик равен нулю на современном процессоре — включите Intel VT-x / AMD-V в UEFI/BIOS.

Виды виртуализации

Вид Что виртуализируется Пример
Серверная Целый компьютер с ОС KVM, ESXi, Hyper-V
Контейнерная Процессы поверх общего ядра Docker, LXC
Сетевая Коммутаторы, маршрутизаторы, сегменты VLAN, VPC, SDN
Хранилища Диски и тома поверх пула СХД, vSAN, Ceph
Рабочих мест Десктоп пользователя VDI
GPU Видеокарта MIG, vGPU

«Среда виртуализации» — собирательное название всего этого хозяйства на конкретной площадке: гипервизоры, хранилище, сеть и панель управления вроде Proxmox или vSphere.

Полная, пара- и контейнерная

  • Полная виртуализация: гость запускается без изменений и считает, что работает на реальном железе. Универсально, но эмуляция устройств стоит производительности.
  • Паравиртуализация: гость знает, что он виртуален, и вместо эмулируемых устройств использует специальные драйверы (virtio, vmxnet3, pvscsi) — обращается к гипервизору напрямую. Заметно быстрее по диску и сети; ради этого и ставят гостевые дополнения вроде VMware Tools.
  • Контейнеризация: изоляция процессов средствами одного ядра (namespaces, cgroups). Не виртуализация в строгом смысле — гостевой ОС нет, — но решает ту же задачу уплотнения, дешевле и с меньшей изоляцией.

Что даёт на практике

  • Уплотнение: 10–30 виртуальных машин на хост вместо одного приложения.
  • Изоляция: сбой или взлом одного гостя не затрагивает соседей.
  • Снапшоты и клонирование: откат за секунды, копия окружения за минуты.
  • Живая миграция: обслуживание железа без остановки сервисов.
  • Гибкость: добавить ВМ памяти — это правка конфига, а не поездка в ЦОД.

Цена виртуализации

Накладные расходы на CPU и память при аппаратной поддержке невелики. Заметнее другое: диск и сеть требуют paravirtual-драйверов, иначе теряется ощутимая доля производительности. Чувствительные к задержкам нагрузки и базы данных под предельной нагрузкой иногда всё ещё оставляют на голом железе. Для GPU-вычислений виртуализация неприемлема без passthrough: эмулированная видеокарта считать не умеет.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер