KVM — виртуализация в ядре Linux

Виртуализация уже давно является неотъемлемой частью корпоративного мира и профессиональных серверных операций. На одном физическом компьютере может работать несколько виртуальных гостевых систем. Это имеет ряд важных преимуществ:

  • Системы могут быть аккуратно разделены по задачам, не требуя дополнительного оборудования (например, почтовые серверы, файловые серверы и серверы приложений).
  • Резервное копирование (также называемое «заморозкой») и восстановление гостевой системы можно выполнить одним нажатием кнопки.
  • Можно очень быстро переходить на новое оборудование.
  • Гостевые системы можно масштабировать по мере необходимости, что позволяет гибко реагировать на пиковые нагрузки.
  • Для всех гостевых систем предоставляется единая аппаратная платформа. Конфликты драйверов устраняются с самого начала.

Хотя операционная система Linux с открытым исходным кодом может показаться довольно экзотической для настольных компьютеров и частных пользователей, она уже давно считается основной для серверов. Поэтому она играет важную роль в качестве платформы для виртуализации.

Что такое KVM?

Виртуальная машина на базе ядра (KVM), запущенная компанией Qumranet в 2006 году, была официально принята в ядро Linux 2.6.20 в начале 2007 года. В следующем году Qumranet была куплена дистрибьютором Linux компанией RedHat. Для дальнейшего развития технологии RedHat совместно с IBM основала альянс Open Virtualization Alliance (OVA). В этот альянс вошли такие компании, как SUSE, Intel и HP.

KVM тесно связана с программным обеспечением для эмуляции QEMU. QEMU в основном предоставляет функции для виртуализации аппаратного обеспечения, в то время как Linux KVM управляет распределением ресурсов хост-системы. Поэтому часто используется термин KVM/QEMU. Поскольку KVM является неотъемлемой частью Linux, это решение виртуализации нельзя использовать на компьютерах под управлением Windows. Однако Windows поддерживается в качестве гостевой системы наряду с большинством Unix-подобных операционных систем, таких как Linux, Solaris и BSD. Хотя KVM является стандартным в большинстве дистрибутивов Linux, его все же необходимо включить.

Функции KVM Linux в деталях

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

Вот различные типы виртуализации:

  • Полная виртуализация: Аппаратное обеспечение полностью эмулируется на стороне программного обеспечения. Поэтому не требуется никакого взаимодействия с реальным оборудованием, что также делает ненужными соответствующие драйверы. Этот тип сравнительно медленный.
  • Пара-виртуализация: Гостевая система взаимодействует непосредственно с гипервизором и требует специально разработанных драйверов.
  • Пара-виртуализация с аппаратной поддержкой: Аппаратная поддержка уже встроена в процессор. Это повышает эффективность и уменьшает количество необходимых настроек для гостевых систем. Современные процессоры производства Intel (Intel-VT-x) и AMD (AMD-V) обладают такой функциональностью. При определенных обстоятельствах ее может потребоваться активировать в BIOS/UEFI.

Кроме того, существует два различных типа гипервизоров:

  • Тип 1 (bare metal): Этот гипервизор работает непосредственно на используемом оборудовании, не будучи встроенным в операционную систему.
  • Тип 2 (размещенный): Этот гипервизор встроен в операционную систему хоста и включается оттуда.

Linux KVM является гипервизором второго типа и использует аппаратную паравиртуализацию. Однако его уникальность заключается в том, что он непосредственно интегрирован в ядро.

Примечание

Ядро» — это ядро операционной системы. В него интегрированы основные функции операционной системы, такие как доступ к аппаратному обеспечению и распределение вычислительного времени между процессорами в многозадачной системе. Доступ к ядру строго защищен, а требования, предъявляемые к нему, выполняются процессорами с максимальными привилегиями.

Из-за его интеграции в ядро обсуждалось, могут ли в системе присутствовать элементы гипервизора первого типа.

Из каких компонентов состоит виртуальная машина на базе ядра?

Полный пакет KVM состоит из нескольких компонентов:

  • Расширение ядра: Содержит реальное расширение kernel.ko. Это уровень трансляции между реальным и виртуальным оборудованием. Он также включает модули kvm-amd и kvm-intel, которые адаптированы к процессорам.
  • Libvirt: Интерфейс прикладного программирования (API) для взаимодействия с виртуальными машинами. Он используется для контроля и управления ими. Libvirt также включает такие инструменты, как команда «virsh» и графический интерфейс Virtual Machine Manager.
  • QEMU: По сути, это независимая программа для эмуляции компьютеров и управления виртуальными машинами. Linux KVM использует эту функциональность для эмуляции аппаратного обеспечения и повышает его скорость за счет пара-виртуализации. Во многих дистрибутивах оба компонента предлагаются в одном установочном пакете.
  • KVMTool: Более компактная альтернатива QEMU, которую QEMU пока не смог заменить.
  • Драйверы VirtIO: Специальные драйверы для гостевых систем, предназначенные для гипервизора и обеспечивающие пара-виртуализацию.

Области применения KVM

Виртуальная машина на базе ядра часто используется, в частности, для запуска профессиональных серверных систем. Linux KVM приобретает еще большее значение благодаря интеграции в качестве гипервизора в популярное облачное программное решение OpenStack.

Преимущества и недостатки KVM

В заключение давайте рассмотрим некоторые преимущества и недостатки этого решения виртуализации:

Преимущества:

  • Зрелая устоявшаяся система
  • Уже включена в большинство дистрибутивов Linux
  • Бесплатно и с открытым исходным кодом
  • Единственная настоящая виртуальная машина на базе ядра, которая обеспечивает производительность и стабильность
  • Разработана авторитетными компаниями
  • Автоматизированное администрирование возможно через libvirt

Недостатки:

  • Доступна только для систем Linux
  • Требуется мощное оборудование для хост-компьютера
  • Требуется период обучения, чтобы уметь его использовать
  • Централизация оборудования повышает риск в случае отказа системы (т.е. единая точка отказа, но этот риск можно снизить с помощью продуманной стратегии резервного копирования).

Альтернативы Linux KVM

Когда речь идет о свободно распространяемом программном обеспечении с аналогичной функциональностью, одной из альтернатив является XEN — решение для виртуализации, тесно связанное с Linux, но не интегрированное в ядро.

Известный коммерческий поставщик VMware предлагает альтернативы пара-виртуализации с его серверами ESXi и полной виртуализации с его рабочими станциями. Проигрыватель VMware доступен для частного бесплатного использования.

VirtualBox — еще одна бесплатная альтернатива полной виртуализации, которая доступна в качестве основы для всех распространенных операционных систем.

Hyper-Vis — решение Microsoft Windows для пара-виртуализации, которое имеет схожую функциональность с Linux KVM. Оно имеет выделенный сервер Windows Hyper-V и встроенную функциональность в серверные операционные системы. Hyper-V входит в состав Windows 10 Professional и Enterprise.

Заключение

Гибкость и масштабируемость — два практически непревзойденных аргумента в пользу использования виртуализации. Гостевые операционные системы можно держать в узком диапазоне и использовать для конкретных прикладных целей. Если системы регулярно резервируются на носителях в отдельных местах, риск, связанный с отказом системы, ничтожно мал.

Если вы используете Linux для своего сервера, вам следует, по крайней мере, рассмотреть возможность использования KVM. Тот факт, что он интегрирован в ядро и разработан авторитетными издателями, является хорошим аргументом в его пользу.

Оцените статью
cdelat.ru
Добавить комментарий