Глава 1. Основы Proxmox VE

Виртуальная среда Proxmox (PVE, Proxmox Virtual Environment) является зрелой, завершённой, хорошо сопровождаемой средой виртуализации для серверов корпоративного уровня. Она является инструментарием с открытым исходным кодом - основанном на дистрибутиве Debian GNU/Linux - который управляет контейнерами, виртуальными машинами, хранилищами, виртуализированными сетевыми средами, а также кластеризацией с высокой доступностью, с применением хорошо спроектированного интерфейса на веб- основе или через интерфейс командной строки.

[Замечание]Замечание

Разработчики предоставили первую стабильную реализацию Proxmox VE в 2008; четыре года и восемь выпусков спустя Ken Hess, ZDNet, отважно, но однако совершенно разумно объявил Proxmox VE в качестве Proxmox: совершенный гипервизор http://www.zdnet.com/article/proxmox-the-ultimate-hypervisor/. Ещё спустя четыре года, PVE в версии 4.1 применяется по крайней мере на 90 000 хостах, и более чем 500 коммерческими потребителями в 140 странах; веб- интерфейс сам по себе переведён на 19 языков.

Данная глава изучает фундаментальные технологии, лежащие в основе функциональности гипервизора PVE: LXC, KVM и QEMU. Для этого мы будем развивать пригодное для работы понимание виртуальных машин, контейнеров и их надлежащего применения.

В данной главе мы обсудим:

  • Proxmox VE вкратце

  • Виртуализацию и контейнеризацию при помощи PVE

  • Виртуальные машины Proxmox VE, KVM и QEMU

  • Контейнеризацию посредством PVE и LXC

 Proxmox VE в двух словах

