Виртуализация

Что такое Hypervisor?

Определение

A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.

Почему Hypervisor важен

Гипервизор типа 1 работает непосредственно на оборудовании; KVM необычен тем, что это гипервизор типа 1, реализованный как модуль ядра Linux, что позволяет использовать всю экосистему драйверов Linux.

Hypervisor на практике

Когда вы запускаете сервер на гипервизоре KVM, вы смотрите на фактическое выделение оборудования: vCPU, RAM, дисковый I/O. Вы регулируете это из панели, часто горячо добавляя память без перезагрузки. Если ошибиться, перегрузив хост, шумные нагрузки соседей будут душить CPU или IO вашего экземпляра, превращая правильно настроенную гостевую систему в вялую. Вложенная виртуализация означает, что вы можете запустить гипервизор внутри своего гипервизора, удобно для тестирования, но это стоит производительности и может запутать подсчёт собственных ресурсов.

Что люди часто понимают неправильно в отношении Hypervisor

Частая ошибка — считать гипервизор границей контейнера. Это не так. Гипервизор даёт полноценную виртуальную машину: собственное ядро, собственный /proc, без общих namespace. Люди предполагают, что процессы соседа невидимы или что кастомное ядро невозможно, а потом упираются в ограничения. Исправление: с KVM вы получаете настоящую изоляцию и контроль, поэтому можете загрузить собранный вручную образ или запустить вложенную виртуализацию — то, что контейнер не умеет.

Hypervisor — частые вопросы

Что значит «гипервизор первого типа»?

Гипервизор первого типа работает напрямую на оборудовании хоста, а не поверх операционной системы. KVM уникален тем, что это гипервизор первого типа, реализованный как модуль ядра Linux, поэтому он использует всю экосистему драйверов Linux для управления железом. Это даёт производительность «голой» виртуализации с гибкостью Linux.

Чем KVM отличается от контейнеров, таких как OpenVZ?

KVM обеспечивает настоящую виртуализацию: каждая гостевая система получает своё ядро, свой /proc, без общих namespace, так что у вас есть полный root-доступ и возможность запускать кастомные ядра. Контейнеры разделяют ядро хоста и namespace, что ограничивает возможности. С KVM вы получаете изоляцию и контроль, включая вложенную виртуализацию или загрузку собственного ISO.

Где встречается Hypervisor

Больше из раздела «виртуализация»

KVM
KVM — это полная аппаратная виртуализация, встроенная в ядро Linux, предоставляющая каждому гостю собственное ядро и аппаратно-обеспеченную изоляцию от других арендаторов.
OpenVZ
OpenVZ — это контейнерная виртуализация, в которой каждый экземпляр разделяет ядро хоста, поэтому гости не могут загружать модули ядра или запускать другую операционную систему.
LXC
LXC — это нативная контейнеризация Linux, которая изолирует процессы с помощью namespace и cgroups, разделяя ядро хоста.
Nested virtualisation
Вложенная виртуализация позволяет виртуальной машине самой запускать виртуальные машины, предоставляя гостю расширения виртуализации процессора.
vCPU
vCPU — это виртуальный процессор, предоставляемый гостевой системе, поддерживаемый временем планирования на физическом ядре или потоке.
cloud-init
cloud-init — стандартный механизм настройки виртуальной машины при первой загрузке, использующий метаданные, предоставляемые платформой.