Первые заметки о второй версии Hyper-V

Сегодня первый день Professional Developer Conference 2008 — главного мероприятия Microsoft, посвящённого объявлению новых технологий. И наконец в открытых источниках начали появляться сведенья о возможностях второй версии Hyper-V. Понятное дело, что список этот ни в коем случае не претендует на завершённость. Ведь во-первых, он всё ещё не был объявлен официально. А во-вторых, что важнее, на текущем этапе разработки проект ещё может претерпеть весьма значительные изменения. Поэтому воспринимайте всё, сказанное ниже, именно как список возможностей, а не чёткие обещания.

Для начала стоит обозначить предмет разговора. Это было известно и раньше, но сейчас самое время повторить. Вторая версия Hyper-V войдёт в состав следующего выпуска Windows Server, который будет называться Windows Server 2008 R2 и предоложительно выйдет в 2010 году.

Самая обсуждаемая и ожидаемая из новых функций — так называемая «Живая миграция» (Live Migration). Это возможность перемещать запущенные виртуальные машины между физическими серверами без сколько-нибудь заметной остановки — до одной секунды. Как водится, это проще сказать, чем сделать. Подобная функция требует пересмотра многих внутренних механизмов как службы виртуализации, так и самой ОС. Так, для ускорения процесса переноса виртуальной машины требуется, чтобы доступ к её файлам могли одновременно осуществлять два родительских сервера — исходный и целевой. А значит — неминуемы изменения в подсистеме хранения. Как известно, текущая версия NTFS требует, чтобы в каждый момент времени с томом работала только одна ОС. Именно на этом требовании основаны как предыдущие, так и сегодняшняя реализация кластера с переходом по отказу (Failover Cluster) . И Windows Server 2008 R2 принесёт новую реализацию файловой системы, которая пока что имеет рабочее название CFS — Clustered Shared Volume (общий том кластера). Она впервые будет позволять одновременную работу сразу нескольких узлов кластера с общим хранлищем.

Конечно же, Virtual Machine Manager не останется в стороне от нововведений и дополнит все функции возможностями автоматизации и централизованного управления. Так, станет возможно задавать сценарии Живой миграции с помощью политик. Причём предполагается, что это даже не потребует обновления текущей версии VMM. Необходимо будет только обновить сами узлы, выполняющие службу виртуализации.

Динамическое управление памятью (Dynamic Memory). Не секрет, что при использовании виртуализации, оперативная память физического сервера — это тот ресурс, который обычно заканчивается первым. Поэтому в моём личном списке возможностей, которых не хватает текущей версии Hyper-V, эта стоит на втором (и последнем) месте.

Речь идёт о том, чтобы изменять объём оперативной памяти, потребляемой виртуальной машиной, без её выключения. Это позволит гибко перераспределять память между запущенными виртуальными машинами — опять-таки, без вынежденных перерывов. Представьте себе, что вы выделяете некий общий объём (пул) физической оперативной памяти сразу целой группе виртуальных машин. А затем она автоматически добавляется и освобождается в зависимости от текущей потребности приложений, запущенных в тех или иных гостевых ОС. Это позволит значительно увеличить плотность загрузки физического сервера виртуальными машинами по сравнению с сегодняшней ситуацией, когда для каждой гостевой системы приходится резервировать полный объём оперативной памяти из расчёта на её пиковое использование. В реальности же мы понимаем, что пиковая нагрузка появляется в разных виртуальных машинах в разное время, а не одновременно. (Если это не так — то это повод задуматься о перераспределении виртуальных машин между физическими серверами. Кстати, с этим отлично справляется SC VMM).

Новые возможности управления памятью включают следующие настройки.

  • Startup RAM — объём оперативной памяти, который доступен виртуальной машине сразу при загрузке. Это то самое значение, которое вы можете задать в текущей версии Hyper-V. А вот дальше начинается интересное.
  • Minimum RAM — гарантированный объём оперативной памяти, всегда зарезервированный для использования этой виртуальной машиной. Логично, что он должен быть меньше значения предыдущего параметра — иначе в нём нет никакого смысла.
  • Maximum RAM — тот объём, которого виртуальная машина может достичь в случае необходимости нарастить оперативную память. Опять-таки логично, что значение этого параметра имеет смысл задавать больше, чем для первого.

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

  • Добавление памяти производится с помощью механизма «горячего добавления» (Hot Add Memory).
  • Освобожение памяти — с помощью так называемого «надувного» или вытесняющего драйвера (Balloon Driver). При необходимости он запрашивает у гостевой ОС некий объём оперативной памяти, тем самым блокируя его от обращения других служб и приложений внутри виртуальной машины. Однако сам драйвер не использует выделенную память, а освобождает её и делает доступной гипервизору — который может перераспределить её родительской системе или другой виртуальной машине.

