Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает под управлением собственной операционной системы. Эти операционные системы также известны, как «гостевые операционные системы». Они в свою очередь работают в другой операционной системе, которая также известна, как «хостовая операционная система». Каждый «гость», который работает таким образом, не знает о других «гостях», которые работают на том же хосте. Для того, чтобы обеспечить такую незаметность, используются различные методы виртуализации.
Разновидности виртуализации сервера:
Гипервизор
Гипервизор, или VMM (virtual machine monitor – монитор виртуальных машин), - это своего рода слой между операционной системой и оборудованием. Он обеспечивает работу необходимых служб и функций для того, чтобы несколько операционных систем могли работать без сбоев.
Он выявляет ловушки, отвечает на инструкции привилегированного процессора, организует очереди, выполняет диспетчеризацию и отвечает на аппаратные запросы. Операционная система хоста, которая управляет виртуальными машинами работает поверх гипервизора.
Паравиртуализация
Паравиртуализация основана на гипервизоре. В этой модели обрабатывается больше всего ресурсов, которые необходимы для эмуляции и организации программных ловушек в программно реализованной виртуализации. Гостевая операционная система перед установкой на виртуальную машину модифицируется и заново компилируется.
Производительность модифицированной гостевой операционной системы повышается, так как она взаимодействует напрямую с гипервизором, а потребление ресурсов эмуляцией сходит на нет.
Пример: Xen в основном используют паравиртуализацию, где для поддержки административной среды, также известной как домен 0, используется настраиваемая среда Linux.
Преимущества:
- Проще
- Повышенная производительность
- Нет дополнительного потребления ресурсов, связанного с эмуляцией
Недостатки:
- Необходима модификация гостевой операционной системы
Полная виртуализация
Полная виртуализация очень похожа на паравиртуализацию. Она может эмулировать базовое аппаратное обеспечение, если это необходимо. Гипервизор перехватывает машинные операции, которые операционная система использует для выполнения операций ввода-вывода или изменения состояния системы. После того, как операции были перехвачены, они эмулируются в программном обеспечении, при этом коды состояния почти полностью можно сопоставить с теми, которые могли быть предоставлены реальным аппаратным обеспечением. Именно поэтому немодифицированная операционная система может работать поверх гипервизора.
Пример: данный метод использует VMWare ESX. В качестве административной ОС используется настраиваемая версия Linux, также известная как Service Console. Этот метод не такой быстрый, как паравиртуализация.
Преимущества:
- Не требуется модификация гостевой операционной системы
Недостатки:
- Сложный метод
- Более медленный из-за наличия эмуляции
- Затрудняет установку нового драйвера устройства
Виртуализация с аппаратной поддержкой
Если говорить о принципе работы, то этот метод аналогичен полной виртуализации и паравиртуализации, за исключением того факта, что он требует аппаратной поддержки. Большая часть потребляемых гипервизором ресурсов при перехвате и эмуляции операций ввода-вывода и кодов состояния, которые выполняются в гостевой ОС, покрывается аппаратным расширением архитектуры х86.
Здесь можно запустить и немодифицированную ОС, так как для обработки запросов на доступ к оборудованию, привилегированных и защищенных операций, а также для связи с виртуальной машиной будет использоваться аппаратная поддержка виртуализации.
Пример: аппаратную поддержку виртуализации обеспечивают такие технологии, как AMd – V Pacifica и Intel VT Vanderpool.
Преимущества:
- Не требуется модификация гостевой операционной системы
- Гипервизор потребляет не так много ресурсов
Недостатки:
- Требуется аппаратная поддержка
Виртуализация на уровне ядра
Вместо того, чтобы использовать гипервизор, слой виртуализации запускает отдельную версию ядра Linux и рассматривает связанную с ней виртуальную машину как процесс из пользовательского пространства на физическом хосте. Это в какой-то степени упрощает запуск нескольких виртуальных машин на одном хосте. Для связи между основным ядром Linux и виртуальной машиной используется драйвер устройства.
Для виртуализации требуется аппаратная поддержка (Intel VT или AMD - V). В качестве контейнеров отображения и выполнения для виртуальных машин используется немного модифицированный процесс QEMU. Во многом виртуализация на уровне ядра – это специализированная форма виртуализации серверов.
Пример: пользовательский режим Linux (UML - User – Mode Linux) и Kernel Virtual Machine (KVM).
Преимущества:
- Не требуется специальное программное обеспечение для администрирования
- Низкое потребление ресурсов
Недостатки:
- Требуется аппаратная поддержка
Виртуализация на системном уровне или уровне ОС
Эта модель запускает несколько различных (с логической точки зрения) сред на одном экземпляре ядра операционной системы. Иначе его называют «подходом на основе общего ядра», так как все виртуальные машины используют одно общее ядро операционной системы хоста. Эта модель основана на концепции изменения корневого каталога «chroot».
сhroot начинает свою работу во время загрузки. Ядро использует корневые файловые системы для загрузки драйверов и выполнения других задач инициализации системы на ранних этапах. Затем оно переключается на другую корневую файловую систему с помощью команды chroot для того, чтобы организовать новую файловую систему на диске в качестве окончательной корневой файловой системы и продолжить инициализацию и настройку системы уже в этой файловой системе.
Механизм chroot виртуализации на системном уровне – это расширение этой концепции. Он позволяет системе запускать виртуальные серверы с их собственным набором процессов, которые выполняются относительно их собственных каталогов файловой системы.
Основное различие между виртуализацией на уровне системы и виртуализацией серверов состоит в том, что в одном случае можно запускать различные операционные системы в разных виртуальных системах, а в другом – нет. Если речь идет о виртуализации на системном уровне, то все виртуальные серверы должны использовать одну и ту же копию операционной системы, а если о виртуализации серверов, то здесь на разных серверах могут быть разные операционные системы (в том числе и разные версии одной операционной системы).
Пример: FreeVPS, Linux Vserver, OpenVZ и другие.
Преимущества:
- Значительно проще, чем укомплектованные машины (включая ядро)
- Можно разместить гораздо больше виртуальных серверов
- Повышенная безопасность и улучшенная локализация
- Виртуализация операционной системы практически не потребляет дополнительных ресурсов
- Благодаря виртуализации операционной системы возможна динамическая миграция
- Может использоваться динамическая балансировка нагрузки контейнеров между узлами и кластерами
- При виртуализации операционной системы можно использовать метод копирования при записи (CoW - copy-on-write) на уровне файла. Он упрощает резервное копирование данных, экономит пространство и упрощает кэширование в сравнении с копированием при записи на уровне блока.
Недостатки:
- Возникшие проблемы с ядром или драйвером могут вывести из строя все виртуальные серверы