В этой статье будет рассмотрено, как реализована поддержка виртуализации на "клиентских" операционных системах Windows. Виртуализация изначально появилась на Windows Server, где эта технология стала популярной, успешной и востребованной не только системными администраторами, но и другими профессионалами. Два часто используемых сценария для виртуализации - это разработчики программного обеспечения, которым приходится иметь дело с несколькими платформами для клиентов и серверов, а также специалисты IT, которые хотят управлять сетевой инфраструктурой наиболее рационально и безболезненно. Здесь приведен перевод статьи Mathew John [3], посвященной появлению Hyper-V на Windows 8.
Кем бы Вы ни были - разработчик ПО, администратор IT, или простой энтузиаст, интересующийся компьютерами и операционными системами - наверняка встречались со случаями, когда нужно иметь под рукой несколько операционных систем, которые традиционно были бы запущены на разных компьютерах. Но далеко не все имеют доступ к полноценной лаборатории и не у всех есть дома несколько компьютеров, так что виртуализация может сохранить Ваши время и ресурсы.
Сборку Windows 8 мы сделали с разрешенной Hyper-V, которая была ранее частью последних двух релизов Windows Server, так что она теперь может работать и на "клиентской" ОС. Если сказать коротко, то Hyper-V позволяет Вам выполнить более чем одну 32- или 64-разрядную операционную систему x86 одновременно на одном и том же компьютере. Вместо того, чтобы работать на реальном железе, операционные системы работают внутри виртуальной машины (VM).
Hyper-V позволяет разработчикам очень просто иметь в наличии сразу несколько рабочих сред для тестирования, с быстрым переключением между ними, при этом не нужно делать дополнительные траты на железо. Например, для WEB-разработчиков мы подготовили сразу несколько виртуальных машин Internet Explorer Application Compatibility VPC Image, которые содержат все старые версии IE. Администратор IT также получает при этом дополнительную выгоду, если может проводить свое обучение и на виртуальных Windows Server и Windows Client. Мы также знаем, что многие используют виртуализацию, когда пытаются проверить новые вещи без риска сделать нежелательные изменения на PC, который активно используете.
[Введение в Hyper-V]
Hyper-V требует для работы 64-битную систему, которая имеет технологию Second Level Address Translation (SLAT). SLAT является особой фичей, представленной в текущем поколении 64-разрядных процессоров от Intel и AMD. Вам также нужна 64-разрядная версия Windows 8, и как минимум 4 гигабайта физической памяти RAM. Hyper-V поддерживает создание внутри VM как 32-битных, так и 64-битных операционных систем.
Hyper-V предоставляет память, необходимую для динамического выделения и освобождения виртуальной машиной (Вы указываете минимум и максимум), и совместного задействования неиспользуемой памяти между всеми виртуальными машинами (VM). Вы можете запустить 3 или 4 VM на компьютере, у которого в наличии 4 гигабайта RAM, однако Вам нужно больше RAM для запуска 5 и более VM. Вы также можете создавать большие VM с 32 процессорами и 512 гигабайтами RAM.
Что касается работы пользователей с VM, то для этого Windows предоставляет 2 механизма: через консоль виртуальных машин (VM Console) и через подключение к серверу терминалов (RDC - Remote Desktop Connection, подключение терминальным клиентом по протоколу RDP).
Оснастка VM Console (также известная как VMConnect) является консольным отображением VM. Она предоставляет один монитор для VM с разрешением экрана до 1600x1200 в 32-битном цвете. Эта консоль предоставляет Вам вид даже на процесс загрузки VM.
Гораздо больше возможностей предоставляет подключение к VM через Remote Desktop Connection (RDC). Вместе с RDC получает многие достоинства, которые есть у физического PC, на котором работает клиент RDP. Например, если у Вас несколько мониторов, то VM может показывать свою графику на всех этих мониторах. И аналогично, если у Вас есть в наличии мультитач-интерфейс на PC, то VM может использовать и этот интерфейс, предоставляя Вам все его удобства. VM также имеет все мультимедийные возможности, которые предоставляет физическая система, так что можно задействовать динамики и микрофон. Root OS, т. е. Windows, на которая управляет VM, может также предоставлять в общее пользование буфер обмена и общие папки для других VM. И наконец, с помощью RDC для VM можно задействовать устройства USB, как будто они подключены не к Root OS, а прямо к VM.
Для устройств хранения данных Вы можете добавить несколько жестких дисков к контроллерам IDE или SCSI, доступных в VM. Вы можете использовать виртуальные жесткие диски (Virtual Hard Disks, .VHD или .VHDX) или физические диски, которые Вы можете передать виртуальной машине. VHD могут также размещаться на отдаленном (подключенном через сеть) сервере, что упрощает поддержку и содержание таких предварительно созданных VHD внутри команды IT.
У Hyper-V есть фича "Live Storage Move" (можно попытаться перевести как Возможность Перемещения Систем Хранения), помогающая Вашей VM быть довольно независимой от базовых систем хранения данных. С этой возможностью Вы можете переместить свое хранилище с одного локального диска на другой, даже на флешку USB, или на сетевой диск, и при этом не нужно останавливать VM. Мне кажется, что эта функция довольно удобна для быстрого развертывания инфраструктуры IT: когда мне срочно нужна VM, я запускаю одну VM из библиотеки VM, которая находится на общем сетевом файловом хранилище, и затем переношу систему хранения данных VM на локальный диск.
Другая замечательная фича Hyper-V - возможность создания снимков (snapshots) состояния работающей VM. В снапшоте сохранено все, что происходит сейчас в виртуальной машине, что позволяет Вам вернуться обратно в предыдущую точку времени жизни VM, и это действительно мощный инструмент в отладке сложных проблем. Одновременно виртуальные машины Hyper-V обладают всеми преимуществами управляемости Windows. Система Windows Update может патчить компоненты Hyper-V, так что не требуется устанавливать какие-то дополнительные процессы для обслуживания. И Windows имеет все унаследованные возможности с установленной системой Hyper-V.
Говоря все это, не нужно забывать, что использование виртуализации имеет свои ограничения. Функции или приложения, которые зависят от определенной аппаратуры, не будут хорошо работать в VM. Например, технологии Windows BitLocker и Measured Boot, которые полагаются на модуль TPM (Trusted Platform Module, модуль доверяемой платформы), могут неправильно работать в VM, и игры и приложения, которые требуют вычислительной обработки GPU (графический ускоритель), не смогут хорошо работать без правильной реакции программного обеспечения или его переделки. Кроме того, приложения, полагающиеся на субтаймеры 10 мс, т. е. чувствительные к задержке и требующие высокой точности отсчета времени (например, программы, генерирующие и смешивающие живые звуки) и т. д. могут иметь проблемы при работе внутри VM. Root OS также работает поверх слоя виртуализации Hyper-V, но особенность в том, что у неё есть доступ ко всей аппаратуре. По этой причине приложения со специальными требованиями к аппаратуре продолжат беспрепятственно работать в root OS, но чувствительные к задержкам, высокоточные приложения все еще будут иметь проблемы при запуске на root OS.
Напомню, что для использования виртуальных машин (VM) Вам понадобятся лицензии для операционных систем и программ, которые Вы запускаете на VM.
[Поддержка обмена данными VM через беспроводные сетевые адаптеры]
Создание внешнего сетевого коммутатора делается так же просто, как выбор физического сетевого адаптера (NIC) из выпадающего списка. Это уже хорошо работало на серверных системах Hyper-V. Но чтобы получить подобные результаты в Windows 8, у него должен быть настроенный и работающий беспроводный NIC. Здесь есть некоторая проблема.
Виртуальный коммутатор сети в Hyper-V работает на сетевом слое 2, т. е. он переключает сетевые пакеты (определяет маршрут, по которому пойдет пакет Ethernet) на основе MAC-адресов, которые однозначно идентифицируют каждого (физического и виртуального) участника обмена данных в сети. MAC-адрес машин получателей и источников отправляется в каждом пакете Ethernet уровня 2, и сетевой коммутатор использует эти данные, чтобы определить, куда именно нужно послать пакет. Внешний виртуальный сетевой коммутатор соединен с внешним миром через физическую сетевой адаптер (NIC). Пакеты Ethernet от VM, предназначенные для обмена данными с машиной во внешнем мире, будут отосланы через этот физический NIC. Это означает, что физический NIC должен быть в состоянии переносить трафик от всех VM, соединенных с этим виртуальным коммутатором. Это подразумевает, что пакеты, проходящие через физический NIC, будут содержать несколько MAC-адресов (по одному адресу MAC каждого виртуального NIC для VM). Это поддерживается на проводных физических NIC (путем ввода их в так называемый "неразборчивый" режим, promiscuous mode). Схема взаимодействия через виртуальный коммутатор в случае использования обычного проводного NIC показана на рис. 1.
Рис. 1. Обмен сетевыми данными между VM и внешним хостом (Machine 2) при использовании традиционного проводного соединения (через wired Ethernet NIC).
Такой режим обмена данными не поддерживается на беспроводных NIC, поскольку беспроводный канал, установленный между WiFi NIC и точкой доступа, позволяет пропускать Ethernet пакеты только с MAC-адресом беспроводного физического NIC WiFi, без вариантов. Другими словами, Hyper-V не может использовать WiFi NIC-и для внешнего коммутатора, если мы продолжаем использовать текущую архитектуру виртуального коммутатора.
Чтобы обойти это ограничение, мы использовали решение Microsoft Bridging (создание сетевого моста), в котором реализовано проксирование ARP (для IPv4) и проксирование Neighbor Discovery (для IPv6) чтобы заменить MAC-адреса виртуальных NIC-ов с MAC-адресами адаптеров WiFi для исходящих пакетов. Мост сохраняет внутри себя привязку между IP-адресами виртуальных NIC и их адресами, чтобы гарантировать, что пакеты из внешнего мира будут отправлены тому виртуальному NIC, которому предназначены.
Hyper-V интегрирует в себя мост как часть создания виртуального коммутатора. Таким образом, когда Вы создаете внешний виртуальный коммутатор, используя адаптер WiFi, проделайте следующее:
• Создайте адаптер сетевого моста, подключенного к NIC WiFi, • Создайте внешний виртуальный коммутатор. • Сделайте привязку виртуального коммутатора, чтобы он использовал мост вместо работы с NIC WiFi напрямую.
С такой моделью коммутация пакетов Ethernet по уровню 2 будет происходить в виртуальном коммутаторе, а трансляция MAC-адресов будет происходить в мосте. Для конечного пользователя, который создает внешнюю сеть, рабочий процесс её создания тот же самый - независимо от того, выбираете ли Вы проводной или беспроводный NIC. Организация сети в случае подключения VM через беспроводный NIC показана на рис. 2.
В заключение: с появлением Hyper-V не только на серверных платформах Windows, но и на клиентских машинах с Windows 8, мы можем обеспечить технологию виртуализации, специально разработанную для мастабируемости, безопасности, надежности и потребностей эффективности большинства центров обработки и хранения данных. С использованием Hyper-V разработчики и специалисты IT теперь могут создать более эффективную по удобству и стоимости инфраструктуру, используемую для тестов и работы с несколькими виртуальными машинами.
[Hyper-V на Windows 7]
На Windows 7 Вы можете установить только лишь оснастку для подключения к серверу Hyper-V, что дает возможность управлять удаленно виртуальными машинами, работающими на сервере Hyper-V (т. е. это будет Root OS). Устанавливается оснастка (Диспетчер Hyper-V) следующим образом:
1. Скачайте [2] (Windows6.1-KB958830-x64-RefreshPkg.msu), установите. 2. Пуск -> Панель управления -> Программы и компоненты -> Включение или отключение компонентов Windows. 3. Компоненты Windows -> Средства удаленного администрирования сервера -> Средства администрирования ролей -> поставить галочку на Средства Hyper-V -> OK. 4. Управление для Hyper-V теперь можно найти через Панель управления -> Администрирование -> Диспетчер Hyper-V.
Диспетчер Hyper-V не дает создать виртуальные машины, в оснастке диспетчера появляется сообщение "Программное обеспечение hyper-v не установлено на компьютере localhost" ("Hyper-V has not been installed on computer ‘localhost’").
Windows 8 (если она не урезанная, для одного языка) поставляется с поддержкой технологии Hyper-V, которая была доступна только на серверных системах. На Windows 7 поддержку Hyper-V также можно установить закачкой обновления [1]. Однако теоретическая поддержка Hyper-V со стороны операционной системы еще не означает, что Hyper-V будет работать на любом железе. Физический процессор и материнская плата должны иметь также некоторые специальные возможности. К счастью, в настоящий момент большинство процессоров имеют такие возможности. Если у Вас Windows 8 64-bit (ни в коем случае не Windows 8.1 для одного языка), процессор аппаратно поддерживает Hyper-V, включена поддержка Hyper-V в BIOS материнской платы, то платформа Hyper-V позволит нормально создавать виртуальные машины.
Обычно компьютер должен работать под управлением 64-битной системы с разрешенной на процессоре технологией VT (Virtualization Technology) и SLAT (Second Level Address Translation, трансляция адреса второго уровня). Также должно быть установлено минимум 4 гигабайта физической памяти. Платформа (сервер) Hyper-V, позволяющий создавать виртуальные машины, будет работать только на Windows 8 64-bit (на Windows 7 можно установить только оснастку для подключения к серверу Hyper-V). Проверьте, включена ли в BIOS Вашей системы поддержка технологии аппаратной виртуализации.
Для того, чтобы проверить, поддерживает ли Ваша система Hyper-V, используйте утилиту coreinfo [4]. Для этого откройте командную строку с правами администратора и выполните команду coreinfo.exe -v:
C:\Windows\System32>coreinfo.exe -v
Coreinfo v3.31 - Dump information on system CPU and memory topology
Copyright (C) 2008-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
AMD FX(tm)-6300 Six-Core Processor
AMD64 Family 21 Model 2 Stepping 0, AuthenticAMD
HYPERVISOR - Hypervisor is present
SVM * Supports AMD hardware-assisted virtualization
NP * Supports AMD nested page tables (SLAT)
Наличие строки EPT со звездочкой для процессора Intel и NP для процессора AMD означает, что процессор поддерживает технологию SLAT. В этом примере показано отсутствие поддержки гипервизора (напротив HYPERVISOR стоит черточка). Здесь причина сообщения "Программное обеспечение hyper-v не установлено ..." в том, что версия операционной системы Windows 7 Максимальная 64-бит (можно только управлять виртуальными машинами на другом сервере, но создавать их локально нельзя):
C:\Windows\System32>systeminfo.exe
Имя узла: MYWORKSTATION
Название ОС: Microsoft Windows 7 Максимальная
Версия ОС: 6.1.7601 Service Pack 1 сборка 7601
Изготовитель ОС: Microsoft Corporation
Параметры ОС: Изолированная рабочая станция
Сборка ОС: Multiprocessor Free
Зарегистрированный владелец: User
Зарегистрированная организация:
Код продукта: XXXXX-OEM-YYYYYYY-ZZZZZ
Дата установки: 03.09.2014, 15:03:15
Время загрузки системы: 05.09.2014, 13:13:12
Изготовитель системы: To be filled by O.E.M.
Модель системы: To be filled by O.E.M.
Тип системы: x64-based PC
Процессор(ы): Число процессоров - 1.
[01]: AMD64 Family 21 Model 2 Stepping 0 Authe
nticAMD ~3500 МГц
Версия BIOS: American Megatrends Inc. 2501, 09.04.2014
Папка Windows: C:\Windows
Системная папка: C:\Windows\system32
Устройство загрузки: \Device\HarddiskVolume1
Язык системы: ru;Русский
Язык ввода: en-us;Английский (США)
Часовой пояс: (UTC+04:00) Ереван
Полный объем физической памяти: 8 094 МБ
Доступная физическая память: 5 372 МБ
Виртуальная память: Макс. размер: 20 231 МБ
Виртуальная память: Доступна: 17 112 МБ
Виртуальная память: Используется: 3 119 МБ
Расположение файла подкачки: C:\pagefile.sys
Домен: WORKGROUP
Сервер входа в сеть: \\MYWORKSTATION
Исправление(я): Число установленных исправлений - 4.
[01]: KB958830
[02]: KB2505454
[03]: KB958488
[04]: KB976902
Сетевые адаптеры: Число сетевых адаптеров - 1.
[01]: Realtek PCIe GBE Family Controller
Имя подключения: Подключение по локальной сети
DHCP включен: Нет
IP-адрес
[01]: 192.168.0.121
[02]: fe80::4031:4080:3c2e:4b3b
Могут быть также и другие причины для появления сообщения о невозможности запуска Hyper-V:
• У Вас операционная система Windows 8 32-бит. • У Вас Windows 8 64-бит, но процессор или материнская плата не поддерживают Hyper-V (может быть, это выключено в BIOS?). • У Вас Windows 8 64-бит, железо поддерживают Hyper-V, но со стороны операционной системы поддержка не разрешена (проверьте Пуск -> Панель управления -> Программы и компоненты -> Включение или отключение компонентов Windows -> в разделе Hyper-V должны стоять разрешающие галочки).
[Ссылки]
1. Установка менеджера Hyper-V на Windows 7, 8 site:free4blog.ru. 2. Средства удаленного администрирования сервера для Windows 7 с пакетом обновления 1 (SP1) site:microsoft.com. 3. Bringing Hyper-V to Windows 8 site:blogs.msdn.com. 4. Coreinfo: получение подробной информации о Windows. 5. Hyper-V: List of SLAT-Capable CPUs for Hosts site:social.technet.microsoft.com.