Из описания этих механизмов становится понятно, что работать они будут только с избранными гостевыми ОС. То есть во-первых c теми, которые поддерживают горячее добавление оперативной памяти, и во-вторых c теми, в которых работают службы интеграции (Integration Services).

Поддержка логических процессоров (Logical Processors). Как мы помним, логический процессор — это подмножество физического процессора, доступное ОС как самостоятельная единица для распределения ресурсов. Каждый логический процессор является либо ядром, либо потоком физического процессора (при использовании функции Hyper-Threading). Первый выпуск Hyper-V поддерживает работу с 16 логическими процессорами, а после установки соответствующего обновления — с 24. Вторая версия Hyper-V сможет управлять 32 логическими процессорами родителького сервера.

Горячее добавление и отключение хранилищ. Виртуальные машины позволят добавлять и отключать диски без перезагрузки. Это касается как виртуальных дисков (VHD), так и прямого подключения (Pass-Through). Врочем, только тех, которые используют виртуальную шину SCSI, но не IDE — что в общем-то логично. Также не предполагается возможность оперативного добавления и отключения самих дисковых контроллеров. В результате мы сможем наращивать объёмы систем хранения и использовать более гибкие сценарии резервного копирования и восстановления после сбоев. И всё это — без лишних перерывов в предоставлении услуг.

Second Level Translation — SLAT (трансляция второго уровня). Звучит как термин из «Понедельника» Стругацких, но на самом деле речь идёт о более эффективном использовании ресурсов процессора. Здесь используются новые разработки производителей обрудования, которые у AMD называются Enhanced Page Tables (улучшеные таблицы страниц), а у Intel — Nested Page Tables (вложенные таблицы страниц). Это позволит ускорить обращения к памяти, а также существенно снизить накладные расходны на виртуализацию — то есть тот объём памяти, который потребляет непосредственно гипервизор под собственные нужды. Сегодня это примерно 5% от общего объёма физической памяти родительского сервера, а ожидается около 1%. Помимо этого предполагается, что увеличится ограничение на объём оперативной памяти для каждой виртуальной машины.

Загрузка с виртуального диска (Boot from VHD). Это одна из немногих функций, о которых было известно сильно заранее благодаря несанкционированной «утечке» информации. Она позволит использовать виртуальный диск для загрузки ОС на физическом оборудовании. Пожалуй, пока я своими глазами не увижу, как это работает — мне достаточно сложно представить себе принцип действия такой «матрёшки». Хотя чисто умозрительно здесь нет ничего запредельного. Просто необходимо, чтобы загрузчик ОС понимал формат файла виртуального диска и умел вовремя переключиться с работы в файловой системе «за его пределами» к работе внутри такого диска.

Сетевая подсистема

  • Улучшенная поддержка технологий «разгрузки» (offload) центрального процессора за счёт переноса типичных нагрузок на сетевые адаптеры — как с контролем состояния (statefull), так и без него (stateless). В первую очередь это должно сказаться на производительности подключений по протоколу iSCSI.
  • Поддержка одновременной работы нескольких сетевых каналов (NIC Teaming). Это именно то, о чём мы писали совсем недавно — сегодня такие конфигурации реализуются только сторонними средствами без какой-либо поддержки со стороны Microsoft.
  • Расширение инфраструктуры MPIO до поддержки дублируемых SAN.

Виртуализация ввода-вывода (Virtualized I/O) — технология, которая позволит нескольким виртуальным машинам с разными операционными системами использовать одно и то же устройство на шине PCI Express. Это позволит, например, создавать в виртуальных машинах собственные адаптеры для систем хранения (HBA), которые будут в действительности использовать физические адаптеры в родительской системе — по аналогии с тем, как сейчас реализована работа виртуальной сетевой подсистемы. В результате мы сможем управлять доступом к SAN и зонированием не на уровне родительско системы, а уже на уровне каждой виртуальной машины в отдельности.