Сегодня я хотел бы подробнее остановиться на одной из новых возможностей Hyper-V в Windows Server 2012 R2, упомянутой мною в обзорном посте, а именно, обсудить второе поколение виртуальных машин (ВМ). Тема становится особенно актуальной с доступностью RTM Windows Server 2012 R2 для подписчиков TechNet и MSDN и скорым выпуском финальной версии System Center 2012 R2
Почему появилось второе поколение ВМ?
С выходом Windows Server 2012 R2 в Hyper-V появилось возможность создавать ВМ двух разных типов или двух разных поколений (Generation 1 и Generation 2). ВМ первого поколения представляют собой виртуальные машины, хорошо известные по предыдущим версиям Hyper-V. Все, что вы привыкли видеть в настройках ВМ, плюс ряд новых настроек, вы увидите в машинах первого поколения. Они никуда не делись, вы можете и дальше спокойно их использовать.
Но помимо этого вы можете теперь создавать ВМ второго поколения. Это поколение отражает изменения, которые произошли и продолжают происходить как в архитектуре ОС, так и в аппаратном обеспечении современных компьютеров. На рубеже Windows 2000, Windows XP, Windows Server 2003 операционные системы проектировались без учета технологий виртуализации, тогда еще только набиравших обороты. Чтобы нормально запустить такие ОС внутри виртуальной машины необходимо было создать для них иллюзию запуска на физическом компьютере. Как следствие, приходилось эмулировать различное оборудование, как то: BIOS, контроллер прерываний, IDE-контроллер, стандартные порты ввода-вывода и пр. Вы легко увидите перечень эмулируемых устройств, если загляните в Device Manager на ВМ первого поколения.
Эмуляция, с одной стороны, приводит к дополнительным накладным расходам, прежде всего, к лишним тактам процессора, с другой стороны, каждое эмулируемой устройство – дополнительный довольно сложный код, потенциально расширяющий поверхность для атак.
С течением времени ОС стали проектироваться с учетом того, что система может, или даже скорее всего будет работать в виртуальной среде. Такая ОС «знает», что запускается внутри ВМ и, как на этапе загрузки, так и в ходе своей работы, опирается на ресурсы, предоставляемые родительским разделом (хостовой ОС). Иными словами, ОС уже при старте общается с гипервизором через шину VMBus, а не рассчитывает обнаружить контроллер прерываний или чипсет определенного типа. Следовательно, для таких ОС можно отказаться от унаследованных эмулируемых устройств и повысить производительность ВМ. Действительно, в Deviсe Manager ВМ второго поколения картина будет иной.
В чем преимущества ВМ второго поколения?
Отказ от эмуляции устаревших устройств изменяет «начинку» ВМ второго поколения. В свойствах таких ВМ вы увидите примерно следующее:
Отсюда можно выделить следующие преимущества ВМ второго поколения:
- Безопасная загрузка (Secure Boot) ВМ. Вместо стандартного BIOS используется firmware на основе спецификации UEFI и как часть этой спецификации поддерживается безопасная загрузка ВМ, что предотвращает возможность поражения ОС при запуске. Secure Boot может быть отключена.
- Загрузка с виртуального SCSI-диска или SCSI-DVD. Виртуальный IDE-контроллер вообще отсутствует в машинах второго поколения.
- «Горячее» изменение размера загрузочного раздела. «Горячее» добавление, а также изменение размера (в том числе, уменьшение) виртуальных SCSI-дисков возможно и для ВМ первого поколения. Но поскольку именно ВМ второго поколения умеют грузиться со SCSI, то для них вы можете изменить размер в том числе загрузочного раздела «на лету».
- Загрузка по сети с использованием синтетического сетевого адаптера проходит быстрее, чем при использовании Legacy Network Adapter в ВМ первого поколения.
Таблица ниже подытоживает «аппаратные» изменения в ВМ второго поколения.
Legacy Devices Removed | Replacement Devices | Enhancements |
---|---|---|
IDE Controller | Virtual SCSI Controller | Boot from VHDx (64TB max size, online resize) |
IDE CD-ROM | Virtual SCSI CD-ROM | Hot add/remove |
Legacy BIOS | UEFI firmware | Secure Boot |
Legacy NIC | Synthetic NIC | Network boot with IPv4 & IPv6 |
Floppy & DMA Controller | No floppy support | |
UART (COM Ports) | Optional UART for debugging | Faster and more reliable |
i8042 keyboard controller | Software based input | No emulation – reduced resources |
PS/2 keyboard | Software based keyboard | No emulation – reduced resources |
PS/2 mouse | Software based mouse | No emulation – reduced resources |
S3 video | Software based video | No emulation – reduced resources |
PCI Bus | VMBus | |
Programmable Interrupt Controller (PIC) | No longer required | |
Programmable Interrupt Timer (PIT) | No longer required | |
Super I/O device | No longer required |
Возникает резонный вопрос, отличается ли скорость работы ВМ первого и второго поколений? Когда ОС загрузилась, какую-то разницу в скорости работы вы, скорее всего, не заметите. Интеграционные компоненты внутри гостевой ОС позволяют работать ВМ максимально эффективно. Но есть две ситуации, в которых разница может быть очень ощутимой – это установка гостевой ОС и загрузка ВМ. Именно на этих этапах эмуляция оборудования сказывается весьма существенно.
В качестве иллюстрации я провел следующий эксперимент: создал две ВМ, первого и второго поколения соответственно, обеим ВМ выделил одинаковое количество оперативной памяти и виртуальных процессоров и одновременно запустил установку Windows Server 2012 R2 внутри созданных ВМ с одного и того же ISO-образа. Вот так выглядела картина в начальной фазе установки (ВМ второго поколения внизу):
И вот такую разницу можно было наблюдать позже:
Таким образом, при развертывании ВМ, а также при старте ВМ, что, например, особенно важно в сценариях VDI, разница в производительности ВМ второго поколения может достигать 50% и более.
Особенности использования ВМ второго поколения
Необходимо помнить несколько принципиальных моментов, относящихся к эксплуатации ВМ второго поколения.
В качестве гостевых ОС в ВМ второго поколения могут использоваться только:
- Windows Server 2012
- Windows Server 2012 R2
- 64-битная версия Windows 8
- 64-битная версия Windows 8.1
Это связано с тем, что именно эти версии ОС поддерживают спецификацию UEFI 2.3.1, в которой, в частности, реализована технология Secure Boot.
Вы можете создать ВМ второго поколения в консоли Hyper-V,
либо с помощью командлета PowerShell New-VM, указав ключ –Generation 2.
При этом надо иметь в виду, что поколение указывается только на этапе создания ВМ. В дальнейшем конвертировать ВМ из одного поколения в другое невозможно как раз в силу того, что в одном случае используется BIOS, в другом – UEFI.
Последний аспект, который хотелось бы отметить, связан с управлением. Управление хостами с Windows Server 2012 R2 возможно с помощью System Center 2012 R2 Virtual Machine Manager. В доступной сейчас preview-версии System Center 2012 R2 поддержка второго поколения ВМ отсутствует. Но в RTM-версии System Center 2012 R2 (а она уже не за горами) эта поддержка будет добавлена.
Итак, новое поколение ВМ в Windows Server 2012 R2 лишено устаревших эмулируемых устройств, поддерживает ряд новых возможностей и обеспечивает прирост производительности, особенно на этапах установки и загрузки гостевых ОС. Применение машин второго поколения сейчас сужает перечень поддерживаемых гостевых ОС, однако для остальных систем можно по-прежнему применять ВМ первого поколения, которые прекрасно сосуществуют с ВМ второго поколения на одном хосте виртуализации.
Дополнительную информацию о новых технологиях Windows Server 2012 R2 вы сможете найти на портале MVA в курсе “Jump Start: Все о Windows Server 2012 R2”.
Надеюсь, материал был полезен!
Автор: ashapo