Вильям Лам написал интересную статью о том, как можно редактировать настройки SMBIOS для вложенного/виртуального (Nested) VMware ESXi в части hardware manufacturer и vendor.
Nested ESXi продолжает оставаться полезным ресурсом, который часто используется администраторами: от прототипирования решений, воспроизведения проблем клиентов до автоматизированных развертываний лабораторий, поддерживающих как VMware Cloud Foundation (VCF), так и VMware vSphere Foundation (VVF).
Хотя с помощью Nested ESXi можно сделать почти все, но имитировать или симулировать конкретные аппаратные свойства, такие как производитель или поставщик (hardware manufacturer и vendor), не совсем возможно или, по крайней мере, очень сложно. Коллега Вильяма Люк Хакаба нашел хитрый трюк, играя с настройками загрузочных ROM виртуальной машины по умолчанию, которые поставляются с ESXi и VMware Desktop Hypervisors (платформы Workstation/Fusion).
Виртуальная машина vSphere может загружаться, используя либо BIOS, либо EFI прошивку, поэтому в зависимости от желаемого типа прошивки вам нужно будет изменить либо файл BIOS.440.ROM, либо EFI64.ROM. Эти файлы ROM можно найти в следующих каталогах для соответствующих гипервизоров VMware:
Примечание: не редактируйте файлы ROM по умолчанию, которые поставляются с гипервизором VMware, сделайте их копию и используйте измененную версию, которую могут использовать виртуальные машины в VMware vSphere, Fusion или Workstation. Кроме того, хотя эта статья посвящена виртуальной машине Nested ESXi, это также должно работать и на других гостевых операционных системах для отображения информации SMBIOS.
Редактирование BIOS
Шаг 1 - Скачайте и установите Phoenix BIOS Editor. Установщик Phoenix BIOS Editor имеет проблемы при запуске на системе Windows Server 2019, и единственным способом завершить установку - это изменить совместимость приложения на Windows 8, что позволит успешно завершить установку.
Шаг 2 - Скачайте и откройте файл BIOS.440.ROM с помощью Phoenix BIOS Editor, затем перейдите на панель DMI Strings для изменения нужных полей.
Когда вы закончите вносить все изменения, перейдите в меню "Файл" и нажмите "Собрать BIOS" (Build BIOS), чтобы создать новый файл ROM. В данном примере это файл BIOS.440.CUSTOM.ROM.
Шаг 3 - Скопируйте новый файл ROM в хранилище вашего физического хоста ESXi. Вы можете сохранить его в общей папке, чтобы использовать с несколькими виртуальными машинами Nested ESXi, ИЛИ вы можете сохранить его непосредственно в папке отдельной виртуальной машины Nested ESXi. Второй вариант позволит вам повторно использовать один и тот же кастомный файл ROM в нескольких виртуальных машинах, поэтому, с точки зрения тестирования, возможно, вам захочется создать несколько файлов ROM в зависимости от ваших нужд и просто перенастроить виртуальную машину для использования нужного файла ROM.
Шаг 4 - Чтобы кастомный файл ROM мог быть использован нашей виртуальной машиной Nested ESXi, нам нужно добавить следующую дополнительную настройку (Advanced Setting) виртуальной машины, которая указывает путь к нашему кастомному файлу ROM:
bios440.filename = "BIOS.440.CUSTOM.ROM"
Шаг 5 - Наконец, мы можем включить нашу виртуальную машину Nested ESXi, и теперь мы должны увидеть кастомную информацию SMBIOS, как показано на скриншоте ниже.
Редактирование EFI
Шаг 1 - Скачайте и установите HEX-редактор, который может редактировать файл EFI ROM. Например, ImHex - довольно удобный с точки зрения редактирования, но поиск определенных строк с помощью этого инструмента является нетривиальной задачей.
Шаг 2 - Скачайте и откройте файл EFI64.ROM с помощью редактора ImHex и найдите строку "VMware7,1". Как только вы найдете расположение этой строки, вам нужно аккуратно отредактировать значения hex, чтобы получить желаемые ASCII строки.
Кроме того, вы можете использовать UEFITool (версия 28 позволяет модифицировать ROM), который имеет гораздо более удобный и функциональный поиск, а также позволяет извлекать часть файла ROM для редактирования с помощью HEX-редактора. В этой утилите можно использовать поиск (CTRL+F), и как только он находит нужный раздел, двойным щелчком по результату переходите к точному месту в файле ROM. Чтобы извлечь раздел для редактирования, щелкните правой кнопкой мыши и выберите "Extract as is" и сохраните файл на рабочий стол.
Затем вы можете открыть конкретный раздел с помощью ImHex, чтобы внести свои изменения.
После того как вы сохранили свои изменения, не теряйте указатель в UEFITool. Теперь мы просто заменим раздел нашим измененным файлом, щелкнув правой кнопкой мыши и выбрав "Replace as is", указав измененный раздел. Вы можете подтвердить, что изменения были успешными, просто найдя строку, которую вы заменили. Затем перейдите в меню "Файл" и выберите "Сохранить образ файла" (Save image file), чтобы создать новый файл ROM. В данном случае - это файл EFI64.CUSTOM.ROM.
Шаг 3 - Скопируйте новый файл ROM в хранилище вашего физического хоста ESXi. Вы можете сохранить его в общей папке, чтобы использовать с несколькими виртуальными машинами Nested ESXi, ИЛИ вы можете сохранить его непосредственно в папке отдельной виртуальной машины Nested ESXi.
Шаг 4 - Чтобы наш кастомный файл ROM мог быть использован виртуальной машиной Nested ESXi, нам нужно добавить следующую дополнительную настройку ВМ в файл vmx, которая указывает путь к нашему кастомному файлу ROM:
efi64.filename = "EFI64.CUSTOM.ROM"
Шаг 5 - Наконец, мы можем включить виртуальную машину Nested ESXi, и теперь мы должны увидеть кастомную информацию SMBIOS.
Как видно на скриншоте, Вильяму удалось изменить только модель оборудования, но не значение вендора.
Примечание: хотя автору и удалось найти строку "VMware, Inc." для вендора, изменение значения не оказало никакого эффекта, как показано на скриншоте выше, что, вероятно, указывает на то, что эта информация может храниться в другом месте или содержаться в каком-то встроенном файле.
Конструктор лаборатории VMware Cloud Foundation Lab Constructor (VLC) Holodeck Toolkit предназначен для обеспечения масштабируемого, повторяемого способа развертывания вложенных сред VMware Cloud Foundation (VCF) непосредственно на хостах VMware ESXi. Эти среды идеально подходят для практических занятий нескольких команд, изучающих возможности VCF и реализации управляемого заказчиком облака VMware.
В зависимости от числа необходимых тестовых окружений, вам понадобится мощный сервер в одной из следующих конфигураций:
Реализация лабораторий VCF во вложенной форме решает несколько проблем, связанных с практическими занятиями для продукта уровня центра обработки данных, такого как VCF, включая:
Снижение требований к оборудованию - при работе в физической среде VCF требует четыре узла vSAN Ready Nodes для домена управления и дополнительные хосты для создания кластеров и доменов рабочих нагрузок. Во вложенной среде те же четыре-восемь хостов легко виртуализируются для работы на одном хосте ESXi.
Самодостаточные сервисы - конфигурация Holodeck Toolkit предоставляет общие инфраструктурные сервисы, такие как NTP, DNS, AD, сервисы сертификатов и DHCP внутри среды, исключая необходимость полагаться на сервисы центра обработки данных во время тестирования. Каждой среде требуется один внешний IP.
Изолированная сеть - конфигурация Holodeck Toolkit устраняет необходимость в соединениях VLAN и BGP в сети клиента на ранних этапах тестирования.
Изоляция между средами - каждая развертываемая среда Holodeck полностью самодостаточна. Это избегает конфликтов с существующими сетевыми конфигурациями и позволяет развертывать множество вложенных сред без опасений насчет перекрытия.
Множественные развертывания VCF на одном хосте VMware ESXi с достаточной мощностью - типичное развертывание стандартной архитектуры VCF с четырехузловым доменом управления и четырехузловым доменом рабочих нагрузок VI, а также дополнениями, такими как VMware vRealize Automation, требует примерно 20 ядер процессора, 512 ГБ памяти и 2.5 ТБ диска.
Автоматизация и повторяемость - развертывание вложенных сред VCF почти полностью автоматизировано и легко повторяемо с использованием файлов конфигурации. Типичное развертывание занимает менее 3 часов, с менее чем 15 минутами активного времени использования клавиатуры.
Среда Holodeck Toolkit 2.0
Пакет Holodeck Toolkit 2.0 состоит из нескольких основных компонентов:
Пакет VCF Lab Constructor (VLC) 5.0 для полной автоматизации развертывания повторяемых вложенных лабораторий Cloud Foundation на одном хосте ESXi. Этот релиз поддерживает VCF 4.5, 4.5.1 и 5.0.
Пользовательские файлы конфигурации VLC-Holo-Site-1 и VLC-Holo-Site-2 для VLC, поддерживающие развертывания VMware Cloud Foundation с несколькими сайтами.
Пользовательский Holo-Router на базе VMware Photon OS для поддержки коммуникаций внутри вложенной среды VCF и из этой среды во внешнюю сеть.
Пользовательская Holo-Console на базе Microsoft Windows Server 2019.
Полностью автоматизированный механизм создания ISO-образа Holo-Console.
Полные руководства по развертыванию и эксплуатации одного или нескольких серверов Holodeck.
Набор лабораторий Holodeck "Always succeed" для демонстрации модели облачной эксплуатации нескольким командам внутри центра обработки данных.
Программно-определенные сети и безопасность с VMware NSX Data Center.
Автоматизация частного облака на базе VMware Cloud Foundation.
Масштабирование развертывания и мониторинга приложений с VMware vRealize Automation.
Миграция рабочих нагрузок с VMware HCX.
Модернизация приложений с VMware Tanzu.
Обзор VCF Lab Constructor (VLC)
VLC - это утилита PowerShell/PowerCLI, разработанная для автоматизации развертывания VMware Cloud Foundation во вложенной среде. VLC, используемый с конфигурацией Holodeck, автоматизирует предоставление стандартизированной среды Holodeck "Pod".
Каждый Pod Holodeck содержит:
Четырехузловой домен управления VCF на вложенных узлах, готовых к использованию с vSAN.
Опционально три дополнительных вложенных хоста в домене рабочих нагрузок - или второй кластер vSphere в домене управления, или просто дополнительные элементы первого.
NSX полностью настроен.
Развернутый AVN/NSX Edge (рекомендуется).
Развернутый Tanzu (опционально).
VM Cloud Foundation Cloud Builder, настроенный для предоставления DHCP, NTP, DNS, BGP peering и L3 маршрутизации внутри пода.
VLC также может автоматизировать развертывание второго экземпляра VCF на под для предоставления многосайтовой конфигурации VCF для продвинутых лабораторных занятий, таких как NSX Federation, VMware Site Recovery Manager и VCF с vSAN Stretched Cluster.
VLC предоставляет возможность развертывания вложенных сред с простым графическим интерфейсом или полностью автоматизированно с файлом конфигурации и командной строкой PowerShell. Масштабирование работающих вложенных сред (добавление дополнительных вложенных хостов ESXi) может быть выполнено с помощью опции пакета расширения в графическом интерфейсе VLC.
Примечание: VCF Lab Constructor не поддерживается VMware как официальный продукт, это что-то похожее на VMware Flings. Вы также можете присоединиться к каналу поддержки VLC в Slack.
Обзор вложенной среды
Конфигурация "VLC Holodeck Standard" является вложенной конфигурацией VMware Cloud Foundation, используемой в качестве базовой для нескольких лабораторных упражнений по эксплуатации частного облака, созданных командой технического маркетинга Cloud Foundation. Стандартный "VLC-Holo-Site-1" является основной развертываемой конфигурацией. Дополнительный VLC-Holo-Site-2 может быть развернут в любое время позже в рамках нового Pod. Конфигурация VLC-Holo-Site-1 соответствует лабораторной конфигурации в VCF Hands-On Lab HOL-2246 и вложенной конфигурации в программе VCF Experience, запущенной на платформе лабораторий VMware.
Каждый Pod в развертывании Holodeck работает с идентичной вложенной конфигурацией. Pod может быть развернут с автономной конфигурацией VLC-Holo-Site-1 или же с одновременно активными конфигурациями VLC-Holo-Site-1 и VLC-Holo-Site-2. Разделение подов, а также между сайтами внутри пода, обрабатывается на уровне виртуального коммутатора vSphere Standard Switch (VSS). Каждый Pod Holodeck настроен с уникальным VSS для сайта. Группа портов VMware vSphere настроена на каждом VSS и сконфигурирована как транк VLAN.
Компоненты в группе портов используют тегирование VLAN для изоляции коммуникаций между вложенными VLAN. Это устраняет необходимость в физических VLAN, подключенных к хосту ESXi для поддержки вложенных лабораторий.
Когда развертывается конфигурация Holo-Site-2, она использует второй VSS и группу портов для изоляции от Holo-Site-1.
Конфигурация VLC Holodeck настраивает виртуальную машину VCF Cloud Builder для предоставления нескольких сервисов поддержки внутри пода, чтобы не требовать дополнительных сервисов со стороны клиента. VM Cloud Builder развертывается на сайт для предоставления следующих услуг внутри пода:
DNS (локально для Site1 и Site2 внутри пода, действует как промежуточный узел).
NTP (локально для Site1 и Site2 внутри пода).
DHCP (локально для Site1 и Site2 внутри пода).
L3 TOR для сетей vMotion, vSAN, управления, Host TEP и Edge TEP в каждом сайте.
BGP-пир с VLC Tier 0 NSX Application Virtual Network (AVN) Edge (обеспечивает подключение к оверлей-сетям NSX из лабораторной консоли).
На рисунке ниже показан логический вид конфигурации VLC-Holo-Site-1 внутри Pod Holodeck. Конфигурация Site-1 использует домен DNS vcf.sddc.lab и VLAN 10-15.
Пакет Holodeck также предоставляет предварительно настроенную виртуальную машину Photon OS, называемую "Holo-Router", которая функционирует как виртуализированный маршрутизатор для базовой среды. Эта ВМ позволяет соединять вложенную среду с внешним миром. Holo-Router настроен на перенаправление любого трафика Microsoft Remote Desktop (RDP) к вложенному jump-хосту, известному как Holo-Console, который развертывается внутри пода.
Интерфейс пользователя для вложенной среды VCF предоставляется через виртуальную машину Windows Server 2019 "Holo-Console". Holo-Console предоставляет место для управления внутренней вложенной средой, подобно рабочему столу системного администратора в центре обработки данных. Holo-Console используется для запуска пакета VLC для развертывания вложенного экземпляра VCF внутри пода. Виртуальные машины Holo-Console развертываются из специально созданного ISO, который настраивает следующее:
1. Microsoft Windows Server 2019 Desktop Experience, имеющий на борту:
Домен Active directory "vcf.holo.lab"
DNS-форвардер к Cloud Builder
Сервер сертификатов, Web Enrollment и шаблон сертификата VMware
Включенный RDP
Настроенный IP, подсеть, шлюз, DNS и VLAN для развертывания как Holo-Console
Отключенный брандмауэр и улучшенная безопасность IE
Настроенное рабочее окружение SDDC Commander
2. Дополнительные программные пакеты, развернутые и настроенные:
Google Chrome с закладками Holodeck
VMware Tools
VMware PowerCLI
VMware PowerVCF
VMware Power Validated Solutions
Клиент PuTTY SSH
VMware OVFtool
3. Дополнительные программные пакеты, скопированные в Holo-Console для последующего использования:
VMware Cloud Foundation Cloud Builder OVA в C:\CloudBuilder.
4. VCF Lab Constructor 5.0 с двойной конфигурацией Holodeck:
C:\VLC\VLC-Holo-Site-1
C:\VLC\VLC-Holo-Site-2
5. VMware vRealize Automation 8.10 Easy Installer
На рисунке ниже показаны виртуальные машины, работающие на физическом хосте ESXi для предоставления пода Holodeck под названием "Holo-A". Обратите внимание на экземпляры Holo-Console, Holo-Router, Cloud Builder и четыре вложенных хоста ESXi. Они все общаются через группу портов VLC-A-PG.
Добавление второго сайта включает дополнительный экземпляр Cloud Builder и дополнительные вложенные хосты ESXi. VLC-Holo-Site-2 подключается ко второй внутренней линии Holo-Router на VLAN 20. Доступ в сеть из Holo-Console к VLC-Holo-Site-2 осуществляется через Holo-Router.
На рисунке ниже показан логический вид конфигурации VLC-Holo-Site-2 внутри пода Holodeck. Конфигурация Site-2 использует домен DNS vcf2.sddc.lab и VLAN 20-25.
Доступ к среде Holodeck
Доступ пользователей к поду Holodeck осуществляется через Holo-Console. Доступ к Holo-Console возможен двумя способами:
1. Подключение через Microsoft Remote Desktop Protocol (RDP) к внешнему IP Holo-Router. Holo-Router настроен на перенаправление всего RDP-трафика к экземпляру Holo-Console внутри пода:
Предварительные требования для развертывания VLC Holodeck
Размер хоста ESXi:
Good (один под): Один хост ESXi с 16 ядрами, 384 ГБ памяти и 2 ТБ SSD/NVME
Better (два пода): Один хост ESXi с 32 ядрами, 1024 ГБ памяти и 4 ТБ SSD/NVME
Best (четыре или более подов): Один хост ESXi с 64+ ядрами, 2.0 ТБ памяти и 10 ТБ SSD/NVME
Конфигурация хоста ESXi:
vSphere 7.0U3 или 8.0
Виртуальный коммутатор и группа портов, настроенные с подключениями к сети клиента/интернету
Поддерживается автономный хост, не управляемый сервером vCenter, и одноузловой кластер, управляемый экземпляром сервера vCenter
Кластеры с несколькими хостами НЕ поддерживаются в этом выпуске из-за требования физической поддержки VLAN
Хост Holo-Build:
Хост Windows 2019 или VM с локальным доступом к хостам ESXI, используемым для Holodeck + доступом в интернет для загрузки программного обеспечения. (Этот пакет был протестирован только на Microsoft Windows Server 2019)
Microsoft Server 2019 Desktop Experience (Eval копия с истечением срока действия через 6 месяцев)
Свежий пакет VMware VMTools
Отдельная установка Google Chrome
Последний архив VMware PowerCLI
Свежий архив VMware PowerVCF
Свежий модуль VMware Power Validated Solutions Module
Свежий MSI клиента PuTTY SSH
Свежий VMware OVFtool (требуется вход в CustomerConnect)
VMware Cloud Foundation 4.5 или 5.0 Cloud Builder OVA (требуется вход в CustomerConnect)
Архив VLC holodeck-standard-main zip - включает VCF Lab Constructor, Holo-Router.ova, скрипты автоматизации поддержки Holodeck и руководства по развертыванию в файле holodeck-standard-main.zip
Notepad ++ 8.4.7
VMware vRealize Automation 8.11.2 Easy Installer (требуется вход в CustomerConnect) - эта лаборатория разработана для работы только с VMware vRealize Automation 8.11.2.
На сайте Вильяма Лама есть специальный раздел, посвященный вложенной виртуализации (Nested Virtualization) на базе гипервизора VMware ESXi. В частности, Вильям делает сборки ESXi, которые уже подготовлены к использованию в качестве виртуальных машин как виртуальные модули (Virtual Appliances) в формате OVA. Это может понадобиться для тестовых сред, когда вам нужно развернуть большую инфраструктуру и сделать полноценный кластер, а в распоряжении есть только 1-2 физических сервера.
Также обратите внимание на наш пост о библиотеке Content Library с шаблонами виртуальных модулей Nested ESXi от Вильяма. Адрес для подписки на эту библиотеку следующий:
Еще летом компания Microsoft объявила о том, что техника вложенной виртуализации (Nested Virtualization) доступна для виртуальных машин в облаке Microsoft Azure. На данный момент она поддерживается для ВМ категорий Dv3 and Ev3, но планируется расширение этой поддержки и для других размеров машин. Кроме того, уже довольно давно поддерживается и создание контейнера Hyper-V с помощью средств Docker.
Вложенная виртуализация - это техника, с помощью которой вы можете запустить виртуальную машину с гипервизором внутри, в котором, в свою очередь, запускаются еще несколько виртуальных машин:
Чтобы посмотреть требования и ограничения использования вложенной виртуализации, а также ознакомиться с шагами по настройке гипервизора для Nested Virtualization рекомендуется посмотреть вот этот документ от Microsoft.
Поддержка вложенной виртуализации позволяет строить тестовые модели ИТ-систем (например, кластеров отказоустойчивости хост-серверов), не задействуя большого количества физического оборудования. Например, можно перенести свои виртуальные машины из онпремизного облака в виде виртуальных машин на виртуальный хост Hyper-V в облаке Azure и проверить работоспособность сервиса в такой среде перед производственным использованием. Также вложенная виртуализации активно применяется в целях разработки и тестирования программного обеспечения.
Ну и небольшое видео от Microsoft на тему Nested Virtualization в облаке Azure:
Некоторые из вас знают, что известный блоггер Вильям Лам в числе прочего занимается виртуальным модулем Nested VMware ESXi, то есть готовой к импорту на ESXi виртуальной машиной с этим же гипервизором внутри. Это может пригодиться, например, для создания виртуальных тестовых лабораторий с несколькими гипервизорами на базе одного физического сервера.
Так вот недавно Вильям опубликовал в облаке Amazon S3 стороннюю библиотеку контента (Content Library), где выложены и будут обновляться виртуальные модули Nested VMware ESXi версий 6.x.
Для закачки контента библиотеки вам понадобится зайти в раздел Content Libraries в клиенте vSphere Client:
И далее нужно указать следующий URL подписки на контент:
После того, как библиотека добавится, вы увидите следующие 2 образа (как видно из скриншота выше, не обязательно скачивать их сразу, их можно загрузить по мере необходимости):
Первый - это виртуальный модуль ESXi 6.5d с поддержкой VMware vSAN, а второй - это ESXi 6.0 Update 3. Вещь полезная и удобная, а главное, что Вильям обещает обновлять данные образы.
Этот виртуальный модуль в формате OVA создан для того, чтобы развернуть хост-серверы ESXi в виде виртуальных машин на платформе vSphere в целях обучения и тестирования. Помните, что VMware не поддерживает вложенную (nested) виртуализацию в производственной среде.
Вот конфигурация виртуального модуля:
GuestType: ESXi 6.5[новое]
Virtual Hardware 11 [новое]
2 vCPU
6 GB памяти
2 x VMXNET vNIC
1 x PVSCSI Adapter [новое]
1 x 2GB HDD (под установку самого ESXi)
1 x 4GB SSD (для использования с vSAN, по умолчанию пустой)
1 x 8GB SSD (для использования с vSAN, по умолчанию пустой)
Для запуска виртуального ESXi 6.5 вам потребуется как минимум VMware vSphere 6.0 Update 2. Кстати, а вот какие улучшения появились для виртуального ESXi, которые можно опробовать в версии 6.5:
Поддержка Paravirtual SCSI (PVSCSI)
GuestOS Customization
Поддержка ESXi 6.5 со стороны vSphere 6.0 Update 2
Поддержка Virtual NVMe
Скачать виртуальный модуль VMware ESXi 6.5 Virtual Appliance можно по этой ссылке.
Мы часто пишем о проблемах вложенной виртуализации (nested virtualization), которая представляет собой способ запустить виртуальные машины на гипервизоре, который сам установлен в виртуальной машине. На платформе VMware ESXi эта проблема давно решена, и там nested virtualization работает уже давно, мало того - для виртуального ESXi есть даже свои VMware Tools.
Как мы недавно писали, решения для вложенной виртуализации на платформе Microsoft Hyper-V не было. При попытке запустить виртуальную машину на виртуальном хосте Hyper-V администраторы получали вот такую ошибку:
VM failed to start. Failed to start the virtual machine because one of the Hyper-V components is not running.
Все это происходило из-за того, что Microsoft не хотела предоставлять виртуальным машинам средства эмуляции техник аппаратной виртуализации Intel VT и AMD-V. Стандартная схема виртуализации Hyper-V выглядела так:
Virtualization Extensions передавались только гипервизору хостовой ОС, но не гостевой ОС виртуальной машины. А без этих расширений виртуальные машины в гостевой ОС запущены быть не могли.
Соответственно, это позволит запустить вложенные виртуальные машины на хосте, который сам является виртуальной машиной с гостевой ОС Windows и включенной ролью Hyper-V.
На данный момент работает это только с Intel VT, но по идее к релизу Windows Server 2016 должно заработать и для AMD-V.
Сфера применения вложенных виртуальных машин не такая уж и узкая. Сейчас видится 2 основных направления:
Виртуальные тестовые лаборатории, где развертываются виртуальные серверы Hyper-V и строятся модели работающих виртуальных инфраструктур в рамках одного физического компьютера.
Использование контейнеризованных приложений (например, на движке Docker) в виртуальных машинах на виртуальных хостах Hyper-V. Более подробно о Windows Server Containers можно почитать вот тут. Немногим ранее мы писали об аналогичной архитектуре на базе VMware vSphere, анонсированной на VMware VMworld 2015.
Надо отметить, что для вложенных виртуальных машин не поддерживаются следующие операции (как минимум):
Dynamic Memory
Горячее изменение памяти работающей ВМ
Снапшоты
Live Migration
Операции save/restore
Ну и вообще, вряд ли вложенная виртуализация вообще когда-нибудь будет полностью поддерживаться в производственной среде. Кстати, вложенная виртуализация на сторонних гипервизорах (например, VMware vSphere) также не поддерживается.
Для того, чтобы вложенная виртуализация заработала, нужно:
1. Использовать Windows 10 Build 10565. Windows Server 2016 Technical Preview 3 (TPv3) и Windows 10 GA - не подойдут, так как в них возможности Nested Virtualization нет.
2. Включить Mac Spoofing на сетевом адаптере виртуального хоста Hyper-V, так как виртуальный коммутатор хостового Hyper-V будет видеть несколько MAC-адресов с этого виртуального адаптера.
3. В Windows 10 нужно отключить фичу Virtualization Based Security (VBS), которая предотвращает трансляцию Virtualization Extensions в виртуальные машины.
4. Предусмотреть память под сам гостевой гипервизор и под все запущенные виртуальные машины. Память для гипервизора можно рассчитать так:
Теперь для того чтобы включить Nested Virtualization, выполните следующий сценарий PowerShell (в нем и VBS отключается, и Mac Spoofing включается):
Далее создайте виртуальную машину на базе Windows 10 Build 10565, и включите в ней Mac Spoofing (если вы не сделали это в скрипте). Сделать это можно через настройки ВМ или следующей командой PowerShell:
Set-VMNetworkAdapter -VMName <VMName> -MacAddressSpoofing on
Ну а дальше просто запускайте виртуальную машину на виртуальном хосте Hyper-V:
Таги: Microsoft, Hyper-V, Nested, Virtualization, VMachines, Windows, Server
Какое-то время назад мы писали о том, что на сайте проекта VMware Labs доступен пакет VMware Tools для виртуальных серверов VMware ESXi, работающих как виртуальные машины. В версии VMware vSphere 6 этот пакет по умолчанию уже вшит в ESXi 6.0, и ничего ставить дополнительно не нужно:
Это можно также просто проверить с помощью консольной команды:
Мы довольночасто пишем о "вложенной" виртуализации, которая позволяет запускать гипервизор VMware ESXi в виртуальной машине поверх ESXi, установленного уже на физическом сервере (nested virtualization). Для таких виртуальных ESXi есть даже свои VMware Tools. Однако, отметим сразу, что такое использование виртуализации официально не поддерживается со стороны VMware (в производственной среде), хотя и активно применяется в частном порядке ее сотрудниками, партнерами и заказчиками.
Так вот у многих администраторов есть закономерный вопрос - а надо ли лицензировать такие виртуальные ESXi? Ведь они все равно, кроме как для тестов, ни на что не годятся. Ответ прост - лицензировать надо. Об этом прямо написано в KB 2009916:
Customers running nested ESXi/ESX will need to obtain additional licenses for the nested ESXi/ESX.
VMware does not support running nested ESXi/ESX servers in production environments. This includes, but is not limited to:
VMware ESXi/ESX running in VMware Workstation or VMware Fusion
VMware ESXi/ESX running in VMware ESXi/ESX
VMware ESXi/ESX running in other third-party hypervisor solutions
Для тех, кто не хочет платить или хочет заплатить поменьше, есть 2 варианта:
Постоянно переустанавливать ESXi в составе vSphere с триалом на 60 дней.
Использовать виртуальный ESXi, но с одним vCPU и, как следствие, платить только за одну лицензию. При этом можно поставить несколько виртуальных ядер на этот vCPU, и производительность будет почти та же, что и при нескольких процессорах. Как раз для этих целей VMware и был придуман параметр cpuid.coresPerSocket.
А как обстоят дела с вложением Hyper-V в Hyper-V? При попытке поставить роль Hyper-V в виртуальной машине Windows Server 2012 R2 вы получите вот такие сообщения об ошибках:
Hyper-V cannot be installed: A hypervisor is already running.
Если попробуем включить роль через PowerShell получим аналогичную ошибку:
Далее роль встанет, и можно запустить консоль управления виртуальными машинами.
Но при попытке запустить виртуальную машину будет выведена ошибка:
VM failed to start. Failed to start the virtual machine because one of the Hyper-V components is not running.
Для этой проблемы пока решения нет. Виртуальную машину вы не сможете запустить на Hyper-V никак. Хотя на VMware vSphere 5.x все будет прекрасно работать.
Здесь же вы только сможете сделать такие вложенные ВМ узлами Failover Cluster для целей тестирования или снятия скриншотов:
Все это происходит из-за того, что Microsoft не хочет предоставлять виртуальным машинам средства эмуляции техник аппаратной виртуализации Intel VT и AMD-V, хотя многие пользователи и спрашивают об этом. По мнению сотрудников Microsoft, которых можно встретить на форумах technet, "это не нужно".
Таги: Hyper-V, Nested, VMachines, ESXi, Microsoft, Windows, Server
Многие администраторы и разработчики для своих целей используют VMware ESXi, работающий в виртуальной машине (так называемый Nested ESXi). Туда даже можно ставить свои VMware Tools.
При этом, когда требуется использовать виртуальные ESXi, как правило, их требуется несколько штук. Есть три способа получить их:
Поставить заново и настроить - самый надежный, но долгий.
Использовать процедуру автоматической установки и настройки Kickstart. Но тут надо знать, как это делается.
Склонировать существующий экземпляр ESXi - самое простое решение, но сделать это нужно правильно.
Вильям Лам описал третий вариант процедуры подготовки ESXi к клонированию, после проведения которой можно развертывать эти инстансы легко и просто. В результате у новых ESXi будут свои MoRef ID, UUID, BIOS UUID и MAC-адреса.
Итак, что нужно сделать:
1. Смена MAC-адреса VMkernel при смене MAC-адреса сетевого интерфейса VM Network.
Если развертывать новый ESXi с новым MAC-адресом Virtual machine network, то необходимо также поменять MAC-адрес VMkernel. Для этого есть настройка FollowHardwareMac, которая позволяет делать это автоматически.
Для этого выполняем команду консоли ESXCLI:
esxcli system settings advanced set -o /Net/FollowHardwareMac -i 1
2. Удаляем упоминание об UUID из esx.conf.
Запись о системном UUID сервера ESXi хранится в основном конфигурационном файле esx.conf (/etc/vmware/esx.conf). Нужно удалить строчку с упоминанием этого UUID - и тогда он сгенерируется при следующей загрузке.
После этого можно выключать ВМ с виртуальным VMware ESXi и клонировать ее. При загрузке новой ВМ, естественно, нужно поменять IP-адрес и прочую сетевую идентификацию.
В комментариях к заметке Вильяма пишут, что такой способ можно использовать для клонирования LUN, содержащего образ для загрузки ESXi по SAN.
То, о чем думали многие экспериментаторы и разработчики, но боялись попросить - на сайте проекта VMware Labs появились VMware Tools для виртуального VMware ESXi. Они поддерживают VMware vSphere версий 5.0, 5.1 и 5.5.
Как многим стало понятно, это пакет ПО, предназначенный для установки в консоли сервера ESXi, когда он установлен в виртуальной машине, запущенной на уже физической платформе с ESXi (по аналогии с VMware Tools для виртуальных машин).
Вот какие возможности есть в VMware Tools for Nested ESXi:
Предоставляет в консоли vSphere Client информацию о виртуальной машине с Nested ESXi (IP-адрес, имя хоста и прочее).
Позволяет виртуальному ESXi быть правильно перезапущенным или выключенным (restart и shut down, соответственно) при операциях через vSphere Client (толстый клиент) или vSphere API.
Возможность выполнения скриптов во время изменения хостом ESXi состояний питания (включение, выключение и т.п.).
Поддержка Guest Operations API (бывший VIX API) для операций внутри ВМ (т.е. в консоли вложенного ESXi).
Порядок установки:
Вариант 1 - скачиваем VIB-пакет, кладем его на датастор и ставим:
esxcli system maintenanceMode set -e true esxcli software vib install -v /vmfs/volumes/[VMFS-VOLUME-NAME]/esx-tools-for-esxi-9.7.0-0.0.00000.i386.vib -f
esxcli system shutdown reboot -r "Installed VMware Tools" - See more at: http://www.virtuallyghetto.com/2013/11/w00t-vmware-tools-for-nested
esxi.html#sthash.f89qps1O.dpuf
Вариант 2 - устанавливаем VIB прямо с сайта VMware:
esxcli network firewall ruleset set -e true -r httpClient
Как знают администраторы виртуальных сред и некоторые разработчики, на многих платформах виртуализации существует возможность запуска виртуальных машин в виртуальных машинах с установленным в них гипервизором - так называемая "вложенная виртуализация" (Nested Virtualization). Например, такие возможности есть в VMware vSphere (что позволяет запускать не только свой вложенный гипервизор ESXi, но машины на вложенном гипервизоре Hyper-V).
Компания Ravello нашла интересный способ использовать вложенную виртуализацию в своем продукте Cloud Application Hypervisor, который позволяет универсализовать развертывание ВМ разных платформ виртуализации в публичных облаках различных сервис провайдеров.
Основным компонентом этой системы является технология HVX - собственный гипервизор (на базе Xen), являющийся частью ОС Linux и запускающий вложенные виртуальные машины без их изменения средствами техник бинарной трансляции. Далее эти машины можно разместить в облаках Amazon EC2, HP Cloud, Rackspace и даже частных облаках, управляемых VMware vCloud Director (поддержка последнего ожидается в скором времени).
Продукт Ravello - это SaaS-сервис, а такие матрешки можно просто загружать на любой из поддерживаемых хостингов, вне зависимости от используемого им гипервизора. Виртуальная сеть между машинами создается через L2-оверлей над существующей L3-инфраструктурой хостера с использованием GRE-подобного протокола (только на базе UDP):
Сама механика предлагаемого сервиса Cloud Application Hypervisor такова:
Пользователь загружает виртуальные машины в облако (поддерживаются машины, созданные на платформах ESXi/KVM/Xen).
С помощью специального GUI или средствами API описывает многомашинные приложения.
Публикует свои ВМ в одном или нескольких поддерживаемых облаках.
Получившаяся конфигурация сохраняется в виде снапшота в облаке Ravello (потом в случае чего ее можно восстановить или выгрузить) - это хранилище может быть создано как на базе облачных хранилищ Amazon S3, CloudFiles, так и на базе собственных блочных хранилищ или NFS-томов.
После этого каждый пользователь может получить многомашинную конфигурацию своего приложения по требованию.
Очевидный вопрос, который возникает первым: что с производительностью? Ну, во-первых, решение Cloud Application Hypervisor рассчитано на команды разработки и тестирования, для которых производительность не является критичным фактором.
А во-вторых, результаты тестов производительности таких вложенных матрешек показывают не такие уж и плохие результаты:
Для тех, кто заинтересовался технологией HVX, есть хорошее обзорное видео на рунглише:
Больше подробностей о продукте Cloud Application Hypervisor и технологии HVX можно узнать из этого документа.
Как мы уже писали, в VMware vSphere 5.1 появилось множество новых возможностей, в том числе улучшения, касающиеся аппаратной виртуализации (Hardware Virtualization), которая позволяет запускать вложенные гипервизоры (Hyper-V и ESXi) и виртуальные машины в них. Про то, как это работает в VMware vSphere 5.0, мы уже детально писали вот тут.
В интерфейсе веб-клиента VMware vSphere 5.1 поддержка аппаратной виртуализации включается в настройках виртуальной машины:
Настройки, которые были действительны для ESXi 5.0 - теперь не работают. Все теперь включается только через эту галочку.
Напомним, что в ESXi 5.0 можно было запускать вложенные (Nested) 32-битные и 64-битные виртуальные машины в гипервизорах, которые сами работают в виртуальных машинах. При этом требовалось только наличие поддержки аппаратной виртуализации в процессорах - Intel VT или AMD-V. Если же в вашем процессоре не было поддержки Intel EPT или AMD RVI, то вложенные 64-битные машины работали очень и очень медленно.
Поэтому VMware в vSphere 5.1 решила изменить концепцию, сделав так:
Если в процессоре есть поддержка Intel VT или AMD-V без EPT/RVI, то вы сможете устанавливать ESXi 5.1 в виртуальной машине, а также использовать вложенные 32-битные виртуальные машины. При этом 64-битные работать не будут, а опция "Hardware Virtualization" в vSphere Web Client будет загреена. Во время установки ESXi в виртуальной машине вы увидите сообщение "No Hardware Virtualization Support", которое можно просто игнорировать.
Если в процессоре есть поддержка аппаратной виртуализации и EPT/RVI, то можно использовать вложенные 64-битные ВМ.
Проверить свой хост-сервер на наличие поддержки технологий аппаратной виртуализации можно на соответствующих ресурсах вендоров (например, ark.intel.com). Есть и способ попроще - для этого надо использовать Managed Object Browser. Зайдите на хост ESXi по адресу:
Там будет такое свойство nestedHVSupported, которое будет установлено в True, если процессор поддерживает полный набор техник аппаратной виртуализации, который необходим для запуска вложенных 64-битных виртуальных машин на виртуальном ESXi 5.1.