Что такое виртуальная машина (VM)?

«Что такое виртуальная машина (VM)?» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Виртуальная машина (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 имеет собственное полноценное ядро ОС, что обеспечивает более жесткую изоляцию, но требует больше ресурсов и времени на запуск.