Какие существуют программные продукты предназначенные для виртуализации

Рубрика:

Администрирование / 
Виртуализация

ИГОРЬ ШТОМПЕЛЬ, инженер, системный администратор. Сфера профессиональных интересов – GNU/Linux, функциональное программирование

Продукты для виртуализации
Возможности свободного программного обеспечения

С каждым годом расширяется применение виртуализации вычислительных процессов. Появляются новые технологии. А на что способно свободное программное обеспечение в данной области?

Ключевые термины и типы виртуализации

Итак, виртуализация – это абстракция каких-либо ресурсов в вычислительных целях (например, запуск одной операционной системы из-под другой). С данным определением тесно связаны такие понятия, как хост, гостевая операционная система, гипервизор.

Хост – операционная система, в которой осуществляется виртуализация, а гостевая операционная система – это та, которая виртуализируется. Например, на компьютере установлены операционная система gNewSense GNU/Linux и программное обеспечение Virtualbox OSE (об этой версии подробнее далее), в котором запущен Trisquel GNU/Linux. Так вот, gNewSense в данном случае – хост, Trisquel – гостевая операционная система.

Гипервизор – это программное обеспечение, которое позволяет гостевой операционной системе взаимодействовать с физическими (не эмулируемыми, которые использует хост) аппаратными средствами.

