Ответ
Виртуальная машина (VM) — это программная эмуляция физического компьютера (сервера), которая запускает собственную операционную систему (гостевая ОС) и приложения поверх слоя виртуализации — гипервизора. Гипервизор абстрагирует и распределяет ресурсы физического хоста (CPU, RAM, дисковое пространство, сеть) между несколькими изолированными виртуальными машинами.
Основные типы гипервизоров:
- Тип 1 (Bare-metal): Работает непосредственно на аппаратном обеспечении. Примеры: VMware ESXi, Microsoft Hyper-V, KVM (интегрирован в ядро Linux), Xen.
- Тип 2 (Hosted): Работает как приложение внутри основной ОС. Примеры: VMware Workstation, Oracle VirtualBox, Parallels Desktop.
Ключевые преимущества в контексте DevOps и инфраструктуры:
- Полная изоляция: Сбой или перезагрузка одной VM не затрагивает другие.
- Консолидация оборудования: Эффективное использование ресурсов мощного сервера за счет запуска множества ВМ.
- Переносимость и гибкость: Образ VM (файлы диска и конфигурации) можно легко копировать, переносить на другой хост или разворачивать из шаблона.
- Безопасность: Разные среды (prod, staging, dev) могут быть полностью изолированы на одном железе.
Пример создания VM с помощью KVM и libvirt (через CLI):
# Установка минимальной Ubuntu Server 22.04
virt-install
--name my-ubuntu-vm
--ram 2048
--vcpus 2
--disk path=/var/lib/libvirt/images/my-ubuntu.qcow2,size=20,format=qcow2
--os-variant ubuntu22.04
--network network=default
--graphics none
--console pty,target_type=serial
--location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/'
--extra-args 'console=ttyS0,115200n8 serial'
Сравнение с контейнерами: В отличие от контейнеров, которые делят ядро хоста, каждая VM имеет собственное полноценное ядро ОС, что обеспечивает более жесткую изоляцию, но требует больше ресурсов и времени на запуск.