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

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

Ответ

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

С точки зрения DevOps, виртуализация решает ключевые задачи:

  1. Консолидация серверов: Повышение утилизации железа (с 5-15% до 60-80%).
  2. Изоляция сред: Разделение production, staging, development на одном железе.
  3. Быстрое развёртывание и клонирование: Шаблоны ВМ разворачиваются за минуты.
  4. Миграция и отказоустойчивость: Live Migration (например, в vSphere или KVM) позволяет переносить работающую ВМ на другой хост без простоя.

Основные типы гипервизоров, с которыми я работал:

Тип Название Описание Использование
Type 1 (Bare-metal) VMware ESXi, Microsoft Hyper-V, KVM Работает напрямую на аппаратном обеспечении. Максимальная производительность. Продакшен-датацентры, частые облака.
Type 2 (Hosted) VMware Workstation, VirtualBox Работает как приложение поверх хостовой ОС. Локальная разработка, тестирование.

Практический пример с KVM (ядро Linux):

# Установка KVM и инструментов управления на Ubuntu
sudo apt update && sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

# Добавление пользователя в группу libvirt для управления без sudo
sudo usermod -aG libvirt $(whoami)

# Создание ВМ из CLI с помощью virt-install (например, для автоматизации)
virt-install 
  --name=prod-db-01 
  --ram=4096 
  --vcpus=2 
  --disk path=/var/lib/libvirt/images/prod-db-01.qcow2,size=50 
  --os-type=linux 
  --os-variant=ubuntu22.04 
  --network bridge=br0 
  --graphics none 
  --console pty,target_type=serial 
  --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/' 
  --extra-args 'console=ttyS0,115200n8 serial'

Эволюция: от виртуализации к контейнеризации: Виртуализация эмулирует целое железо и ОС, что даёт полную изоляцию, но создаёт оверхед. Контейнеризация (Docker, LXC) виртуализирует не железо, а ядро ОС, что делает контейнеры гораздо легче и быстрее. В современном DevOps виртуализация (ВМ) часто используется для изоляции физических хостов, а внутри них уже запускаются сотни контейнеров.