Вкладена віртуалізація Hyper-V — перший крок

Автор статті — Михайло Комаров, MVP — Cloud and Datacenter Management
Добрий день! Мета сьогоднішньої статті — розповісти про реалізацію вкладеної віртуалізації на платформі Hyper-V. Не секрет, що Hyper-V не підтримував вкладену віртуалізацію на відміну від інших виробників. З виходом збірки Windows Server 2016 Technical Preview 4 (TP4), яка призначена для охочих спробувати новий функціонал, ситуація змінилася. Демонстрації вкладеної віртуалізації можна побачити в запису доповіді «Один доповідь, один ноутбук, один датацентр» заходи Microsoft TechDay 2015.


Всі демонстрації були проведені на 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 для включеної вкладеної віртуалізації на першому рівні віртуальної машини:
  • Підтримка реалізована поки тільки для процесорів Intel з підтримкою EPT (SLAT).
  • Динамічна пам'ять повинна бути відключена.
  • Зміна розміру пам'яті призводить до помилок.
  • Знімки працює на віртуальній машині не допустимі.
  • Live migration призводить до помилок.
  • Збереження, відновлення може призвести до помилок.
  • Необхідно включити MAC spoofing у властивостях мережевого адаптера.
Покрокова інструкція виглядає так:
  1. Встановлюємо збірку на фізичний хост, з включеними параметрами віртуалізації.
  2. Створюємо віртуальну машину, в якій будемо включати віртуалізацію. Бажано виділити цій машині не менш 4GB оперативної пам'яті, інакше потрібно підправити скрипт. Віртуальна машина має бути вимкнена!
  3. Запускаємо скрипт на фізичному хості, вказуючи ім'я раніше створеної віртуальної машини. Посилання на скрипт знаходиться в кінці статті.
  4. Включаємо роль Hyper-V у віртуальній машині.
  5. Створюємо нову віртуальну машину, використовуючи Hyper-V manager в раніше створеної віртуальної машини.
У підсумку маємо рішення, яке дозволить робити багато речей на одному фізичному хості. Наприклад, кластер, зібраний з Hyper-V хостів, що зменшить кількість використовуваного устаткування як вдома, так і в навчальних класах.

Ресурси
<a href=«technet.microsoft.com/ru-ru/evalcenter/dn781243.aspx>Windows Server Technical Preview
Анонс підтримки вкладеної віртуалізації від продуктової групи (англ.)
Посилання на утиліту CoreInfo
Посилання на скрипт на GitHub

Спасибі за увагу,
Михайло Комаров
MVP — Cloud and Datacenter Management

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.