При помощи Proxmox VE, Proxmox Server Solutions GmbH (https://www.proxmox.com/en/about) снабжает нас готовым для применения на корпоративном уровне гипервизором 2 типа. Далее вы обнаружите свойства, которые делают Proxmox VE сильным претендентом для корпоративного уровня.

  • Лицензирование Proxmox VE совершенно обдуманно осуществляется на условиях GNU Affero General Public License (V3) (https://www.gnu.org/licenses/agpl-3.0.html). Это показательный выбор из большого числа свободных совместимых лицензий и лицензий открытого исходного кода, так как оно "специально разработано для обеспечения взаимодействия с сообществом для варианта програмного обеспечения сетевых серверов".

  • PVE главным образом администрируется через веб- интерфейс, при помощи командной строки локально и с использованием SSH. Следовательно, отсутствует потребность в отдельном сервере управления и связанных с этим расходах. Таким образом Proxmox VE значительно отличается от альтернативных решений виртуализации корпоративного уровня таких производителе как, например, VMWare.

  • Экземпляры/ узлы Proxmox VE могут быть объединены в кластеры PVE и централизованно администрироваться посредством унифицированного веб- интерфейса.

  • Proxmox VE предоставляет возможности миграции в реальном масштабе времени ("вживую) - перемещение виртуальной машины или контейнера с одного узла кластера на другой без нарушения обслуживания. Это достаточно уникальная особенность PVE не являющаяся распространённой в конкурирующих продуктах.

[Предостережение]Предостережение

Функциональное тестирование подобно приведенному не подменяет соответствующее тестирование блоков и интеграции, однако служит отправной точкой.

Функция Proxmox VE VMware vSphere

Требования к оборудованию

Гибкие

Строгое соответствие HCL (Hardware Compatibility List)

Встроенный интерфейс управления

На основе веб и оболочек (браузер и SSH)

Отсутствует. Требуется сервер управления за дополнительную плату.

Простая структура подписок

Присутствует; основана на числе оплачиваемых билетов (ticket) поддержки в году и числа ЦПУ.

Отсутствует.

Высокая доступность

Да

Да

Миграция ВМ в реальном масштабе времени

Да

Да

Поддержка контейнеров

Да

Нет

Поддерживаемые ОС виртуальных машин

Windows и Linux

Windows, Linux и Unix

Поддержка сообщества

Да

Нет

Снимки ВМ вреальном времени

Да

Да

[Замечание]Замечание

Для полного каталога свойств ознакомьтесь со справочной таблицей по адресу https://www.proxmox.com/images/download/pve/docs/Proxmox-VE-Datasheet.pdf.

Как и его конкуренты, Proxmox VE является гипервизором: обычный гипервизор это программное обеспечение, которое создаёт, выполняет, настраивает и управляет виртуальными машинами на основе выборов администратора или инженера.

PVE называется гипервизором 2 типа, поскольку уровень виртуализации встроен в операционную систему.

Будучи гипервизором 2 типа, Proxmox VE собирается в рамках проекта Debian. Debian является дистрибутивом GNU/Linux, известный своей надёжноститью, приверженностью к безопасности а также своим процветанием и преданным сообществом содействующих разработчиков.

 

Рисунок 1.1.


Гипервизоры 2 типа, подобные PVE, выполняются непосредственно из операционной системы. В случае Proxmox VE операционной системой является Debian; начиная с версии PVE 4.0 лежащей в основе операционной системой была Debian "Jessie"

В противоположность ему, гипервизор 1 типа ()подобный VMware ESXi) работает напрямую на голом железе без посредства операционной системы. Он не имеет дополнительной функциональности между управлением виртуализацией и аппаратными средствами.

 

Рисунок 1.2.


Гипервизор 1 типа работает непосредственно на аппаратных средствах без посредства операционной системы

[Замечание]Замечание

Дистрибуивы GNU/Linux на основе Debian возможно наиболее популярные дистрибутивы GNU/Linux для настольных приложений.

Одна из характеристик, которая отличает Debian от конкурирующих дистрибутивов заключается в её политике редакций: Debian выпускается только тогда, когда сообщество разработчиков может гарантировать его стабильность, безопасность и удобство в эксплуатации.

Debian не делает различий между выпусками сдлительной поддержкой (long-term support) и обычными версиями.

Вместо этого все выпуски Debian получают сильную поддержку и критически важные обновления на протяжении первого года, следующего за выпуском. (Начиная с 2007г основные выпуски Debian осуществлялись примерно каждые два года.) Debian 8, Jessie, был выпущен примерно по расписанию в 2015.

Уверенность Proxmox VE в Debian таким образом свидетельствует приверженности этим принципам: стабильность, безопасность, удобство в эксплуатации на протяжении запланированных выпусков, которые способствуют передовым функциям.

Proxmox VE предоставляет свою функциональность виртуализации посредством трёх открытых технологий, управляемых через унифицированный веб- интерфейс:

  • LXC

  • KVM

  • QEMU

Чтобы понять как этот фундамент обслуживает Proxmox VE мы должны вначале быть способными ясно понимать связь между виртуализацией, (или, в особенности, аппаратной виртуализацией) и контейнеризацией (виртуализация ОС). Когда мы разберёмся с этим, их соответствующие варианты применения должны стать совершенно ясными.

 Виртуализация при помощи Proxmox VE

В конечном счёте будет правильно рассматривать контейнеризацию как некий тип виртуализации. Тем не менее, здесь мы вначале рассмотрим концептуальные отличия виртуальной машины от контейнера, сосредоточившись на противопоставлении характеристик.

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

Технология виртуализации позволяет нам совместно использовать и распределять наши ресурсы физических компьютеров во множестве сред исполнения. Без контекста виртуализация является мутным термином. Она инкапсулирует абстракцию таких ресурсов как хранилище, сетевая среда, серверы, среды рабочих столов и даже приложений от их определённых аппаратных требований через решения программных реализаций, называемых гипервизорами.

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

С точки зрения PVE виртуализация чаще всего относится к абстрагированию всех аспектов отвлечённых вычислительных систем от их оборудования. Другими словами, в контексте виртуализация является созданием из виртуальной машины или ВМ (VM) своих собственных операционной системы и приложений.

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

К тому же виртуальная машина не имеет физических следов своих материальных аналогов. Оборудование, на которое она полагается, на самом деле, является предоставляемым программным обеспечением и которое заимствует аппаратные ресурсы хоста, установленные на физической машине (или "голом железе", bare metal).

Тем не менее, компоненты программного обеспечения виртуальной машины от приложений вплоть до операционной системы отчётливо отделяются от программных компонентов вашей машины хоста. Это преимущество реализуется когда идёт речь о распределении физического пространства для ресурсов.

Например, мы можем иметь сервер PVE, выполняющий веб- сервер, сервер базы данных, межсетевой экран и журналирование управления системой - всё в виде отдельных виртуальных машин. Вместо того чтобы потреблять физическое пространство, ресурсы и работу по сопровождению четырёх машин мы просто делаем физическое помещение для единственного сервера Proxmox VE и настраиваем по необходимости соответствующую виртуальную сетевую среду.

В белых страницах озаглавленных Продвижение виртуализации серверов в обработку (Putting Server Virtualization to Work), AMD ясно произносит преимущества виртуализации для коммерческой деятельности и разработчиков (https://www.amd.com/Documents/32951B_Virtual_WP.pdf):

5 главных преимуществ виртуализации для коммерческой деятельности:

  • Увеличение использования сервера

  • Улучшает уровни обслуживания

  • Упрощает управляемость и безопасность

  • Снижает стоимость аппаратных средств

  • Сокращает затраты на объекте

Преимущества виртуализации при разработке и в средах тестирования:

  • Снижает требования к капиталу и пространству

  • Снижает стоимость электропитания и охлаждения

  • Увеличивает эффективность за счёт сокращения сроков тестирования

  • Более быстрый выход на рынок

К этим преимуществам давайте добавим переносимость и инкапсуляцию: уникальные возможности для миграции работающих ВМ с одного хоста PVE на другой - без претерпения каких- либо перерывов в обслуживании.

Proxmox VE делает возможным создание и управление виртуальными машинами посредством комбинации применения двух свободных технологий с открытым исходным кодом: Kernel-based Virtual Machine (или KVM) и Quick Emulator (QEMU). При совместном применении мы будем ссылаться на эту интеграцию инструментов как на KVM-QEMU.

  KVM

KVM вошёл в состав ядра Linux в феврале 2007. Этот модуль ядра позволяет пользователям и администраторам GNU/Linux получать преимущества от расширений аппаратной архитектуры виртуализации; для наших целей этими расширениями являются AMD-V компании AMD и VT-X компании Intel для архитектуры x86_64.

Чтобы получить большую часть набора функциональности Proxmox VE вам для этого потребуется установить любую машину x86_64 с имеющим интергррованные расширения виртуализации процессором. Для получения полного списка поддерживающих KVM процессоров посетите Intel по ссылке http://ark.intel.com/Products/VirtualizationTechnology или AMD по адресу http://support.amd.com/en-us/kb-articles/Pages/GPU120AMDRVICPUsHyperVWin8.aspx.

  QEMU

QEMU предоставляет интерфейс эмуляции и виртуализации которые могут управляться пользователем через сценарии или другие способы.

 

Рисунок 1.3.


Визуализация взаимосвязей между KVM и QEMU

Не применяя Proxmox VE мы можем по существу определить аппаратные средства, создать виртуальный диск и запустить/ остановить виртуализированный сервер из командной строки с помощью QEMU.

В качестве альтернативы мы можем на любой один из имеющегося массива графических интерфейсов для QEMU (перечень доступных GUI для различных платформ можно найти по адресу http://wiki.qemu.org/Links#GUI_Front_Ends).

Конечно, работа с этими решениями является продуктивной только если вы заинтересованы в том, что происходит за кулисами в PVE, когда определяются виртуальные машины. Управление виртуальными машинами Proxmox VE само по себе, управляет QEMU посредством его API.

[Замечание]Замечание

Управление QEMU из командной строки может быть утомительным. Ниже приводится строка из сценария, который запускает Raspbian, ремикс Debian для архитектуры Raspberry Pi на машине x86 Intel выполняющей Ubuntu. Когда мы увидим как легко можно управлять виртуальными машинами из административного интерфейса Proxmox VE, мы искренне оценим эту относительную простоту: qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ./$raspbian_img -hdb swap.

Если вы знакомы с функциями эмуляции QEMU, вероятно, будет полезно заметить, что мы не можем управлять эмуляцией посредством инструментов и функций предоставляемых Proxmox VE - несмотря на его зависимость от QEMU. Из предоставлеямой Debian оболочки bash это возможно. Тем не менее, эмуляция не может управляться через интерфейсы администрирования и управления PVE.

  Виртуализация ОС при помощи Proxmox VE

Контейнеры являются другим типом виртуализации. Являясь синонимом виртуализации операционной системы, контейнеры переживают в настоящее время возрождение. В противоположность ВМ, контейнеры совместно применяют компоненты операционной системы, такие как библиотеки и исполняемые файлы в операционной системе хоста; чего не могут делать виртуальные машины.

 

Рисунок 1.4.


Визуализальное сопоставление виртуальных машин и контейнеров

[Совет]Совет

Преимущество контейнеров

Подобное положение потенциально позволяет котейнерам более компактный запуск при меньших заимствуемых у хоста аппаратных ресурсах. Многим авторам, учёным мужам и пользователям контейнеры также предлагают наглядные преимущества с точки зрения скорости и эффективности. (Тем не менее, здесь следует отметить, что такие ресурсы как оперативная память и мощные ЦПУ становятся дешевле и это преимущество будет уменьшаться, {Прим. пер.: пример подобной аргументации и реализация этого подхода}).

Контейнер Proxmox VE возможен благодаря LXC начиная с версии 4.0 (в предыдущих версиях они были возможны благодаря OpenVZ {Прим. пер.: Proxmox предоставляет инструменты для преобразования контейнеров OpenVZ в LXC, подробнее...}). LXC является третьей фундаментальной технологией, обслуживающей последние интересы Proxmox VE. Как и KVM и QEMU, LXC (или Linux Containers) является технологией с открытым исходным кодом. Она позволяет хосту выполнять, а администратору управлять множеством экземпляров операционной системы в виде изолированных контейнеров на отдельном физическом хосте. К тому же, концептуально контейнер очень чётко представляет некий класс виртуализации, а не противоположную идею. Тем не менее, полезно проводить чёткое различие между виртуальной машиной и контейнером, как мы это проводим в терминах PVE.

Идеальная реализация гостя Proxmox VE зависит от обстоятельств нашей дифференциации и выбора между решением виртуальной машины и решением контейнера.

Так как контейнеры Proxmox VE совместно используют компоненты в операционной системе хоста, что предлагает преимущества в смысле эффективности, данный текст будет направлять вас на создание вами контейнеров в том случае, когда гость может быть полностью реализован при помощи Debian Jessie, являющейся операционной системой нашего гипервизора без ущерба для функциональности.

Когда мы собираемся, например, выполнять операционную систему Microsoft Windows, контейнер Proxmox VE перестаёт быть решением. В этом случае мы вместо этого переходим к созданию виртуальной машины. {Прим. пер.: тем, кто всё-таки хочет применять контейнеризацию Windows , советуем обратиться к решениям, предлагаемых в рамках продукта Docker}. Мы должны применять ВМ именно потому, что компоненты операционной системы, которые Debian может предлагать для совместного использования с контейнерами Linux не являются теми компонентами, которые может применять операционная система Microsoft Windows.

 Заключение

В данной главе мы приняли три технологии с открытым исходным кодом, которые обеспечивают функциональные особенности Proxmox VE: контейнеризацию и виртуализацию при помощи LXC, KVM и QEMU.

В этом пути мы пришли к пониманию, что контейнеры, будучи типом виртуализации, имеют свойства, отличающие их от виртуальных машин.

Эти различия будут иметь решающее значение когда мы определим на какие технологии будут полагаться решения виртуального сервера Proxmox VE.

Следующая глава будет вашим руководством по установке и настройке вашего первого сервера Proxmox VE. Таким образом, она предоставит описание аппаратных средств Proxmox VE и методы установки. Наконец, мы совершим прогулку по своему Proxmox Installer.

Давайте продвинемся вперёд и подготовим наш первый экземпляр PVE, который будет применять хост и для контейнеров, и для виртуальных машин.