- PVSM.RU - https://www.pvsm.ru -
Автор статьи — Михаил Комаров, MVP — Cloud and Datacenter Management
Добрый день! Цель сегодняшней статьи — рассказать о реализации вложенной виртуализации на платформе Hyper-V. Не секрет, что Hyper-V не поддерживал вложенную виртуализацию в отличие от других производителей. С выходом сборки Windows Server 2016 Technical Preview 4 (TP4), которая предназначена для желающих попробовать новый функционал, ситуация изменилась. Демонстрации вложенной виртуализации можно увидеть в записи доклада «Один доклад, один ноутбук, один датацентр [1]» мероприятия Microsoft TechDay 2015 [2].
Все демонстрации были проведены на HP Blade Gen 8, с базовым процессором Intel Xeon E5 2670 и объёмом оперативной памяти 32 GB.
Выбор этой системы был обусловлен желанием показать, насколько невысоким может быть порог вхождения в технологии виртуализации. В общем обычная система по сегодняшним меркам, когда у большинства дома стоят Intel Core i3 и выше, и объем оперативной памяти стартует от 8GB. Это значит, что Вы при необходимости сможете использовать вложенную виртуализацию.
Напомним классический вариант виртуализации. Если у нас есть физический хост с поддержкой технологии виртуализации на уровне чипсета и процессора и включенными в BIOS необходимыми опциями, то получаем следующую картину:
На нулевом уровне здесь физический хост, а на первом уровне — тонкий слой программного обеспечения, называемый гипервизором. Также на первом уровне находится раздел с корневой операционной системой и разделы для виртуальных машин. Проиллюстрируем с использованием утилиты CoreInfo от Марка Руссиновича поведение параметров процессора, связанных с виртуализацией. В таблице приведены первые несколько строк работы утилиты CoreInfo.
До включения роли Hyper-V в операционную систему передавался параметр процессора, связанный с виртуализацией. Это видно по двум строкам в левой части таблицы. Первый параметр — отсутствие гипервизора, второй – флаг, ответственный за виртуализацию. После включения роли гипервизора посмотрим снова на свойства процессора в корневом разделе и увидим следующее: гипервизор включен, и флаг, связанный с виртуализацией, не транслируется в раздел корневой операционной системы. Также обратим внимание на значение Microprocessor signature, которое в нашем случае 0000710 и связано с физическим процессором.
Перейдем ко вложенной виртуализации.
Из рисунка видно, что необходимо пробрасывать флаг, связанный с виртуализацией, в гостевую ОС. То есть, в общем случае, мы должны сообщить гипервизору на первом уровне, что необходимо включить поддержку виртуализации в разделяемом процессоре для виртуальной машины. Для этого необходимо запустить скрипт, который изменяет некоторые свойства виртуальной машины. Одно из основных свойств, которое изменяет скрипт, это поведение процессора виртуальной машины. // Set-VMProcessor -VMName $vmName -ExposeVirtualizationExtensions $true //. Про остальные параметры поговорим чуть позже. Проиллюстрируем поведение параметров процессора, связанных с виртуализацией, на виртуальной машине. В таблице выведены первые несколько строк работы утилиты CoreInfo.
Из таблицы видно, что виртуальная машина «понимает», что работает из-под гипервизора. Но до запуска скрипта флаг, связанный с виртуализацией, не передаётся. Далее отработал скрипт, который изменил свойства нашей виртуальной машины и ее процессора и флаг, связанный с виртуализацией, появился. Далее мы включили роль Hyper-V, после этого возник тонкий слой виртуализации и наша операционная система переместилась в свой корневой раздел, флаг виртуализации исчез. Также обратим внимание на значение Microprocessor signature, которое в нашем случае стало FFFFFFFF, что указывает на виртуализацию процессора. Далее мы создали виртуальную машину внутри виртуальной машины и для чистоты эксперимента запустили утилиту CoreInfo.
В общем-то, ожидаемый результат — присутствие гипервизора и отсутствие флага виртуализации на первом этапе и присутствие флага виртуализации на втором. В итоге имеем вот такое решение.
Теперь поговорим о некоторых ограничения данной технологии в TP4 для включенной вложенной виртуализации на первом уровне виртуальной машины:
Пошаговая инструкция выглядит так:
В итоге имеем решение, которое позволит делать многие вещи на одном физическом хосте. Например, кластер, собранный из Hyper-V хостов, что уменьшит количество используемого оборудования как дома, так и в учебных классах.
Windows Server Technical Preview [3]
Анонс поддержки вложенной виртуализации от продуктовой группы (англ.) [4]
Ссылка на утилиту CoreInfo [5]
Ссылка на скрипт на GitHub [6]
Спасибо за внимание,
Михаил Комаров
MVP — Cloud and Datacenter Management
Автор: Microsoft
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/it-infrastruktura/107114
Ссылки в тексте:
[1] Один доклад, один ноутбук, один датацентр: https://channel9.msdn.com/Events/Microsoft-TechDay/Microsoft-Tech-Day-2015/One-report-one-laptop-one-data-center
[2] Microsoft TechDay 2015: https://channel9.msdn.com/Events/Microsoft-TechDay/Microsoft-Tech-Day-2015
[3] Windows Server Technical Preview: https://technet.microsoft.com/ru-ru/evalcenter/dn781243.aspx
[4] Анонс поддержки вложенной виртуализации от продуктовой группы (англ.): http://blogs.technet.com/b/virtualization/archive/2015/10/13/windows-insider-preview-nested-virtualization.aspx
[5] Ссылка на утилиту CoreInfo: https://technet.microsoft.com/en-us/sysinternals/cc835722.aspx
[6] Ссылка на скрипт на GitHub: https://github.com/Microsoft/Virtualization-Documentation/blob/master/hyperv-tools/Nested/Enable-NestedVm.ps1
[7] Источник: http://habrahabr.ru/post/273791/
Нажмите здесь для печати.