Виртуальная машина
Программная эмуляция компьютера со своей ОС и выделенными ресурсами, работающая изолированно поверх физического сервера.
Что такое виртуальная машина
Виртуальная машина (ВМ, VM, virtual machine, в разговоре — «виртуалка») — программно созданный компьютер внутри физического. У неё собственная операционная система, своё ядро, свои виртуальные процессоры, память, диск и сетевая карта. Гостевая ОС не подозревает, что железо ей не принадлежит: для неё диск — обычный диск, просто на самом деле это файл на хосте.
Создаёт и обслуживает виртуальные машины гипервизор. Одна физическая машина спокойно держит десятки ВМ — на этом устроены VPS, облачные серверы и корпоративные ЦОД.
Простыми словами: вы арендуете не сервер, а его «нарезку» — и платите за долю, а не за целую железку в стойке.
Из чего состоит ВМ
| Ресурс | Что это физически |
|---|---|
| vCPU | Такты реального ядра, выделяемые планировщиком гипервизора |
| RAM | Область памяти хоста, отданная гостю |
| Виртуальный диск | Файл (.qcow2, .vmdk, .vhdx) или LVM-том на хосте |
| Сетевой адаптер | Виртуальный интерфейс в мосте или NAT хоста |
| Конфигурация | Описание: сколько чего выдать и откуда грузиться |
Диск в виде файла даёт три вещи, недостижимые на голом железе: снапшоты, клонирование за минуты и перенос ВМ на другой хост копированием.
Зачем нужны виртуальные машины
- Утилизация железа. Сервер с 64 ядрами под одним приложением простаивает на 90%. Разрезанный на ВМ — работает.
- Изоляция. Упавшая или взломанная ВМ не задевает соседей: у каждой своё ядро.
- Быстрое развёртывание. Новый сервер — не заявка в закупку, а команда API и полторы минуты.
- Снапшоты и откат. Снял снимок → обновил систему → сломалось → откатился за секунды.
- Другая ОС. Windows-приложение на Linux-хосте, старый CentOS ради легаси.
- Живая миграция. Перенос работающей ВМ между хостами для обслуживания железа.
ВМ vs контейнер
Главная развилка при выборе.
| Виртуальная машина | Контейнер | |
|---|---|---|
| Ядро ОС | Своё в каждой ВМ | Общее ядро хоста |
| Старт | Десятки секунд | Миллисекунды |
| Накладные расходы | Гигабайты RAM на гостевую ОС | Мегабайты |
| Изоляция | Сильная, на уровне железа | Слабее: одно ядро на всех |
| Гостевая ОС | Любая | Только совместимая с ядром хоста |
| Плотность на хост | Десятки | Сотни |
ВМ выбирают, когда нужна другая ОС или жёсткая изоляция (разные клиенты, требования регулятора). Контейнеры — когда нужна плотность и скорость выкатки. В реальности это слои одного стека: ВМ на гипервизоре, контейнеры внутри ВМ.
Как создают ВМ
# KVM/libvirt: создать ВМ из cloud-образа Ubuntu
virt-install --name web-01 \
--vcpus 4 --memory 8192 \
--disk path=/var/lib/libvirt/images/web-01.qcow2,size=40 \
--os-variant ubuntu24.04 \
--network bridge=br0 \
--cloud-init user-data=./user-data.yaml \
--import
virsh list --all # список ВМ
virsh start web-01 # запустить
virsh snapshot-create-as web-01 before-upgrade # снапшот
virsh shutdown web-01 # корректно выключить
Первичную настройку гостя (пользователи, SSH-ключи, пакеты) обычно отдают cloud-init, а дальнейшую конфигурацию — Ansible.
GPU в виртуальной машине
По умолчанию гость видит только простую виртуальную видеокарту — для вычислений она бесполезна. Чтобы отдать в ВМ настоящую GPU, применяют GPU passthrough: карта через IOMMU отвязывается от хоста и целиком передаётся гостю, где работает штатный драйвер NVIDIA с производительностью, близкой к нативной. Именно так устроены арендуемые GPU-инстансы. Поделить одну карту между несколькими ВМ позволяет MIG.
Связанные термины
- Гипервизор — то, что запускает и обслуживает ВМ
- Виртуализация — технология в основе
- Гипервизоры (VirtualBox/KVM/Hyper-V) — чем создают ВМ на практике
- VPS — виртуальная машина в аренду
- snapshot — снимок состояния ВМ
- контейнер — более лёгкая альтернатива
Готовы запустить GPU-задачу?
Запустить GPU-сервер