что такое виртуализация kvm
Основы виртуализации и введение в KVM
Допустим ты молодой, но всё ещё бедный студент, А значит из всех возможных платформ ты имеешь лишь ПК на Windows и PS4. В один прекрасный день ты решаешься взяться за ум и стать программистом, но мудрые люди в интернете сообщили тебе, что нормальным инженером без Linux не стать. Установить Fedora своей основной и единственной системой ты не можешь, потому что Windows всё ещё нужен для игр и вконтактика, а установить Linux второй системой на жёсткий диск тебе мешает страх или отсутствие опыта.
Или вот, допустим, ты уже вырос, теперь ты главный по серверам в большой компании, и в один прекрасный день ты замечаешь, что большая часть серверов не загружена даже наполовину. Разместить больше приложений и данных на серверах ты не можешь из соображений безопасности, а затраты на поддержку и содержание растущей фермы серверов стремительно увеличиваются.
Или, вот скажем, у тебя уже борода и очки, ты технический директор, и тебя не устраивает, что чтобы разработчики получили для развёртывания нового приложения новый сервер нужно ждать аж два месяца. Как в таких условиях быстро двигаться вперёд?
А, может, ты и вовсе архитектор, который спроектировал новую сложную систему для обработки бизнес аналитики. В систему твою входят такие вещи, как ElasticSearch, Kafka, Spark и много чего ещё, и каждый компонент должен жить отдельно, настраиваться по уму и общаться с другими компонентами. Как хороший инженер, ты понимаешь, что недостаточно просто установить весь этот зоопарк прямо себе на систему. Нужно попробовать развернуть максимально близкое к будущему production окружение, и желательно так, чтобы твои наработки потом бесшовно заработали на production серверах.
И что же делать во всех этих непростых ситуациях? Правильно: использовать виртуализацию.
Виртуализация как раз и позволяет устанавливать множество полностью изолированных друг от друга и работающих бок о бок операционных систем на одном и том же железе.
Немного истории. Первые технологии виртуализации появились аж в 60-ых годах, однако настоящая нужда в них появилась только в 90-ых, по мере всё большего роста количества серверов. Именно тогда возникла проблема эффективной утилизации всех железок, а также оптимизации процессов обновления, развёртывания приложений, обеспечения безопасности и восстановления систем в случае какой-нибудь катастрофы.
Оставим за кадром долгую и мучительную историю развития различных технологий и методов виртуализации — для любопытного читателя в конце статьи найдутся дополнительные материалы на эту тему. Важно то, к чему в итоге всё это пришло: к трём основным подходам к виртуализации.
Подходы к виртуализации
Независимо от подхода и технологии, при использовании виртуализации всегда существует host-машина и установленный на ней гипервизор, управляющий guest-машинами.
В зависимости от используемой технологии, гипервизор может быть как отдельным ПО, устанавливаемым прямо на железо, так и частью операционной системы.
Внимательный читатель, любящий модные словечки, через пару параграфов начнёт бурчать, что его любимые Docker-контейнеры тоже считаются виртуализацией. Мы поговорим о технологиях контейнеров в другой раз, но да, ты прав, внимательный читатель, контейнеры тоже в каком-то роде виртуализация, только на уровне ресурсов одной и той же операционной системы.
Существует три способа взаимодействия виртуальных машин с железом:
Динамическая трансляция
В этом случае виртуальные машины не имеют ни малейшего понятия, что они — виртуальные. Гипервизор перехватывает на лету все команды от виртуалки и обрабатывает их, заменяя на безопасные, а затем возвращает назад в виртуалку. Такой подход, очевидно, страдает некоторыми проблемами с производительностью, но зато позволяет виртуализировать любую ОС, так как гостевая ОС не нуждается в модификации. Динамическая трансляция используется в продуктах VMWare — лидер е коммерческого ПО для виртуализации.
Паравиртуализация
В случае с паравиртуализацией исходный код гостевой ОС специально изменяется так, чтобы все инструкции выполнялись максимально эффективно и безопасно. При этом виртуалка всегда в курсе, что она — виртуалка. Из плюсов — улучшенная производительность. Из минусов — таким образом нельзя виртуализовать, например, MacOS или Windows, или любой другую ОС, к исходникам которой нет доступа. Паравиртуализация в той или иной форме используется, например, в Xen и KVM.
Аппаратная виртуализация
Разработчики процессоров вовремя осознали, что архитектура x86 плохо подходит для виртуализации, так как изначально была заточена под одну ОС за раз. Поэтому, уже после того как появились динамическая трансляция от VMWare и паравиртуализация от Xen, Intel и AMD начали выпускать процессоры с аппаратной поддержкой виртуализации.
Особого прироста производительности это поначалу не дало,так как главным фокусом первых релизов было улучшение архитектуры процессоров. Однако, теперь, спустя больше 10 лет после появления Intel VT-x и AMD-V, аппаратная виртуализация ничем не уступает и даже в чём-то превосходит другие решения.
Аппаратную виртуализацию использует и требует KVM (Kernel-based Virtual Machine), которую мы и будем использовать в дальнейшем.
Kernel-based Virtual Machine
KVM — это решение для виртуализации, встроенное прямо в ядро Linux, не уступающее остальным решениям в функциональности и превосходящее их в удобстве использования. Более того, KVM — open source технология, которую, тем не менее, на всех парах двигает вперёд (как в плане написания кода, так и в плане маркетинга) и внедряет в свои продукты Red Hat.
Это, кстати, одна из многих причин, почему мы настаиваем на Red Hat дистрибутивах.
Создатели KVM изначально сфокусировались на поддержке аппаратной виртуализации и не стали переизобретать многие вещи. Гипервизор, по сути, это маленькая операционная система, которая должна уметь работать с памятью, с сетью и т.п. Linux уже отлично умеет всё это делать, поэтому использование ядра Linux в качестве гипервизора — логичное и красивое техническое решение. Каждая виртуальная машина KVM —это всего лишь отдельный Linux процесс, безопасность обеспечивается при помощи SELinux/sVirt, ресурсы управляются при помощи CGroups.
Мы ещё поговорим о SELinux и CGroups в другой статье, не пугайся, если не знаешь таких слов.
KVM не просто работает как часть ядра Linux: начиная с версии ядра 2.6.20 KVM является основной составляющей Linux. Иными словами, если у вас стоит Linux, то у вас уже есть KVM. Удобно, правда?
Стоит сказать, что в сфере публичных облачных платформ Xen доминирует чуть больше, чем полностью. Например, AWS EC2 и Rackspace используют именно Xen. Обусловлено это тем, что Xen появился раньше всех и первый достиг достаточного уровня производительности. Но есть и хорошие новости: в ноябре 2017 AWS анонсировали новый основанный на KVM гипервизор, который постепенно заменит Xen для крупнейшего облачного провайдера.
Несмотря на то, что KVM использует аппаратную виртуализацию, для некоторых драйверов I/O устройств KVM может использовать паравиртуализацию, что обеспечивает прирост производительности для определённых сценариев использования.
libvirt
Мы уже почти дошли до практической части статьи, осталось только рассмотреть ещё один open source инструмент: libvirt.
libvirt — это набор инструментов, предоставляющий единый API к множеству различных технологий виртуализации. Используя libvirt вам впринципе без разницы, что там за “бакенд”: Xen, KVM, VirtualBox или что-то ещё. Более того, можно использовать libvirt внутри Ruby (а ещё Python, C++ и много чего ещё) программ. Ещё можно удалённо по защищённым каналам подключаться к виртуальным машинам.
Разработкой libvirt, кстати, занимается Red Hat. Ты уже установил себе Fedora Workstation основной системой?
Создадим виртуалку
libvirt — это просто API, а вот как с ним взаимодействовать решать пользователю. Вариантов куча. Мы воспользуемся несколькими стандартными утилитами. Напоминаем: мы настаиваем на использовании Red Hat дистрибутивов (CentOS, Fedora, RHEL) и команды ниже были протестированы именно на одной из этих систем. Для других дистрибутивов Linux возможны небольшие отличия.
Сначала проверим, поддерживается ли аппаратная виртуализация. На самом деле, работать будет и без её поддержки, только гораздо медленнее.
Так как KVM то модуль ядра Linux, то нужно проверить, загружен ли он уже, и если нет, то загрузить.
Возможна ситуация, что аппаратная виртуализация выключена в BIOS. Поэтому если модули kvm_intel/kvm_amd не подгружаются, то проверь настройки BIOS.
Теперь установим необходимые пакеты. Проще всего сделать это, установив сразу группу пакетов:
Если не нравится командная строка, то ещё есть virt-manager — весьма удобный GUI для виртуалок.
Вместо указания размера диска, можно создать его заранее через virt-manager, или через virsh и XML файл. Я использовал выше образ с Centos 7 minimal, который легко найти на сайте Centos.
Теперь остаётся один важный вопрос: как подсоединиться к созданной машине? Проще всего это сделать через virt-manager — достаточно дважды кликнуть по созданной машине и откроется окно с SPICE соединением. Там тебя ждёт экран установки ОС.
Кстати, KVM умеет nested virtualization: виртуалки внутри виртуалку. We need to go deeper!
После того, как ты установишь ОС вручную, ты сразу задашься вопросом, как этот процесс можно автоматизировать. Для этого нам понадобится утилита под названием Kickstart, предназначенная для автоматической первичной настройки ОС. Это простой текстовый файлик, в котором можно указать конфигурацию ОС, вплоть до различных скриптов, выполняемых уже после установки.
Но где взять такой файл? Не писать же его с нуля? Разумеется, нет: так как мы уже установили внутри нашей виртуалки Centos 7, то нам нужно просто подсоединиться к ней и найти файл /root/anaconda-ks.cfg — это Kickstart конфиг для того, чтобы создать копию уже созданной ОС. Нужно просто скопировать его и отредактировать содержимое.
Но просто скопировать файл скучно, поэтому мы добавим в него ещё кое-что. Дело в том, что по умолчанию у нас не получится подсоединиться к консоли созданной виртуалки из командой строки host-машины. Чтобы сделать это, нужно отредактировать конфиг загрузчика GRUB. Поэтому в самый конец Kickstart файла добавим следующую секцию:
Теперь можно применить созданный конфиг! virt-install позволяет при создании виртуалки передавать дополнительные аргументы, в том числе путь к Kickstart файлу.
Одно из преимуществ использования KVM/libvirt — потрясающая документация, в том числе создаваемая компанией Red Hat. Дорогому читателю предлагается с должной любознательностью изучить её.
Конечно, создавать виртуальные машины вот так вот руками в консоли, а потом настраивать их только при помощи Kickstart — не самый удобный процесс. В будущих статьях мы ознакомимся с множеством классных инструментов, облегчающих и полностью автоматизирующих конфигурацию систем.
Что дальше?
Невозможно уместить в одну статью всё, что стоит знать о виртуализации. Мы рассмотрели несколько вариантов использования виртуализации и её преимущества, немного углубились в детали её работы и познакомились с лучшим, на наш взгляд, решением для этих задач (KVM), и даже создали и настроили виртуалку.
Важно понять, что виртуальные машины — кирпичи в огромных зданиях современных облачных архитектур. Именно они позволяют приложениям автоматически разрастаться до безграничных размеров, максимально быстрым способом и с максимальной утилизацией всех ресурсов.
Каким бы мощным и богатым на сервисы не был AWS, его основа — это виртуальные машины поверх Xen. Каждый раз, когда ты создаёшь новый дроплет на DigitalOcean, ты создаёшь виртуалку. Практически все сайты, которыми ты пользуешься, размещены на виртуальных машинах. Простота и гибкость виртуалок позволяет не только строить production-системы, но и в десятки раз облегчает локальную разработку и тестирование, особенно когда в системе задействовано множество компонентов.
Мы научились создавать одну единственную машинку — неплохо для тестирования одного приложения. Но что, если нам нужно сразу несколько виртуальных машин? Как они будут общаться друг с другом? Как они будут находить друг друга? Для этого нам нужно будет разобраться, как вообще работают сети, как они работают в контексте виртуализации, и какие компоненты задействованы в этой работе и нуждаются в настройке — в следующей статье серии.
Дополнительное чтение
Мы рассказываем, как стать более лучшим разработчиком, как поддерживать и эффективно применять свои навыки. Информация о вакансиях и акциях эксклюзивно для более чем 8000 подписчиков. Присоединяйся!
Что такое виртуализация KVM
Сегодня сложно представить мир без компьютеризированных устройств. Лет этак 20 назад почти все бытовые приборы были электро-механические, об использовании компьютерных схем повсеместно не было даже и речи. Самые первые компьютеры занимали значительные объемы пространства, и могли относительно не много. Компьютерно-вычислительные комплексы за последнее время прошли достаточно большой путь развития. Хотя, принципиально компьютеры ничем не изменились, но вычислительные мощности стремительно возросли. Наличие компьютера в простой семье теперь не является чем-то особенным.
В данный момент, зачастую большое количество компьютерной техники в помещениях может доставлять значительно неудобств. По этой причине стали появляться централизованные системы. Но централизованные системы зачастую не могут решить тех проблем, которые решает сеть из компьютеров. По этой причине и была предложена концепция виртуализации, когда один центральный компьютер выполняет роль сети компьютеров.
Общие сведения о виртуализации
По своей сути, все ОС это в общем-то и так некоторая виртуальная среда, которая предоставляется разработчику ПО, как средство реализации конечных задач. Уже давно прошло то время, когда программы писались конкретно под аппаратную часть компьютера по средствам аппаратных кодов и запросов. Сегодня же, любое приложение – это в первую очередь приложение, написанное на некотором API, который находится под управлением ОС. Задачи же ОС – предоставить данным API непосредственно доступ к аппаратным ресурсам.
Собственно видов виртуализации существует несколько:
Виртуализация в свою очередь бывает полной и частичной.
Программная виртуализация – вид виртуализации, который задействует различные библиотеки ОС, транслируя вызовы виртуальной машины в вызовы ОС. (DOSBox, Virtualbox, VirtualPC)
Аппаратная виртуализация – такой вид, который предусматривает специализированную инструкцию аппаратной части, а конкретно инструкций процессора. Позволяет исполнять запросы в обход гостевой ОС, и исполнять прямо на аппаратном обеспечении. (виртуализация KVM,виртуализация XEN, Parallels, VMware, Virtualbox)
Виртуализация уровня операционной системы – виртуализация только части платформы, без полной виртуализации аппаратной части. Подразумевает работы нескольких экземпляров среды ОС. (Docker, LXC)
Данная статья будет рассматривать Аппаратную виртуализацию, а конкретно виртуализацию KVM.
Схема 1. – Взаимодействие компонентов виртуальной машины с аппаратной частью
Особенности виртуализации для ядра Linux
Для исполнения прямых аппаратных запросов в ОС должна иметься библиотека, которая направляла бы эти запросы аппаратной части напрямую. На платформах базы Linux долгое время никакой встроенной системы виртуализации (встроенного гипервизора), просто не существовало. Каждый производитель ПО для виртуализации, который поддерживало технологию аппаратной виртуализации, вынуждены были создавать собственные модули для ядра Linux (vboxdrv в Virtualbox, vmware-service в VMWare и пр.) Естественно, это не могло продолжаться вечно, и компания Qumranet, Inc, выкупленая затем Radhat создала ассоциацию Open Virtualization Alliance, которая была признана решить проблему отсутствия базового гипервизора для ядра Linux. Так и был создан гипервизор KVM или Kernel-based Virtual Machine.
Реализация
Гипервизор KVM представляет из себя загружаемый модуль ядра Linux, который предназначен для обеспечения виртуализации на платформе Linux x86. Сам модуль содержит компонент собственно виртуализации(kvm.ko), и процессорно-специфический загружаемый модуль kvm-amd.ko либо kvm-intel.ko.
Сам по себе KVM не выполняет эмуляции. Вместо этого программа, работающая в пространстве пользователя, использует интерфейс /dev/kvm для настройки адресного пространства гостя виртуальной машины, через него же эмулирует устройства ввода-вывода и видеоадаптер.
KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и другие устройства.
Использование
Для использования данного гипервизора существует множество реализаций. Некоторые представляют из себя целые специализированные библиотеки, другие имеют вид простых графических приложений.
Для наглядности рассматривается виртуализация KVM на базе библиотеку virt-manager.
Данная библиотека позволяет упростить вызов различных гипервизоров, предоставляя удобный интерфейс для автоматизации процесса виртуализации. Кроме того, библиотека имеет возможность работы с сетевой инфраструктурой, что иногда важно, при построении клиент-серверных рабочих мест.
Схема 2. – Взаимодействие компонентов libvirt
QEMU позволяет создать фрейм для вызова гипервизора на клиентской системе. Данная программа настраивается аргументами вызова командной строки, является достаточно легкой и простой.
Существуют кроме того несколько графических оболочек, таких как Gnome-Boxes.
Выводы
Виртуализация – неотъемлемая часть современных корпоративных систем, она позволяет сэкономить колоссальные денежные и энергетические ресурсы. Развитие технологий виртуализации является приоритетным направлением многих организаций. Развиваются такие технологии как как VGAPassthrough (технология «проброса» видеокарты хост-устройства в виртуальную машину) и PCIPassthrough («проброс» PCI устройства).
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, у вас уже есть.