Обеспечить высокую доступность ВМ можно разместив ее на физическом (хостовом) кластере, в данном контексте – кластере Hyper-V. Выход из строя физического узла кластера, на котором была запущена ВМ, приводит к автоматическому восстановлению ВМ на другом узле кластера. Эта процедура отработки отказа может привести пусть и к кратковременной, но потере связи с ВМ и приложением внутри нее.
Другой метод повышения доступности – объединение в Failover Cluster двух или более ВМ, то есть создание гостевого кластера в том смысле, что кластер создается на базе гостевых ОС. В этом случае мы уже говорим о высокой доступности не ВМ как таковых, а приложения (или приложений) внутри гостевого кластера.
Разумеется, для большей надежности можно сочетать хостовую и гостевую кластеризацию.
Гостевая кластеризация, впрочем как и хостовая, предполагает наличие некоторого общего хранилища. Применительно к виртуальным машинам таким хранилищем до выхода Windows Server 2012 мог выступать iSCSI-storage.

Увеличить
В Windows Server 2012 благодаря Virtual Fibre Channel появилась возможность подключать ВМ через HBA-адаптер хоста непосредственно к FC-storage.

Увеличить
Однако в любом случае для построения гостевого кластера необходимо было предоставить ВМ прямой доступ к хранилищу. Во многих сценариях, например для хостинг-провайдеров, такой вариант является очень неудобным. Общие VHDX-файлы как раз и позволяют эту проблему решить, поскольку абстрагируют ВМ от особенностей реализации СХД. Для создания гостевого кластера к виртуальным машинам подключается нужное количество Shared VHDX, которые и представляют собой общее кластерное хранилище. А где физически, на каком конкретно СХД и LUN-е эти файлы располагаются – это уже дело провайдера.

Увеличить
Поддерживаемые конфигурации и настройка Shared VHDX
С точки зрения реализации описанного подхода можно выделить две основные конфигурации использования Shared VHDX. В первой конфигурации общие VHDX-файлы располагаются на CSV-томе физического кластера. CSV-том, в свою очередь, может быть реализован на любом поддерживаемом службой кластеризации Windows Server блочном хранилище (Fibre Channel, iSCSI, Shared SAS).
Во второй конфигурации VHDX-файлы располагаются в общей папке файлового кластера Scale-Out File Server. Последний, замечу, также предполагает наличие CSV-тома. Как видно, и та, и другая конфигурация в итоге приводят к сочетанию хостовой и гостевой кластеризации. Хостовая кластеризация повышает доступность общих VHDX, создаваемый затем поверх гостевой кластер обеспечивает высокую доступность сервисов и приложений внутри ВМ.

Увеличить
Для настройки Shared VHDX прежде всего, конечно, необходимо создать один или несколько VHDX-файлов и расположить их, используя одну из перечисленных выше конфигураций. Затем подключить Shared VHDX можно в консоли Hyper-V, командлетами PowerShell или с помощью сервисного шаблона (service template) в System Center 2012 R2 Virtual Machine Manager.
В консоли Hyper-V это делается путем добавления нового SCSI-диска: в свойствах ВМ выбираете SCSI Controller, затем Hard Drive, нажимаете кнопку Add, указываете путь к VHDX-файлу, после чего выбираете Advanced Features и помечаете соответствующий чекбокс.

Увеличить
Повторяете процедуру для всех ВМ, которые планируется объединить в кластер.
Тоже самое можно сделать в PowerShell следующими командлетами:
New-VHD -Path C:\ClusterStorage\Volume1\Shared.VHDX -Fixed -SizeBytes 30GB
Add-VMHardDiskDrive -VMName Node1 -Path C:\ClusterStorage\Volume1\Shared.VHDX -ShareVirtualDisk
Add-VMHardDiskDrive -VMName Node2 -Path C:\ClusterStorage\Volume1\Shared.VHDX –ShareVirtualDisk
В VMM 2012 R2 в сервисном шаблоне в разделе Hardware Configuration необходимо также добавить SCSI-диск, указать путь к VHDX-файлу и пометить чекбокс Share the disk across the service tier. При развертывании ВМ на основе такого шаблона VMM подключит указанный файл в качестве Shared VHDX.

Увеличить
Какой бы вариант вы не выбрали, внутри ВМ подключенный VHDX будет выглядеть как обычный SAS-диск.

Увеличить
Требования к Shared VHDX
Необходимо помнить следующие требования к Shared VHDX:
- Файлы должны быть обязательно VHDX, формат VHD для shared-конфигурации не поддерживается. При этом сама гостевая ОС вполне может быть установлена на VHD-диск.
- На хостах Hyper-V, а в случае использования Scale-Out File Server и на узлах файлового кластера, должна быть установлена версия Windows Server 2012 R2.
- Гостевой ОС может быть Windows Server 2012 R2 или Windows Server 2012 с последней версией интеграционных компонент.
- Поддерживаются как ВМ первого поколения (Generation 1), так и второго (Generation 2).
Диагностика и тестирование
Для диагностики возможных проблем в Performance Monitor добавлен новый объект Hyper-V Shared VHDX с набором различных счетчиков, которые вы можете анализировать на хостах Hyper-V.

Увеличить
Кроме того, добавлены новые журналы, просмотр которых возможен, как обычно, с помощью Event Viewer,

Увеличить
либо PowerShell:
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Shared-VHDX/Operational
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Shared-VHDX/Reservation
Наконец, для целей тестирования, изучения, разработки есть возможность использовать «специальную» конфигурацию Shared VHDX. Для этой конфигурации достаточно одного физического хоста с Windows Server 2012 R2 и поднятой ролью Hyper-V, на котором и можно расположить общие VHDX-файлы, не создавая кластеры с CSV-томами и пр. Чтобы реализовать подобный вариант вам нужно:
- Установить службу Failover Clustering
Install-WindowsFeature Failover-Clustering
- Вручную подключить фильтр Shared Virtual Disk для раздела, на котором будут располагаться общие VHDX-файлы, например для диска D: это будет выглядеть как
FLTMC.EXE attach svhdxflt D:
Но помните, что это неподдерживаемая конфигурация и применять ее в реальной среде не следует.
Таким образом, механизм общих VHDX-файлов помогает реализовать более эффективную схему гостевой кластеризации и, в конечном итоге, повысить доступность критически важных приложений и сервисов вашей инфраструктуры. Особенно полезной эта технология может оказаться для частных облаков и хостинговых сценариев.