Заметки о Windows и других программных продуктах Microsoft...

Виртуальные машины второго поколения в Windows Server 2012 R2

Виртуальные машины второго поколения в Windows Server 2012 R2

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

Начнем с теории.

В Hyper-V есть два вида виртуальных устройств:

1) Эмулируемые, или устаревшие (legacy) — виртуальные устройства, эмулирующие определенные физические устройства, такие как BIOS, системные шины ISA и PCI, IDE-контроллер, Ethernet адаптер и т.п.;
2) Синтетические — полностью виртуальные устройства, не эмулирующие реальные железки. Синтетические устройства могут использоваться только при установленных в гостевой системе компонентах интеграции, являющихся (в числе прочего) и драйверами для этих устройств.

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

Эмуляция требует определенных накладных расходов, снижая производительность и усложняя работу гипервизора. Однако далеко не все операционные системы поддерживают технологии виртуализации, и для того, чтобы запустить их внутри виртуальных машин требуется пойти на обман, создав видимость запуска на реальном физическом оборудовании. Именно поэтому в виртуальных машинах первого поколения частично эмулируется некая абстрактная конфигурация оборудования времен Pentium II — биос AMI, чипсет Intel 440BX, видеокарта S3 и т.п. Убедиться в этом можно, открыв диспетчер устройств в виртуальной машине 1 поколения и отсортировав устройства по подключению.

список устройств ВМ первого поколения

 

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

Именно для таких ОС и предназначено второе поколение виртуальных машин в Hyper-V. Во втором поколении ВМ разработчики полностью отказались от использования эмулированных устройств, оставив только синтетические устройства, подключенные к виртуальной шине VMBus. И если мы заглянем в Device Manager в машине 2 поколения, то картина будет совсем другой.

список устройств ВМ второго поколения

 

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

Вот окно настроек ВМ первого поколения.

настройки ВМ 1 поколения

 

А это настройки ВМ второго поколения.

настройки ВМ 2 поколения

 

Как видите, кое что изменилось:

• Вместо стандартного BIOS используется firmware на основе Unified Extensible Firmware Interface (UEFI). Это дает возможность использовать для ВМ технологию безопасной загрузки (Secure Boot);
• Второе поколение ВМ не имеет legacy устройств и для загрузки по сети может использовать стандартный сетевой адаптер, тогда как в первом поколении сетевая загрузка возможна только с использованием legacy network adapter;
• Исключен IDE-контроллер, вместо него остался SCSI-контроллер с возможностью загрузки;
• Убраны устаревшие устройства, такие как floppy-дисковод и COM-порты.

Все это выглядит достаточно убедительно, но что мы получим в результате? Приведу основные плюсы при использовании 2 поколения ВМ.

Скорость развертывания

Отказ от эмулируемых устройств положительно сказывается на скорости установки операционной системы. При равных условиях развертывание виртуальных машин второго поколения происходит в среднем на 50% быстрее, чем первого.

Скорость загрузки

Отсутствие необходимости эмулировать устройства при запуске влияет и на скорость загрузки операционной системы, на одном и том же оборудовании ВМ второго поколения стартуют примерно в 1,5 — 2 раза быстрее. Стоит отметить, что после загрузки в дело вступают компоненты интеграции, позволяющие ВМ работать более эффективно, поэтому на работающей системе разницы в производительности практически нет.

Загрузка по сети

Загрузка по сети (PXE) с использованием стандартного сетевого адаптера проходит быстрее, чем при использовании legacy network adapter в ВМ первого поколения.

Возможность загрузки со SCSI

Второе поколение ВМ может загружаться с виртуального жесткого диска или DVD, подключенного к SCSI контроллеру, тогда как первое поколение в качестве загрузочного диска могло использовать только IDE диски.

Изменение размера загрузочного диска

Еще одна особенность ВМ второго поколения, напрямую связаная с предыдущей — возможность изменения размера загрузочного диска на лету. Так как в первом поколении загрузка ВМ возможна только с IDE-диска, а интерфейс IDE в принципе не поддерживает горячую замену, то для изменения размера системного диска необходимо было останавливать ВМ. Виртуалки второго поколения умеют загружаться со SCSI, что дает возможность увеличивать\уменьшать размер загрузочного диска без остановки машины.

Создание виртуальной машины второго поколения

Для получения виртуальной машины второго поколения надо при ее создании выбрать нужный пункт в консоли Hyper-V Manager, либо воспользоваться командлетом New-VM с параметром -Generation 2. При этом надо учесть, что поколение виртуальной машины выбирается только при ее создании, изменить этот выбор для существующей машины и сконвертировать ВМ одного поколения в другое невозможно.

выбор поколения при создании ВМ

 

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

• Windows Server 2012 и Windows Server 2012 R2;
• Windows 8 или Windows 8.1, только 64-битные версии.

В качестве же хостовой системы можно использовать Windows Server 2012 R2, а также 64-битные версии Windows 8.1 Pro или Enterprise.

Заключение

Появление второго поколения виртуальных машин в Hyper-V, на мой взгляд, является вполне логичным шагом. Новое поколение ВМ избавлено от устаревших эмулируемых устройств, в замен которых используются полностью синтетические виртуальные устройства. Это обеспечивает прирост производительности на этапе развертывания и запуска машины, а также предоставляет некоторые дополнительные возможности.

Из недостатков же разве что крайне ограниченный (на данный момент) круг поддерживаемых гостевых ОС. Впрочем, первое поколение ВМ по прежнему доступно для всех остальных систем, а мы при создании ВМ можем свободно выбирать между ними.  К тому же оба поколения мирно уживаются на одном сервере и без проблем работают друг с другом.

 
 
Комментарии

Спасибо за подробное объяснение.
После первой перезагрузки ВМ-системы на гипервизоре 2012, выбрав перед установкой в качестве загрузочного SCSI-диск, сначала не понял появления сообщения Boot failure. А не узрев в списке загрузочных устройств оного, стало ясно почему.