OpenStack, KVM, QEMU и libvirt: разные уровни стека
Виртуализация — это создание изолированных логических ресурсов поверх физических серверов. OpenStack располагается выше слоя виртуализации: он принимает запросы на создание ресурсов, проверяет права и квоты, выбирает место размещения и координирует сервисы. Сам по себе он не исполняет гостевой код VM.
Назначение компонентов в распространённой связке OpenStack с KVM
| Компонент | Уровень | Что делает |
|---|---|---|
| QEMU | Процесс VM и модель виртуального оборудования | Создаёт процесс виртуальной машины, эмулирует или предоставляет виртуальные устройства. |
| KVM | Подсистема ядра Linux | Использует ап паратную виртуализацию CPU и ускоряет выполнение гостевого кода. |
| libvirt | Интерфейс управления виртуализацией | Предоставляет API и службы, через которые можно управлять доменами QEMU/KVM, сетями и хранилищем. |
| Nova | Вычислительный сервис OpenStack | Управляет жизненным циклом экземпляров, планированием и взаимодействием с compute-узлами через драйверы. |
| OpenStack | Платформа част ного облака | Объединяет вычисления, сети, образы, хранение, идентификацию и API в модель предоставления IaaS. |
На compute-узле служба nova-compute обычно использует драйвер libvirt, который управляет связкой QEMU/KVM. Упрощённо путь таков: Nova поручает создать экземпляр, драйвер формирует описание домена, libvirt запускает QEMU, а QEMU использует KVM для аппаратно ускоренного исполнения гостевой ОС. Поэтому фраза «OpenStack работает на KVM» допустима как описание частой архитектуры, но не как универсальное свойство платформы.
Зависимость от релиза и способа развёртывания
Практическая установка и локальное управление KVM/QEMU/libvirt — отдельная задача: KVM, QEMU и libvirt в Linux: установка, VM, virsh и Guest Agent. OpenStack добавляет к этому стеку распределённую плоскость управления, многопользовательскую модель и сервисы инфраструктуры.
Сервисы OpenStack: путь от запроса до работающей VM
Сервисы разделены по задачам и взаимодействуют через API. Это позволяет независимо развивать и масштабировать части платформы, но требует согласованной эксплуатации: недоступность или неверная настройка одного сервиса может помешать созданию VM, даже если compute-узлы исправны.
Основные сервисы в типичном предоставлении виртуальной машины
| Сервис | Роль | Граница ответственности |
|---|---|---|
| Keystone | Идентификация и доступ | Аутентифицирует пользователей и сервисы, выдаёт токены, связывает пользователей, проекты и роли. |
| Nova | Вычисления | Принимает запрос на экземпляр, планирует размещение и управляет жизненным циклом VM через compute driver. |
| Glance | Образы | Каталогизирует и предоставляет образы гостевых ОС; хранение файлов образов может быть организовано разными backend-способами. |
| OpenStack Placement | Учёт ресурсов | Ведёт сведения о доступных ресурсах, их характеристиках и распределениях; выдаёт Nova кандидатов, но не запускает VM. |
| Neutron | Сети | Предоставляет API сетей, подсетей, портов, маршрутизаторов и групп безопасности. |
| Cinder | Блочное хранение | Создаёт и подключает постоянные тома к экземплярам через драйверы систем хранения. |
Neutron задаёт облачную модель сети через API, но сам факт наличия Neutron не определяет способ передачи трафика и полный набор сетевых функций. Реализация сетей, внешней связности, маршрутизации и политик зависит от ML2-драйвера, выбранного сетевого backend или SDN-решения, физической сети и архитектуры облака. Балансировку нагрузки обычно предоставляет отдельный сервис Octavia, а её возможности зависят от выбранного provider driver и инфраструктуры.
Аналогично Cinder даёт единый API томов, но возможности снапшотов, клонирования, типов томов, репликации, QoS и подключения определяет конкретный backend хранения и его драйвер. Cinder не превращает локальные диски серверов или внешнюю СХД в отказоустойчивое хранилище без отдельного проектирования.
Дополнительные компоненты не являются обязательным минимумом для каждого развёртывания. Horizon предоставляет веб-интерфейс поверх API, Heat оркестрируе т наборы ресурсов по шаблонам, а Swift реализует объектное хранилище. Отсутствие Horizon не исключает работу через API и CLI; отсутствие Heat или Swift не отменяет работу Nova, Neutron и Cinder.
Как команда получает VM: проекты, роли, образы, flavor и квоты
В OpenStack пользователь не обязательно получает доступ к самим гипервизорам. Обычно ему назначают проект — логическую область владения ресурсами. Пользователь — это учётная запись, роль определяет разрешённые действия в проекте, а квота ограничивает потребление отдельных типов ресурсов. Точные наборы политик и прав определяются конфигурацией облака и политиками сервисов, а не только названием роли.
- Пользователь выбирает проект. Keystone аутентифицирует его и выдаёт токен для API. Ожидаемый результат — запрос выполняется от имени конкретного проекта, а не от имени администратора всей инфраструктуры.
- Пользователь выбирает образ и flavor. Образ из Glance содержит основу гостевой ОС. Flavor — шаблон вычислительных параметров экземпляра, обычно включающий vCPU, память и корневой диск; возможны дополнительные характеристики, заданные оператором облака.
- Платформа проверяет ограничения. Nova и связанные сервисы учитывают квоты проекта, доступность запрошенных ресурсов и политики размещения. При превышении квоты или отсутствии подходящего кандидата экземпляр не должен считаться созданным: причину нужно искать в ответе API и журналах соответствующего сервиса.
- Nova выбирает compute-узел. Планировщик использует сведения Placement о ресурсах и характеристиках, после чего задание на сборку экземпляра передаётся службе
nova-computeвыбранного узла. - Платформа готовит подключения и запускает VM. Nova координирует получение сетевой информации и портов Neutron, а при запросе постоянного тома — его создание или подключение через Cinder. После подготовки необходимых ресурсов
nova-computeвызывает настроенный драйвер виртуализации для запуска VM. Детали последовательности зависят от способа загрузки экземпляра и конфигурации облака. - Гостевая ОС проходит начальную настройку. При подготовленном образе Cloud-Init может применить метаданные и пользовательские данные: например, ключ SSH, имя хоста или сетевую конфигурацию. Без Cloud-Init наличие user data ещё не означает, что гостевая ОС применит эти данные.
Что проверять после выдачи доступа команде
Из каких слоёв состоит частное облако OpenStack
Типовые инфраструктурные слои OpenStack
| Слой | Состав | Что нужно спроектировать |
|---|---|---|
| Control plane | API-сервисы, Keystone, планирование Nova, Placement, базы данных, очереди сообщений и связанные службы | Доступность управляющих компонентов, резервирование зависимостей, обновления, секреты, мониторинг и восстановление. |
| Compute | Физические серверы с nova-compute, выбранным драйвером и, часто, QEMU/KVM/libvirt | Профили CPU и памяти, совместимость оборудования, локальные ресурсы, размещение VM, обслуживание и запас ёмкости. |
| Сеть | Сеть управления, API, tenant-трафик, внешняя связность и backend Neutron | Разделе ние потоков, MTU, маршрутизация, адресация, физические uplink, безопасность и отказ доменов сети. |
| Хранение | Хранилище образов, корневых дисков по выбранной схеме и томов Cinder | Производительность, доступность, домены отказа, интеграция backend-драйверов, защита и восстановление данных. |
Control plane можно отделять от compute-узлов или совмещать в ограниченных сценариях, но это архитектурный выбор с последствиями для изоляции ресурсов, обновлений и отказов. Универсального минимального числа серверов, CPU, RAM или сетевых интерфейсов для OpenStack нет: оно зависит от активных сервисов, требований к высокой доступности, backend-хранилища, сетевой схемы и профиля нагрузки.
Способ установки также не универсален. Средства развёртывания имею т собственные матрицы совместимости с релизами OpenStack, операционными системами и топологиями. Инструмент выбирают только после проверки его официального руководства и поддерживаемой версии для целевого релиза, а не потому, что какой-либо способ считается «стандартной» установкой OpenStack.
Когда OpenStack оправдан, а когда достаточно кластера виртуализации
Признаки обоснованного выбора OpenStack
Преимущества
- ✅Несколько команд или подразделений регулярно запрашивают изолированные ресурсы и должны управлять ими в границах проектов.
- ✅VM, сети и тома нужно создавать повторяемо через API, инфраструктуру как код и CI/CD, а не через индивидуальные заявки администраторам.
- ✅Нужны квоты, роли, каталог образов и контролируемое самообслуживание пользователей.
- ✅Вычислительные, сетевые и компоненты хранения требуется развивать или масштабировать как самостоятельные слои.
- ✅Есть команда, готовая сопровождать распределённую платформу, её зависимости, обновления и диагностику.
Недостатки
- ❌Небольшое число VM создаётся редко и почти всегда администраторами.
- ❌Главная задача — централизованно управлять несколькими хостами и VM, а не предоставлять внутренний IaaS-сервис.
- ❌Нет владельца облачной платформы, процессов поддержки API, мониторинга и управления изменениями.
- ❌Сеть и хранилище нельзя подготовить под выбранные backend-компоненты либо их эксплуатация не укладывается в компетенции команды.
Анти-паттерн: внедрять OpenStack только потому, что уже есть KVM-хосты
Выбор по характеру задачи
| Сценарий | Что обычно подходит | Почему |
|---|---|---|
| Небольшой парк серверных VM, операции выполняет одна команда администраторов | vSphere, отказоустойчивый кластер Hyper-V, Proxmox VE или решение централизованного управления поверх KVM/libvirt | Нужны управление хостами и VM, а при необходимости — миграции и кластерные функции конкретной платформы, но не обязательно облачное самообслуживание. Наличие HA и миграций проверяют для выбранного состава решения. |
| Несколько внутренних команд регулярно создают тестовые и прикладные среды | OpenStack при наличии готовности к эксплуатации | Проекты, квоты, API и каталог образов позволяют стандартизировать выдачу ресурсов. |
| Постоянная автоматическая выдача инфраструктуры из конвейеров разработки | OpenStack или другое решение с подходящим API и моделью самообслуживания | Ценность создаёт не KVM сам по себе, а программно управляемое предоставление ресурсов. |
| Нужно сравнить платформы виртуализации в целом | Отдельный проект оценки | Сопоставляют не только гипервизор, но и поддержку, совместимость, миграции, HA, хранение, сеть, лицензирование и навыки команды. |
Для сравнения VMware, Hyper-V, Proxmox VE, KVM/QEMU/libvirt и Xen по более широкому набору критериев используйте материал VMware, Hyper-V, Proxmox, KVM и Xen: выбор платформы виртуализации. Расчёт хостов, запаса при отказе, сети и хранилища относится к отдельному проектированию: Как спроектировать виртуальную инфраструктуру для продакшена и 1С.
OpenStack vs VMware: сравнивать нужно одинаковые уровни
Сравнение «OpenStack или один ESXi-хост» некорректно: это компоненты разных уровней. VMware ESXi — гипервизорный слой, сопоставимый по назначению со стеком QEMU/KVM/libvirt, хотя архитектуры и модель поставки различаются. vCenter Server и vSphere относятся к централизованному управлению виртуальной инфраструктурой. OpenStack — управляющая платформа частного IaaS-облака, которая включает модель проектов, квот, API и самообслуживания.
Корректные уровни сопоставления OpenStack и VMware
| Уровень | OpenStack / KVM-экосистема | VMware-экосистема | Что сравнивать |
|---|---|---|---|
| Исполнение VM | QEMU/KVM, обычно под управлением libvirt | ESXi | Поддержку гостевых ОС и оборудования, сетевые и хранилищные возможности, производительность, операционные ограничения. |
| Централизованное управление | Сервисы OpenStack управляют ресурсами через собственную распределённую архитектуру | vCenter Server в составе vSphere | Управление хостами и VM, интеграции, эксплуатационные процессы, лицензирование и поддерживаемые кластерные функции. |
| Частное облако и самообслуживание | Проекты, роли, квоты, API, образы, автоматизация | Только тот набор VMware-компонентов и автоматизации, который в рассматриваемой версии действительно предоставляет аналогичные функции | Модель арендаторов, каталог услуг, выдачу ресурсов, политики, API и интеграцию с процессами организации. |
Один vCenter не следует считать прямым эквивалентом OpenStack-проектов, квот и self-service-механизмов. В VMware-среде часть похожих возможностей может предоставляться дополнительными продуктами, пакетами, интеграциями или автоматизацией; состав и права использования необходимо проверять для конкретной версии и подпис ки. Это же относится к VMware HA, DRS, сетевым и хранилищным функциям: они не появляются из одного факта наличия ESXi или vCenter. О базовой роли vCenter и кластера — в статье VMware vSphere и vCenter Server: установка VCSA и добавление хостов, о HA и DRS — в VMware vSphere HA и DRS: перезапуск VM и балансировка ресурсов.
Поддержку, эксплуатационную модель и лицензирование сравнивают отдельно. Нельзя заранее утверждать, что OpenStack дешевле, проще масштабируется или автоматически надёжнее vSphere: итог зависит от архитектуры, коммерческих условий, состава интеграций, используемого оборудования и компетенций команды. Актуальные особенности VMware-лицензирования рассматриваются в Лицензирование VMware vSphere, ESXi и vCenter: редакции, подписки и ограничения.
Эксплуатационные затраты и риски до запуска проекта
- Control plane и зависимости. Нужно обеспечить наблюдаемость API-сервисов, очередей сообщений, баз данных, балансировщиков и механизмов идентификации. Отказ control plane может не остановить уже работающие VM, но ограничить создание, изменение или восстановление ресурсов.
- Сеть. Neutron требует согласования логической сети облака с физической фабрикой, внешними сетями, MTU, маршрутами, адресным планом и политиками доступа. Ошибки часто проявляются не при запуске VM, а при подключении tenant-сетей или внешней связности.
- Хранение и данные. Образы, корневые диски и Cinder-тома имеют разные пути и backend-зависимости. Снапшоты, репликация и восстановление нужно проверять для выбранного backend, а не выводить из наличия API Cinder.
- Обновления. Версии сервисов, ОС, драйверов, сетевого backend и СХД обновляют по совместимому плану. Нужны стенд или контролируемая среда проверки, регламент отката и понимание поддерживаемого пути обновления.
- Безопасность плоскост и управления. Keystone-политики, секреты сервисов, доступ к API, изоляция сетей управления и аудит действий требуют отдельной настройки. Изоляция VM не заменяет защиту control plane; общие принципы разобраны в Защита виртуальных машин: изоляция, шифрование и границы гипервизора.
- Резервное копирование и DR. Высокая доступность сервисов, перезапуск VM и резервная копия данных решают разные задачи. Для критичных приложений отдельно определяют RPO, RTO, порядок восстановления и ответственность владельцев данных.
- Компетенции и процессы. Команде нужны навыки Linux, сетей, хранилищ, API, диагностики распределённых сервисов и управления изменениями. Без этого преимущества самообслуживания переходят в неконтролируемое потребление ресурсов.
HA не возникает по умолчанию
Как принять решение о внедрении OpenStack
Это не инструкция по установке, а последовательность проверки, после которой можно обоснованно выбрать облачную платформу или более простой кластер виртуализации.
- 1Зафиксируйте потребителей ресурсовПеречислите команды, проекты и типы нагрузок, которые будут получать VM, сети и тома. Ожидаемый результат — понятна потребность в изоляции арендаторов и самообслуживании. Если почти все операции выполняет одна администраторская команда для ограниченного числа VM, оцените обычный кластер как основной вариант.
- 2Проверьте повторяемость выдачиОпределите, какие ресурсы должны создаваться через API и шаблоны: экземпляры, сети, порты, тома, правила доступа. Ожидаемый результат — есть повторяемые сценарии, которые экономят ручные операции. Если каждый запрос уникален и редок, автоматизация OpenStack может не окупить с ложность.
- 3Выберите целевой релиз и способ развёртыванияСверьте официальный жизненный цикл выбранного релиза OpenStack, совместимость ОС, compute drivers, сетевых и хранилищных backend-компонентов, а также поддерживаемые топологии выбранного инструмента развёртывания. Ожидаемый результат — зафиксирован совместимый стек. При несовместимости не компенсируйте её ручными обходами: замените компонент, релиз или способ развёртывания.
- 4Спроектируйте границы control plane, сети и храненияОтдельно определите домены отказа, потоки управления и tenant-трафика, внешние сети, хранение образов и Cinder-томов, а также зависимости control plane. Ожидаемый результат — для каждого слоя есть владелец, схема мониторинга и порядок восстановления. Если такой схемы нет, проект остаётся набором серверов, а не готовой облачной платформой.
- 5Проведите пилот по пользовательскому путиПроверьте не только запуск тестовой VM, но и полный путь: вход в проект, применение квоты, выдачу образа и flavor, создание сети, подключение тома, автоматизацию через API и удаление ресурсов. Ожидаемый результат — измеримый и воспроизводимый сценарий для внутренней команды. Отклонения локализуют по идентификаторам запросов в сервисах Keystone, Nova, Neutron, Glance, Placement и Cinder, а затем исправляют в соответствующем слое.
Термины в статье
- Виртуализация
- Технология абстрагирования физических вычислительных ресурсов, позволяющая создавать виртуальные серверы, хранилища, сети и другие логические ресурсы.
- Виртуальная машина
- Изолированная вычислительная среда с виртуальными процессорами, памятью, дисками и сетевыми адаптерами, в которой под управлением гипервизора работает гостевая ОС.
- Виртуальная сеть
- Виртуальная сеть — логическая сеть, реализованная программными средствами для связи ВМ и других виртуальных нагрузок между собой и, при необходимости, с физической сетью.
- Высокая доступность
- Высокая доступность (HA) — способность системы сохранять сервис или автоматически восстанавливать его с минимальным простоем при отказе компонентов.
- Гипервизор
- Программный слой, который абстрагирует ресурсы физического хоста, выполняет виртуальные машины и управляет ими.
- Домен отказа
- Домен отказа — группа компонентов с общей причиной недоступности, отказ которой может одновременно вывести из строя несколько копий данных или сервисов.
- Имя хоста
- Имя хоста — идентификатор узла в сети и операционной системе, используемый для отображения, журналирования и разрешения имени в IP-адрес при наличии DNS или hosts.
- Системная служба
- Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
- Снимок состояния
- Зафиксированное гипервизором состояние поддерживаемых виртуальных дисков и конфигурации ВМ на определённый момент, иногда также памяти, к которому можно выполнить откат.
- Частное облако
- Частное облако — облачная среда для исключительного использования одной организацией с централизованным управлением и самообслуживанием пользователей.
- Cinder
- Cinder — служба блочного хранения OpenStack, создающая и подключающая виртуальным машинам постоянные тома через драйверы систем хранения.
- Cloud-Init
- Cloud-Init — система начальной настройки облачных экземпляров, применяющая метаданные и пользовательские данные при первом запуске виртуальной машины.
- Glance
- Glance — служба образов OpenStack, которая хранит, каталогизирует и предоставляет образы виртуальных машин другим компонентам облака через API.
- Guest OS
- Операционная система, установленная в виртуальной машине и работающая под управлением гипервизора; не следует путать с хостовой ОС гипервизора типа 2.
- Heat
- Heat — сервис оркестрации OpenStack, который по шаблону HOT или CloudFormation создаёт и связывает ресурсы облака в единый стек.
- Horizon
- Horizon — веб-панель управления OpenStack, предоставляющая графический доступ к проектам, ресурсам и сервисам через API облачной платформы.
- Hyper-V
- Платформа виртуализации Microsoft с гипервизором типа 1, доступная как роль Windows Server и компонент Windows 10/11 Pro, Enterprise и Education.
- Keystone
- Keystone — служба идентификации OpenStack, которая аутентифицирует пользователей и сервисы, выдаёт токены и управляет назначением ролей для доступа к проектам и API.
- KVM
- Подсистема аппаратной виртуализации ядра Linux, предоставляющая пользовательским мониторам ВМ, обычно QEMU, интерфейс для запуска изолированных виртуальных машин.
- libvirt
- libvirt — открытый набор библиотек, API, служб и утилит для унифицированного управления ВМ, контейнерами, сетями и хранилищами на платформах виртуализации.
- Neutron
- Neutron — сервис сетей OpenStack, предоставляющий API для сетей, подсетей, портов, маршрутизаторов и правил групп безопасности; передачу трафика реализует выбранный сетевой backend.
- Nova
- Nova — вычислительная служба OpenStack для предоставления вычислительных экземпляров и управления ими через планировщик и драйверы; сама Nova не является гипервизором.
- OpenStack
- Открытая облачная платформа для построения публичных и частных IaaS облаков, управляющая вычислениями, хранением и сетями через API.
- OpenStack Placement
- OpenStack Placement — служба API OpenStack для учёта ресурсов, их характеристик и распределений; она выдаёт кандидатов планировщику, но не запускает виртуальные машины.
- Proxmox
- Открытая платформа серверной виртуализации на базе Debian, использующая QEMU/KVM для виртуальных машин и LXC для системных Linux-контейнеров.
- QEMU
- QEMU — открытый эмулятор вычислительных систем и монитор виртуальных машин; в Linux он может использовать KVM для виртуализации с аппаратным ускорением.
- SSH
- SSH — криптографический сетевой протокол для удалённого доступа и передачи данных, аутентифицирующий стороны и защищающий сеанс от перехвата.
- Swift
- Swift — распределённое объектное хранилище OpenStack, сохраняющее данные как объекты в контейнерах и предоставляющее доступ к ним через HTTP API.
- vCPU
- vCPU — виртуальный логический процессор, предоставляемый виртуальной машине; гипервизор планирует его выполнение на процессорных ресурсах хоста.
- VMware
- VMware — бренд Broadcom и семейство продуктов виртуализации; серверная платформа vSphere объединяет гипервизор ESXi и средства управления vCenter Server.
- Xen
- Xen — гипервизор первого типа, работающий непосредственно на сервере и поддерживающий режимы виртуализации HVM, PV и PVH.