В разных источниках выделяются разные типы виртуализации. Например, в Википедии: виртуализация серверов, аппаратная виртуализация, виртуализация уровня ОС и паравиртуализация, виртуализация ресурсов и виртуализация приложений. А Тим Джонс, инженер-консультант Emulex (https://www.emulex.com), в своей статье «Виртуальный Linux» выделил следующие типы – эмуляция оборудования, полная виртуализация, паравиртуализация и виртуализация уровня операционной системы [1].

Рассмотрим, что представляют собой выделенные типы. Итак, эмуляция оборудования – это процесс представления программой виртуализации того или иного программного обеспечения как аппаратного составляющего для гостевой операционной системы. Таким образом, с помощью программы виртуализации, предоставляется возможность работы с виртуальным (эмулирующим работу оригинального) оборудованием.

Например как частный случай выбор объема оперативной памяти на этапе создания гостевой системы. Среди свободных программ подобного типа можно выделить Bochs (https://bochs.sourceforge.net), QEMU (https://www.qemu.org) и FAUmachine (https://www3.informatik.uni-erlangen.de/Research/FAUmachine).

Полная виртуализация отличается от эмуляции оборудования тем, что между гостевой операционной системой и аппаратной частью появляется «посредник». Этот «посредник» – гипервизор, который обеспечивает взаимодействие последних. В мире свободных программ данной функциональностью обладает VirtualBox OSE (https://www.virtualbox.org/wiki/Editions).

Паравиртуализация имеет сходство с полной виртуализацией. При данном подходе гипервизор ответственен за разделение доступа к основным аппаратным средствам. Гостевой операционной системе через гипервизор доступен специализированный API. Последний позволяет «гостю» взаимодействовать с аппаратным обеспечением. Поскольку код, необходимый для осуществления виртуализации, добавлен в ядро Linux (библиотеки и приложения user-space не модифицируются), то отпадает необходимость в дополнительной перекомпиляции. Последнее может иметь место, например, при использовании метода полной виртуализации. Примером свободного программного обеспечения для реализации данного метода может служить Xen (https://www.cl.cam.ac.uk/research/srg/netos/xen).

Эмулятор Bochs

Основателем проекта, как и одним из разработчиков, до сих пор (помимо него изменения в проект вносили несколько сотен человек) является Кевин Лоутон (Kevin Lawton, https://www.linkedin.com/in/kevinlawton). Сегодня у проекта шесть мейнтейнеров.

В основе названия программы лежит игра слов – фонетически оно произноситься так же, как английское слово «box» (технические специалисты любят называть свои машины – «box» (например, «Linux box»), вот и получается, что Bochs эмулирует «box» внутри «box»). Кстати, это отражает и логотип проекта.

Программа (лицензия GNU LGPL) представляет собой эмулятор аппаратного обеспечения архитектуры IA-32 (x86), написанный на языке программирования C++. Bochs доступен для таких операционных систем, как GNU/Linux, BSD-системы, Windows 95/98/NT/2000/XP/Vista и DOS. Среди поддерживаемых платформ – x86 (эмуляция процессоров – 386, 486, Pentium/PentiumII/PentiumIII/Pentium4, x86-64 с поддержкой инструкций MMX, SSEx и 3DNow!), Alpha, Sun и MIPS. В программе возможна работа со следующими гостевыми системами: GNU/Linux, BSD-системы, Windows и DOS (см. рис. 1).

Рисунок 1. Настройка Bochs

Bochs поддерживает эмуляцию CD-ROM для операционных систем Linux, Windows, BeOS и большинства BSD-систем. В программе доступна эмуляция Sound Blaster 16 (SB16) – MPU401 (MIDI-процессор) с поддержкой режимов UART (Universal Asynchronous Receiver/Transmitter, Универсальный асинхронный приемопередатчик – перевод данных в/из последовательной в/из параллельную форму). Эмулятор также обладает поддержкой сетевых карт NE2000.

QEMU

Рассмотрим еще один эмулятор аппаратного обеспечения. Проект QEMU был зарегистрирован на https://savannah.nongnu.org 9 апреля 2003 года. Официальный сайт, посвященный QEMU – https://www.qemu.org, был запущен в 2005 году. Сегодня активных участников проекта насчитается 11 человек, а права на торговую марку принадлежат активному разработчику с первых дней проекта Фабрису Беллару (Fabrice Bellard, https://bellard.org) – ведущему разработчику Ffmpeg (создал библиотеку libavcodec). Любопытно, что именно он является автором формулы Беллара, которая позволяет наиболее быстро вычислить единичный разряд числа Пи в двоичном представлении (https://bellard.org/pi).

QEMU в качестве хост-платформ поддерживает x86, x86_64 и PowerPC, а в тестовом режиме – Sparc32 и ARM [2]. Имеет два режима работы. Первый – это «пользовательская эмуляция» (User emulation), при которой возможен запуск бинарных файлов для различных платформ. Второй – это «полная эмуляция» (System emulation), при которой эмулируются платформа полностью (похоже на Bochs) и соответственно операционные системы. Например, на рис. 2 показан запуск gNewSense GNU/Linux 2.3 Deltah с использованием одной из графических оболочек (о них чуть позже), созданных для данного эмулятора, – QtEmu и QEMU.

Рисунок 2. Запуск gNewSense с использованием QEMU

В качестве гостевых платформ для «пользовательской эмуляции» доступны x86, ARM, SPARC, MIPS, m68k (Coldfire) и CRIS. Кроме того, x86_64, PowerPC, PowerPC64, SH-4 и MicroBlaze поддерживаются в тестовом режиме, а поддержка SPARC64 и Alpha находится в стадии разработки. Например, QEMU позволяет запустить на x86 бинарный файл для ARM в Linux (т.е. ПО, включая и операционные системы, разработанное для одной платформы в другой) путем реализованной в нем технологии динамического транслятора (подробнее можно прочитать в статье Беллара, описывающей его внутреннее устройство, – https://www.usenix.org/publications/library/proceedings/usenix05/tech/freenix/full_papers/bellard/bellard.pdf). Помимо динамического транслятора для усовершенствования эмуляции в QEMU был реализован специальный акселератор. Последний позволяет выполнить эмулируемый код на процессоре хоста, что значительно повышает эффективность и скорость эмуляции.

Что касается «полной эмуляции», то доступны x86, x86_64, ARM, SPARC, MIPS, MIPS64, m68k (Coldfire); PowerPC, CRIS и MicroBlaze в тестовом режиме; SPARC64, PowerPC64, SH-4 и Alpha – в стадии разработки. При работе с данным эмулятором гостевыми системами могут являться GNU/Linux, FreeBSD, Mac OS X, Windows, BeOS.

Тонкая конфигурация QEMU производится из консоли. Но в то же время для работы с эмулятором доступны различные графические интерфейсы: QtEmu, Qemulator, Qemu Launcher.

FAUmachine

С проектом QEMU связан проект FAUmachine, который создан в Университете Эрланген-Нюрнберг имени Фридриха-Александра на отделении компьютерных наук технического факультета. Официальная страница проекта доступна по адресу https://www3.informatik.uni-erlangen.de/Research/FAUmachine.

FAUmachine – это виртуальная машина, которая запускается как обыкновенный пользовательский процесс (в пространстве пользователя) и работает без привилегий суперпользователя. Процессор FAUmachine основан на эмуляторе QEMU, что, как было отмечено выше, и связывает эти два проекта. Начиная с релиза 20090922, добавлен дополнительный процессор, который использует KVM-модуль ядра Linux для выполнения кода гостевых систем на процессоре хоста вместо эмуляции.

FAUmachine поддерживает эмуляцию следующих аппаратных компонентов: процессоров x86 и x86_64; контроллеров IDE и SCSI; сетевых адаптеров NE2000 и Intel eepro100; звуковой карты SB16; общего VGA-адаптера и графического адаптера Cirrus GD5446; 24 и 48 контактных PCI-карт ввода-вывода. А из периферии – сетевых концентраторов и маршрутизаторов; модемов.

Кроме того, виртуальная машина, как показано на рис. 3, обладает возможностью делать скриншоты эмулируемых систем и снимать видео их работы. В рамках проекта разработан экспериментальный интерпретатор и компилятор языка VHDL – fauhdlc, доступный по адресу – https://www3.informatik.uni-erlangen.de/Research/fauhdlc. Например, с помощью этого языка, по словам разработчиков, можно создавать скрипты, автоматизирующие инсталляцию дистрибутивов Linux и других операционных систем с использованием дисковода компакт-дисков или файлов-образов.

Рисунок 3. Интерфейс FAUmachine наделен кнопками Screenshot и Record

VirtualBox OSE (Open Source Edition)

Об этом программном продукте в мартовском номере «СА» за 2007 год была размещена статья Валентина Синицына «VirtualBox – виртуализация под GPL». Сейчас отметим изменения, которые претерпел продукт за это время.

Список функций, доступных только в закрытой версии VirtualBox, сократился и включает в себя следующее: сервер удаленного доступа к гостевой машине (Remote Display Protocol Server), поддержка USB (в том числе возможность предоставить доступ удаленным машинам к локальным USB-устройствам – USB over RDP). Основная проблема в том, что эти функции востребованы как в корпоративной среде, так и домашними пользователями (последним, конечно же, интересна в первую очередь поддержка USB, которая значительно облегчает вывод данных из виртуальной машины).

Таким образом, в VirtualBox OSE появилась возможность работать с разделяемыми папками (Shared Folders – но при попытке установки для их использования «Дополнений гостевой ОС» программа предлагает произвести загрузку дополнительного файла в формате .iso, лицензионное соглашение для которого мне обнаружить не удалось как на сайте www.virtualbox.org, так в самом файле-образе) и инициатором iSCSI. Последний необходим, чтобы иметь возможность клиентского доступа к интерфейсу SCSI. Разработчики по-прежнему заверяют, что данный список функций будет меняться с течением времени и некоторые станут доступны в свободной версии программы [3].

Гипервизор Xen

Xen – это гипервизор для реализации паравиртуализации. Его разработка была начата исследовательской группой из компьютерной лаборатории (https://www.cl.cam.ac.uk) Кембриджского университета (https://www.cam.ac.uk) как часть проекта Xenoservers (https://www.cl.cam.ac.uk/research/srg/netos/xeno/index.html), финансируемого британским правительством в лице EPSRC (https://www.epsrc.ac.uk/default.htm). Релиз 1.0 был выпущен в октябре 2003 года. В настоящее время над проектом также работают в RedHat, IBM, HP, XenSource, Intel, AMD, Novell.

Основные сферы его применения следующие. Запуск нескольких изолированных (большой плюс в случае сбоя одного из них) друг от друга виртуальных серверов на одном физическом хосте; достижение аппаратной независимости (перенос операционных систем и приложений при переходе на новое оборудование); тестирование различных версий операционных систем, в том числе и параллельно; тестирование и отладка ядра операционной системы (не требуется отдельная машина); достижение большей гибкости кластерных вычислений (например, лучший контроль и изоляция за счет «живой миграции» машин для балансировки нагрузки кластера); необходимость в широкой аппаратной поддержке таких операционных систем, как GNU/Linux.

Что касается аппаратной поддержки, то Xen работает на архитектуре x86 (процессоры P6 и новее – Pentium Pro, Celeron, Pentium II, Pentium III, Pentium IV, Xeon, Athlon и Duron от AMD). Полный список поддерживаемых процессоров доступен по адресу https://wiki.xensource.com/xenwiki/HVM_Compatible_Processors. Имеется возможность работы с многопроцессорными машинами. Кроме того, есть поддержка Hyper-Threading (SMT) и портов на IA64 и PowerPC.

32-битный гипервизор Xen по умолчанию предоставляет возможность работы с Intel’s Physical Addressing Extensions (PAE), который обеспечивает адресацию оперативной памяти до 64 Гб (архитектура x86). Без использования PAE адресация гораздо меньше – 4 Гб. Адресация оперативной памяти до 1 Тб доступна для платформ – Intel EM64T и AMD Opteron.

Xen поддерживает работу с таким операционными системами, как GNU/Linux, NetBSD, FreeBSD, Solaris. Если используется процессор без поддержки аппаратной виртуализации, то потребуется модификация ее ядра для использования Xen. При использовании процессоров с поддержкой технологий Intel VT (Intel(R) Virtualization Technology) или AMD SVM (Secure Virtual Machine) изменение ядра гостевой операционной системы не требуется.

KVM или Linux в роли гипервизора

Впервые KVM (Kernel-based Virtual Machine) была включена в ядро Linux версии 2.6.20. KVM – это технология, которая позволяет превратить ядро Linux в гипервизор путем инсталляции модуля ядра kvm.ko. Последний имеет специальные файлы поддержки процессора (kvm-intel.ko – для Intel и kvm-amd.ko – для AMD), другими он использует расширения HVM (Hardware Virtual Machine) процессоров (Intel VT и AMD SVM).

Основная особенность виртуальной машины ядра заключается в том, что она, превращая ядро в гипервизор, обеспечивая высокую скорость виртуализации, позволяет запускать другие операционные системы (например, другие ядра Linux), которые будут иметь изолированное аппаратное обеспечение (сетевую карту, графический адаптер и другое) [4]. Список поддерживаемых гостевых операционных систем обширен. Ознакомиться с ним можно по адресу: https://www.linux-kvm.org/page/Guest_Support_Status. Он включает дистрибутивы GNU/Linux, операционные системы семейства BSD, UNIX (Darwin, MINIX, GNU/Hurd), Solaris/OpenSolaris, Windows и ряд других.

KVM тесно связана с QEMU. QEMU осуществляет операции ввода-вывода с «гостем». Так, все запросы на ввод-вывод со стороны последнего перехватываются и направляются в пространство пользователя для эмулирования процессом QEMU (последний в свою очередь незначительно для этого модифицирован) [5].

***

В статье было рассмотрено свободное программное обеспечение, используемое для виртуализации. Из отмеченных типов последней, наиболее проблемной областью, применительно как к корпоративным требованиям, так и требованиям домашних пользователей, является полная виртуализация и VirtualBox OSE. Кроме того, QEMU способствовал развитию ряда из рассмотренных проектов, а технология KVM стоит особняком и предоставляет более гибкие возможности для осуществления виртуализации.

Стоит отметить, что данная статья не претендует на полноту охвата всех доступных сегодня продуктов для реализации виртуализации – внимание было сконцентрировано только на свободных решениях.

  1. https://www.ibm.com/developerworks/ru/library/l-linuxvirt/index.html.
  2. https://www.qemu.org/status.html.
  3. https://www.virtualbox.org/wiki/Editions.
  4. https://www.linux-kvm.org/page/Main_Page.
  5. https://www.ibm.com/developerworks/ru/library/l-linux-kvm.

Источник

Перевод статьи подготовлен в преддверии старта курса «Администратор Linux. Виртуализация и кластеризация»

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

Что такое виртуализация серверов?

Создание виртуальной или изолированной формы IT-среды называется виртуализацией. Обычно серверы могут запускать только одно приложение или операционную систему в один момент времени, что приводит к неэффективному использованию ресурсов. Когда серверы виртуализированы, это означает, что на одном сервере могут работать несколько приложений и операционных систем одновременно. Это повышает как общую эффективность, так и экономическую целесообразность. Программное обеспечение для виртуализации серверов обычно называется гипервизором.

Лучшее программное обеспечение/инструменты и поставщики для виртуализации серверов — Hyper-V vs KVM vs vSphere vs XenServer

Citrix XenServer, Microsoft Hyper-V, Red Hat KVM и VMware vSphere являются крупнейшими игроками на рынке виртуализации серверов. Зачастую предприятия испытывают затруднения в принятии решения, какой гипервизор лучше всего подойдет их бизнесу.

Сравнение лучшего программного обеспечения для виртуализации серверов на основе функционала и требований к оборудованию облегчит IT-специалистам и конечным пользователям выбор наиболее подходящего для них гипервизора.

Примечание: Инструменты расположены в алфавитном порядке по их названиям.

1. Hyper-V

Запущенный в 2008 году Microsoft Hyper-V помогает в расширении или создании приватной облачной среды. Он способствует эффективному использованию оборудования, улучшает непрерывность бизнес-процессов, а также повышает эффективность разработки и тестирования.

Функционал Microsoft Hyper-V для Windows Server 2019:

  • Поддержка постоянной памяти.
  • Обновления экранированных VM.
  • Простые двухузловые кластеры.
  • Дедупликация ReFS.
  • Оптимизация локальных дисковых пространств (Storage Spaces Direct)
  • Центр администрирования Windows.
  • Зашифрованные подсети.

Подробнее о виртуализации серверов с Microsoft вы можете прочитать в этом PDF.

2. KVM

KVM (Kernel-based Virtual Machine), входящая в состав Red Hat Virtualization Suite, представляет собой комплексное решение для инфраструктуры виртуализации. KVM превращает ядро ​​Linux в гипервизор. Он был введен в основную ветку ядра Linux с версии ядра 2.6.20.

Функционал Red Hat KVM:

  • Поддержка контейнеров
  • Масштабируемость
  • Overcommit ресурсов
  • Disk I/O throttling
  • Горячая замена виртуальных ресурсов
  • Недорогое решение для виртуализации
  • Red Hat Enterprise Virtualization программирование и API
  • Живая миграция и миграция хранилища
  • Назначение любых PCI устройств виртуальным машинам
  • Интеграция Red Hat Satellite
  • Поддержка восстановления после сбоя (Disaster Recovery)

Для получения более подробной информации прочтите это руководство по функционалу KVM.

3. vSphere

vSphere, платформа серверной виртуализации от VMware, представляет собой набор продуктов, который включает в себя не только виртуализацию, но и уровни управления и интерфейсов.

Она предоставляет ряд ключевых компонентов, включая инфраструктурные сервисы (vCompute, vStorage и vNetwork), сервисы приложений, vCenter Server, vSphere Client и т. д.

Функционал VMware vSphere:

  • vCenter Server: инструмент централизованного управления, используемый для настройки, предоставления и управления виртуальными IT средами.
  • vSphere Clien: vSphere 6.7 имеет финальную версию vSphere Web Client на основе Flash. Новые рабочие процессы в обновленном выпуске vSphere Client включают vSphere Update Manager, библиотеку контента, vSAN, политики хранения, профили хостов, схему топологии VMware vSphere Distributed Switch и лицензирование.
  • vSphere SDK: предоставляет интерфейсы для сторонних решений для доступа к vSphere.
  • VM File System: кластерная файловая система для VM.
  • Virtual SMP: позволяет одной виртуальной машине одновременно использовать несколько физических процессоров.
  • vMotion: активная миграция с целостностью транзакций.
  • Storage vMotion: обеспечивает миграцию файлов виртуальных машин из одного места в другое без прерывания обслуживания.
  • Высокая доступность: в случае сбоя одного сервера виртуальная машина перемещается на другой сервер с резервной емкостью для обеспечения непрерывности бизнес-процессов.
    Планировщик распределенных ресурсов (DRS): автоматически назначает и балансирует вычисления по аппаратным ресурсам, доступным для виртуальных машин.
  • Отказоустойчивость: создает копию основной виртуальной машины, чтобы обеспечить ее постоянную доступность.
  • Распределенный коммутатор (VDS): охватывает несколько хостов ESXi и позволяет значительно сократить объем работ по обслуживанию сети.

Для получения дополнительной информации о виртуализации серверов с помощью VMware прочтите этот PDF-файл.

4. XenServer

Основанный на Xen Project Hypervisor, XenServer является платформой виртуализации серверов с открытым исходным кодом для платформ без операционной системы. Он состоит из функций корпоративного уровня, которые помогают предприятиям легко справляться с рабочими нагрузками, комбинированными ОС и сетевыми конфигурациями.

XenServer обеспечивает улучшенную виртуализированную графику с NIVIDA и Intel и позволяет запускать несколько компьютерных операционных систем на одном оборудовании.

Функционал Citrix XenServer:

  • Восстановление узла
  • Защита хоста от сбоев
  • Мультисерверное управление
  • Управление динамической памятью
  • Интеграция Active Directory
  • Администрирование и контроль на основе ролей (RBAC)
  • Пулы смешанных ресурсов с маскированием ЦП
  • Контроллер распределенного виртуального коммутатора
  • Встроенное в память кэширование операций чтения
  • Живая миграция виртуальных машин и хранилище XenMotion
  • Если вас интересуют подробности, вы можете прочитать этот PDF.

Сводка по vSphere, XenServer, Hyper-V и KVM

Помогите нам улучшить эту статью. Поделитесь своим мнением с нами в комментариях ниже!

Дисклеймер: последний раз эта статья была обновлена ​​11 января 2020 года информацией, доступной на веб-сайтах поставщиков и ресурсов в открытом доступе. Целью данной статьи является предоставление информации о гипервизорах разных поставщиков только в общих информационных целях. Поставщики могут время от времени менять характеристики своего продукта. Хотя мы прилагаем все усилия, чтобы информация была точной и актуальной, мы не можем гарантировать ее 100% точность или актуальность.

Узнать подробнее о курсе «Администратор Linux. Виртуализация и кластеризация»

Источник