Что это
KVM (Kernel-based Virtual Machine) — это технология полной аппаратной виртуализации, превращающая ядро Linux в гипервизор. LXC (Linux Containers) — это виртуализация на уровне операционной системы для запуска изолированных групп процессов.
| Параметр | KVM | LXC |
|---|---|---|
| Тип | Полная виртуализация (Type-2) | Контейнеризация |
| Ядро | Собственное у каждой VM | Общее ядро хоста |
| Изоляция | Аппаратная (Intel VT-x / AMD-V) | Программная (Namespaces, cgroups) |
| Гостевые ОС | Linux, Windows, BSD, Solaris | Только Linux |
| Оверхед на RAM | Высокий (фиксированное выделение) | Минимальный (динамическое) |
Производительность
KVM требует эмуляции оборудования, что создает накладные расходы на CPU в пределах 2-5%. Дисковая подсистема и сеть работают через драйверы virtio, обеспечивая до 90-95% пропускной способности физического канала. LXC обеспечивает производительность, идентичную bare-metal, так как процессы исполняются напрямую на ядре хоста без прослойки гипервизора. Задержки (latency) в LXC практически отсутствуют, что критично для высоконагруженных баз данных.
Конфигурация и сложность
Управление KVM обычно осуществляется через стек libvirt. Основной инструмент командной строки — virsh. Конфигурация хранится в XML-файлах. LXC использует утилиты lxc-* и простые текстовые конфиги. Пример создания контейнера: lxc-create -n web-server -t ubuntu. KVM требует настройки виртуальных мостов и выделения дисковых образов (qcow2/raw), в то время как LXC может работать напрямую с файловой системой хоста или LVM-томами.
Когда выбрать что
- KVM: Создание публичных облаков (IaaS), запуск Windows-серверов, изоляция недоверенного кода, тестирование разных версий ядер Linux.
- LXC: Максимально плотное размещение однотипных Linux-сервисов, запуск микросервисов, перенос legacy-приложений из физических серверов в изолированную среду без потерь скорости.
Стоимость / лицензия
Обе технологии распространяются под лицензией GNU GPL v2. Они бесплатны для коммерческого использования и интегрированы в основную ветку ядра Linux. Основные затраты приходятся на системы управления (Proxmox, OpenStack) и администрирование.
Экосистема и интеграции
KVM является стандартом для OpenStack, CloudStack и Proxmox VE. Поддерживается всеми крупными облачными провайдерами (AWS Nitro базируется на KVM). LXC лежит в основе Proxmox для контейнеров и используется в проекте LXD от Canonical, который добавляет REST API и удобное управление снимками (snapshots).
Вердикт
Выбирайте KVM, если приоритетом является безопасность, жесткая изоляция ресурсов и поддержка разных ОС. Выбирайте LXC, если требуется максимальная плотность упаковки сервисов на одном сервере и производительность уровня bare-metal для Linux-стека.