виртуализация kvm что это
Общие принципы работы QEMU-KVM
Мое текущее понимание:
1) KVM
KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).
Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).
KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.
2) QEMU
QEMU (Quick Emulator) – эмулятор различных устройств, который позволяет запускать операционные системы, предназначенные под одну архитектуру, на другой (например, ARM –> x86). Кроме процессора, QEMU эмулирует различные периферийные устройства: сетевые карты, HDD, видео карты, PCI, USB и пр.
Инструкции/бинарный код (например, ARM) конвертируются в промежуточный платформонезависимый код при помощи конвертера TCG (Tiny Code Generator) и затем этот платформонезависимый бинарный код конвертируется уже в целевые инструкции/код (например, x86).
ARM –> промежуточный_код –> x86
По сути, вы можете запускать виртуальные машины на QEMU на любом хосте, даже со старыми моделями процессоров, не поддерживающими Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Однако в таком случае, это будет работать весьма медленно, в связи с тем, что исполняемый бинарный код нужно перекомпилировать на лету два раза, при помощи TCG (TCG – это Just-in-Time compiler).
Т.е. сам по себе QEMU мега крутой, но работает очень медленно.
3) Protection rings
Бинарный программный код на процессорах работает не просто так, а располагается на разных уровнях (кольцах / Protection rings) с разными уровнями доступа к данным, от самого привилегированного (Ring 0), до самого ограниченного, зарегулированного и «с закрученными гайками» (Ring 3).
Операционная система (ядро ОС) работает на Ring 0 (kernel mode) и может делать с любыми данными и устройствами все, что угодно. Пользовательские приложения работают на уровне Ring 3 (user mode) и не в праве делать все, что захотят, а вместо этого каждый раз должны запрашивать доступ на проведение той или иной операции (таким образом, пользовательские приложения имеют доступ только к собственным данным и не могут «влезть» в «чужую песочницу»). Ring 1 и 2 предназначены для использования драйверами.
До изобретения Intel VT-x / AMD SVM, гипервизоры работали на Ring 0, а гости работали на Ring 1. Поскольку у Ring 1 недостаточно прав для нормального функционирования ОС, то при каждом привилегированном вызове от гостевой системы, гипервизору приходилось на лету модифицировать этот вызов и выполнять его на Ring 0 (примерно так, как это делает QEMU). Т.е. гостевой бинарный код НЕ выполнялся напрямую на процессоре, а каждый раз на лету проходил несколько промежуточных модификаций.
Накладные расходы были существенными и это было большой проблемой и тогда производители процессоров, независимо друг от друга, выпустили расширенный набор инструкций (Intel VT-x / AMD SVM), позволяющих выполнять код гостевых ОС НАПРЯМУЮ на процессоре хоста (минуя всякие затратные промежуточные этапы, как это было раньше).
4) QEMU-KVM
KVM предоставляет доступ гостям к Ring 0 и использует QEMU для эмуляции I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д., которые «видят» и с которыми работают гости).
Отсюда QEMU-KVM (или KVM-QEMU) 🙂
P.S. Текст этой статьи изначально был опубликован в Telegram канале @RU_Voip в качестве ответа на вопрос одного из участников канала.
Напишите в комментариях, в каких местах я не правильно понимаю тему или если есть, что дополнить.
Hyper-V или KVM?
Технология виртуализации серверов со своей более чем тридцатилетней историей сегодня стала одной из ключевых в ИТ, легла в основу облачных вычислений и сервисов нового поколения. Компании, выбирающие платформу для VPS или внедрения виртуализации в своей ИТ-инфраструктуре, наряду с продуктами VMware рассматривают в качестве альтернативы решения на основе других гипервизоров, прежде всего Microsoft Hyper-V и разработанного в рамках Open Source гипервизора KVM.
Разнообразие средств виртуализации заставляет задуматься: что именно выбрать? Это может оказаться непростой задачей. Например, сторонники Xen считают ее надежной и гибкой платформой с хорошим набором инструментов управления. Любители Hyper-V и KVM приведут весомые аргументы в пользу этих решений и перечислят их достоинства.
Можно исходить при выборе из таких параметров как производительность, стоимость, открытость, эффективность, управляемость, поддержка платформ… Однако эксперты советуют выбирать решение виртуализации, прежде всего, руководствуясь требованиями бизнеса. Развертываемое в корпоративной среде, оно должно подходить для обширного стека сертифицированных бизнес-приложений (ERP, MRP, HR, CRM и др.), а разработчик, если это коммерческий продукт, должен иметь четкие планы развития продукта по разным направлениям (аварийное восстановление, резервное копирование, SDN и др.). Наконец, хорошее программное обеспечение виртуализации обладает достаточной масштабируемостью и гибкостью.
Например, производительность KVM при увеличении нагрузки уменьшается быстрее, чем у Xen (если верить результатам тестирования). Xen отличает масштабируемость – способность поддерживать большое число одновременно работающих ВМ. Считается, что Xen превосходит KVM по возможностям резервного копирования и управления хранением данных.
Подобная дилемма возникает и при анализе предложений по аренде виртуальных серверов (VDS/VPS). Хостеры предлагают разнообразные средства виртуализации, включая Xen, KVM, Microsoft Hyper-V, OpenVZ, Virtuozzo, VDSmanager и др. (VMware – очень редко ввиду высокой стоимости), при этом провайдер всегда готов рассказать о достоинствах используемой системы, но продукты виртуализации редко сравнивают и столь же редко упоминают об их недостатках.
Попробуем отчасти восполнить этот пробел. В частности — сопоставить два популярных гипервизора виртуализации – Microsoft Hyper-V для серверных ОС семейства Windows и KVM для Linuх. Однако сразу стоит оговориться, что идеальной системы виртуализации для VPS нет, каждая подходит для своих задач. Например, многие из тех, кто использует платформу KVM, применяют и виртуальные машины (ВМ) на базе Linux.
Нужен VPS c Linux или FreeBSD? Можно выбрать KVM. VPS на KVM с Windows – тоже вариант, но для данной ОС предпочтительнее Microsoft Hyper-V. Последний считается лучшим решением для виртуализации серверов с ОС Windows, и активно используется хостинг-провайдерами.
Xen и KVM – продукты с открытым исходным кодом, причем очень близкие по функциям и производительности, но если в версии Сitrix XenServer первый постепенно превращается в облачную платформу, то развитие KVM идет в ногу с эволюцией дистрибутивов, таких как RHEV от Red Hat. Hyper-V — коммерческое ПО от Microsoft. Не удивительно, что Hyper-V отлично работает в инфраструктуре Windows. Все они позволяют виртуализировать серверные платформы x86-64 и представляют собой системы аппаратной виртуализации для VPS хостинга и не только.
Hyper-V, KVM, ESXi – гипервизоры первого типа (Type-I). Они работают непосредственно на физическом оборудовании, к которому операционная система получает доступ через гипервизор. Гипервизоры второго типа (Type-II), например, VMware Workstation, Oracle Virtual Box, OpenVZ функционируют поверх операционной системы, поэтому ВМ и гипервизор взаимодействует с оборудованием через ОС. Считается, что производительность гипервизоров второго типа ниже, чем первого, поскольку зависит также от ОС хоста.
Использование Hyper-V и KVM в разных отраслях, % респондентов (данные IT Central Station).
Гипервизор | Hyper-V | KVM |
Финансы | 13% | 21% |
Транспорт | 9% | 11% |
Производство | 7% | 7% |
Госсектор | 7% | 7% |
Использование Hyper-V и KVM в компаниях с разной численностью сотрудников, % респондентов (данные IT Central Station).
Гипервизор | Hyper-V | KVM |
1-100 | 17% | 25% |
100-1000 | 34% | 30% |
>1000 | 49% | 45% |
Эти два гипервизора сравнивают не только друг с другом. KVM иногда сопоставляют с VMware ESXi и IBM PowerVM, а Microsoft Hyper-V нередко — с Oracle VM VirtualBox, изредка — с Proxmox VE.
Альтернативы Hyper-V и KVM (в версии Open Source), по мнению отраслевой прессы (в порядке убывания; рейтинг составлен IT Central Station, 2016 год).
Microsoft Hyper-V
Продукт Microsoft существует в двух ипостасях: как автономный Hyper-V Server (в последней версии — Hyper-V Server 2012 R2) или как один из компонентов Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 или 64-разрядной версии Window 8/10 Pro. В любом случае он используется для создания на сервере виртуальной среды, предоставляя для этого соответствующие сервисы и инструменты.
Можно также виртуализировать рабочие места, развернув инфраструктуру VDI, или создать удобную среду для разработки и тестирования ПО. Экономичная и стабильная среда виртуализации Hyper-V позволяет одновременно запускать на хосте несколько операционных систем, включая Windows, Linux и другие. На текущий момент Hyper-V используют компании и организации практически любых отраслей, в их числе крупнейшие заказчики. Что это дает? Например, Hyper-V может служить основой для развертывания частного облака, позволяет оптимизировать использование аппаратных ресурсов, консолидировать серверы, запустив на одной физической системе несколько виртуальных машин, обеспечить отказоустойчивость для непрерывности бизнес-процессов. Впрочем, это свойственно не только данному гипервизору.
В «магическом квадранте» Gartner по виртуализации серверной инфраструктуры х86 (Magic Quadrant for x86 Server Virtualization Infrastructure), выпущенном в июле 2015 года, лидируют Micrоsoft и VMware. Xen и KVM представлены вендорами Citrix и Red Hat.
За что же именно ценят Hyper-V? Системные администраторы и ИТ-менеджеры называют такие качества как высокая стабильность работы Hyper-V и Windows, поддержка «живой миграции» ВМ (Live Migration) и кластеризации (для построения конфигураций высокой доступности), масштабируемость, возможность присваивания сетевых карт (NIC) виртуальным машинам, что позволяет избежать узких мест, подчас возникающих, когда виртуальному коммутатору назначен один физический сетевой адаптер.
Live Migration позволяет перемещать ВМ между физическими серверами Hyper-V, в том числе и автоматически, без участия пользователя.
Упоминают также возможность централизованного управления серверами — несколькими хостами Hyper-V, причем без дополнительной покупки лицензий, как в случае VMware vCenter. Относительно просто (хотя и более запутанно, чем в VMware) выполняется миграция физического сервера в виртуальный (P2V). Для этого создается образ VHD физической системы и присваивается новой ВМ. Удобный режим Enhanced Session Mode позволяет выполнять копирование/вставку внутри ВМ.
Hyper-V прост в использовании и управлении – хорошая альтернатива продукту VMware в сегменте SMB. Он включен и в Windows 10, причем это почти полнофункциональная версия. Сам гипервизор ничего не стоит, его можно скачать с сайта Microsoft (в виде Hyper-V Server), хорошо подходит для виртуализации ОС от Microsoft, его легко установить и настроить, а большинство системных администраторов умеют с ним работать. Hуper-V можно установить на любой поддерживающий Windows сервер. Еще в копилку плюсов: большинство продуктов Microsoft могут работать в виртуальной среде Hyper-V.
К негативным качествам относят ограниченные возможности настройки работы с СХД (например, сложности настройки iSCSI target в Windows Server 2012 R2. Более надежным и дружественным мог бы быть импорт/экспорт, создание шаблонов.
В Hyper-V достаточно сложно конфигурировать некоторые вещи, например, High Availability (HA), где требуется формирования кластера (Failover Clustering). В vSphere, например, это делается проще и естественнее. А миграция ВМ в Hyper-V, в отличие от vMotion, возможна только между серверами с процессорами одного семейства. Нет в Hyper-V и ничего похожего на Distributed Resource Scheduler (DRS) или Storage DRS, которые в среде виртуализации VMware можно использовать для балансирования нагрузок между ресурсами нескольких хостов с помощью vMotion и Storage vMotion.
Зато SCVMM (System Center Virtual Machine Manager 2012) в Hyper-V открывает возможности, выходящие за рамки собственно серверной виртуализации. Например, можно создать частное облако с функциями самообслуживания. В VMware есть vCloud Director, но это отдельное решение за отдельные деньги. У Microsoft SCVMM – бесплатное приложение к System Center 2012. Кроме того, SCVMM позволяет использовать в качестве платформ виртуализации хосты с Hyper-V, vSphere и гипервизором Citrix, в то время как vCenter поддерживает только управление хостами VMware.
Также можно упомянуть, что Debian и основанные на нем дистрибутивы способны отлично работать под Hyper-V и могут применяться для реализации инфраструктурных элементов работающих с большой нагрузкой. Также недавно компания Microsoft выпустила обновление Linux Integration Services 4.0 for Hyper-V, представляющее собой пакет драйверов, утилит и улучшений для гостевых ОС Linux, работающих в виртуальных машинах на платформах Hyper-V и Azure.
Особенности Microsoft Hyper-V в Windows Server 2012 R2 Datacenter Edition
Максимальное число одновременно работающих ВМ | 1024 |
Максимальное число процессоров на хост-сервер | 320 |
Число ядер на процессор хоста | Не ограничено |
Максимальное число виртуальных процессоров (vCPU) на хост-сервер | 2048 |
Максимальная емкость оперативной памяти на хост-сервер | 4 Тбайт |
Память на одну ВМ | 1 Тбайт |
Виртуальных процессоров на ВМ | 64 vCPU |
Динамическое перераспределение памяти | Dynamic Memory |
Дедупликация страниц памяти | Нет |
Поддержка больших страниц памяти (Large Memory Pages) | Да |
Централизованное управление | Да, System Center Virtual Machine Manager (SCVMM) |
Интеграция с Active Directory | Да (через SCVMM) |
Снимки ВМ (snapshot) | Да |
Управление через браузер | Через портал самообслуживания |
Обновления хост-серверов/ гипервизора | Да |
Управление сторонними гипервизорами | Да, управление VMware vCenter и Citrix XenCenter |
Обновление ВМ | Да (WSUS, SCCM, VMST) |
Режим обслуживания (Maintenance Mode) | Да |
Динамическое управление питанием | Да, Power Optimization |
API для резервного копирования | Да, VSS API |
Шаблоны виртуальных машин (VM Templates) | Да |
Профили настройки хостов (Host Profiles) | Да |
Миграция физических серверов в виртуальные машины (P2V) | Нет |
Горячая миграция виртуальных машин | Да, без общего хранилища (Shared Nothing), поддержка сжатия и SMB3, неограниченное число одновременных миграций |
Горячая миграция хранилищ ВМ | Да |
Профили хранилищ | Да |
Поддержка USB | Нет (за исключением Enhanced Session Mode) |
Горячее добавление устройств | Только устройства хранения и/или память |
Устройства Floppy в ВМ | 1 |
Сетевые адаптеры/интерфейсы | 8 NIC |
Виртуальные диски IDE | 4 |
Емкость виртуального диска | 64 Тбайта для VHDX |
Максимальное число узлов в кластере | 64 |
Виртуальных машин в кластере | 8000 |
Функции высокой доступности при сбоях хост-серверов | Failover Clustering |
Перезапуск виртуальных машин в случае сбоя на уровне гостевой ОС | Да |
Обеспечение доступности на уровне приложений | Да (Failover Clustering) |
Непрерывная доступность ВМ | Нет |
Репликация виртуальных машин | Да, Hyper-V Replica |
Автоматическое управление ресурсами кластера | Да, Dynamic Optimization |
Пулы ресурсов | Да (Host Groups) |
Проверка совместимости процессоров при миграциях машин | Да, Processor Compatibility |
Поддерживаемые хранилища | SMB3, FC, Virtual FC, SAS, SATA, iSCSI, FCoE, Shared VHDX |
Кластерная файловая система | CSV (Cluster Shared Volumes) |
Поддержка Boot from SAN | Да (iSCSI, FC) |
Динамическое выделение емкости хранения (Thin Provisioning) | Да, Dynamic Disks |
Загрузка с USB | Нет |
Хранилища на базе локальных дисков серверов | Storage Spaces, Tiered Storage |
Уровни обслуживания для подсистемы ввода-вывода | Да, Storage QoS |
Поддержка NPIV | Да (Virtual Fibre Channel) |
Поддержка доступа по нескольким путям (multipathing) | Да (DSM и SMB Multichannel) |
Кэширование | Да, CSV Cache |
API для интеграции с хранилищами | Да, SMI-S/SMP, ODX, Trim |
Поддержка NIC Teaming | Да |
Поддержка Private VLAN | Да |
Поддержка Jumbo Frames | Да |
Поддержка Network QoS | Да |
Поддержка IPv6 | Да |
Мониторинг трафика | Да |
А теперь пара слов о KVM. Хотя в деле построения виртуализированных инфраструктур для крупного бизнеса платформы от Microsoft и VMware по-прежнему являются несомненными лидерами, в последние отмечается рост интереса и к KVM.
KVM (Kernel-based Virtual Machine) – полное решение виртуализации для платформ Linux/x86, поддерживающее аппаратные расширения (Intel VT и AMD-V). В его составе – загружаемый модуль ядра kvm.ko, обеспечивающий базовую инфраструктуру виртуализации, и модуль для конкретного процессора — kvm-intel.ko или kvm-amd.ko.
Первоначально KVM поддерживал только процессоры x86, но в настоящее время к ним добавился широкий спектр процессоров и гостевых операционных систем, в том числе множество вариаций Linux, BSD, Solaris, Windows, Haiku, ReactOS и AROS Research Operating System.
В числе пользователей KVM – известные Wiki-ресурсы: MediaWiki, Wikimedia Foundation, Wikipedia, Wikivoyage, Wikidata, Wikiversity.
В 2015 году «Лаборатория Касперского» совместно с B2B International провела исследование, в ходе которого представителям компаний, использующих технологию виртуализации задавались вопросы про применяемые у них платформы. Выяснилось, что 15% компаний используют различные варианты коммерческих платформ на базе KVM, и еще 16% планируют их внедрять в течение ближайшей пары лет. Бесплатные версии продукта используются в 8% крупных организаций и еще в 16% опрошенных компаний будут внедрены в будущем.
Исследование «Лаборатории Касперского» показало, что если основными гипервизорами, чаще всего, являются VMware vSphere и Microsoft Hyper-V, то в качестве дополнительного предпочитают использовать решения с открытым кодом или коммерческие решения на базе Open Source. Особенно часто — KVM.
В «Лаборатории Касперского» считают, что причин популярности KVM несколько. Во-первых, в некоторых сценариях, внедрение платформы виртуализации на базе KVM (даже коммерческой ее версии) обходится значительно дешевле, чем использование Microsoft Hyper-V и VMware vSphere. Во-вторых, в мире растет количество виртуализированных Linux-серверов. Их владельцам привычнее и удобнее применять и гипервизор на базе Linux. В большинстве случаев, это именно KVM. Кроме того, Linux-сообщество вносит вклад в развитие платформы, развивается экосистема решений, которые поддерживающих KVM.
Компании, создающие собственные проекты, интегрированные решения, зачастую выбирают гипервизор Open Source, а KVM как раз предоставляет широкие возможности кастомизации. Наконец, KVM — легкий, простой в использовании, неприхотливый к ресурсам и при этом достаточно функциональный гипервизор. Он позволяет в сжатые сроки развернуть платформу виртуализации, констатируют в «Лаборатории Касперского».
KVM в сочетании с ядром Linux обеспечивает простоту реализации, гибок. Так как гостевые операционные системы взаимодействуют с гипервизором, интегрированным в ядро Linux, они могут во всех случаях обращаться непосредственно к оборудованию без необходимости изменения виртуализированной операционной системы. Это делает KVM быстрым решением для виртуальных машин. KVM реализован в самом ядре Linux, что облегчает управление процессами виртуализации.
С другой стороны, мощных инструментов для управления сервером и виртуальными машинами KVM не существует. KVM нуждается в совершенствовании поддержки виртуальных сетей и виртуальных систем хранения, усилении защиты, в улучшении надежности и отказоустойчивости, управления питанием, поддержки HPC/систем реального времени, масштабируемости виртуальных процессоров, совместимости между поставщиками, а также в создании экосистемы облачных сервисов.
Раз уж речь зашла об управлении, стоит упомянуть один из популярных вариантов управления VPS в случае KVM – SolusVM. Это универсальная панель управления виртуальными серверами Xen, KVM и OpenVZ.
Некоторые пользователи отмечают недостаточную стабильность KVM при выполнении задач с интенсивным вводом-выводам. Бытует мнение, что KVM – не вполне зрелый продукт для рабочих сред и больше подходит для экспериментов и в случаях, когда требуется модификация исходного кода. Hyper-V более стабилен, средства миграции ВМ в нем надежнее, эффективнее используется оборудование, чем в Linux-KVM.
Подготовка KVM к работе и настройка десятков параметров – процесс на любителя, хотя есть и интерфейс управления Virsh (и GUI-интерфейс virtmanager), позволяющий запускать гостевые системы в KVM, используя простой файл конфигурации. Для управления гипервизором KVM удобно также использовать инструменты OpenStack. Это помогает, в частности, внедрять облачные сервисы.
Службы поддержки как таковой нет, только сообщество. Но те, кому она необходима, могут выбрать коммерческий вариант — RHEV (Red Hat Enterprise Virtualization).
Заключение
Возможно, эта информация поможет вам сделать правильный выбор, однако, как уже отмечалось выше, очень многое зависит от решаемой задачи и многих других условий. А спектр таких задач сегодня чрезвычайно широк – от виртуального хостинга до построения программно-определяемых дата-центров (SDDC) и внедрения гибридных облаков. Например, среда виртуализации в ЦОД должна обеспечивать сочетание нескольких важных характеристик: зрелость, простота развертывания, управляемость и автоматизация, поддержка и сопровождение, производительность, масштабируемость, надежность, высокая готовность и работоспособность, безопасность.
При выборе платформы виртуализации для VPS/VDS действуют иные критерии. Нередко неверный её выбор — это потраченные деньги и неудовлетворения качеством услуг. Квалифицированная консультация и подбор сервера с возможностью тестирования выбранного тарифа помогут избежать большинства проблем. А бэкграунд для того, чтобы начать диалог с поставщиком услуг VPS/VDS, у вас уже есть.