Многие администраторы VMware vSphere в крупных компаниях рано или поздно сталкиваются с необходимостью создания кластеров из виртуальных машин, например, для использования технологии высокой доступности баз данных Oracle Real Application Clusters (RAC) или для создания систем непрерывной доступности на базе технологии VMware Fault Tolerance.
При использовании кластерных решений необходимо, чтобы диски ВМ находились в режиме multi-writer, то есть позволяли производить запись в файл VMDK одновременно с нескольких хостов ESXi (можно также организовать и запись от нескольких ВМ на одном хосте). Этот режим со стороны VMware поддерживается только для сторонних кластерных решений и для технологии Fault Tolerance, у которой техника vLockstep требует одновременного доступа к диску с обоих хостов ESXi. Давайте посмотрим на основные аспекты режима multi-writer.
В первую очередь надо сказать, что VMware на данный момент официально поддерживает кластеры Oracle RAC, Veritas InfoScale, Microsoft Windows Server Failover Clustering (WSFC, ранее они назывались Microsoft Cluster Service, MSCS) и некоторые другие (например, Red Hat).
Основную информацию по кластерам Oracle можно получить в документе "Oracle Databases on VMware RAC Deployment Guide", а также вот в этой и этой статьях. Касательно поддержки кластеров WSFC основную информацию о поддержке можно найти в KB 1004617. Ну а о поддержке Veritas InfoScale можно почитать вот тут.
В зависимости от версии гипервизора ESXi компания VMware предоставляет инструкции о настройке кластеров MSCS/WSFC в следующей таблице:
В дополнение к этой таблице рекомендуем также заглянуть и в KB 2147661.
Конечно же, использование виртуальных дисков в режиме Multi-writer в VMware vSphere имеет некоторое количество ограничений:
Надо понимать, что операционная система и приложения, которые используют такие диски, должны уметь работать с дисками в режиме одновременной доступности со стороны нескольких хостов, иначе можно просто повредить данные.
Также, в общем случае, для режима Multi-writer в последней версии VMware vSphere поддерживается одновременный доступ с 8 хостов ESXi, но это количество может быть уменьшено в зависимости от используемой технологии, например, для кластеров WSFC оно уменьшено до 5. Начиная с vSphere 6.7 Update 1, можно увеличить число хостов с одновременным доступом к диску до 64 (подробнее тут).
По умолчанию файловая система VMFS работает таким образом, что одновременный доступ с разных хостов к одному VMDK-диску блокируется. Включая режим Multi-writer, надо осознавать, что вы рискуете в случае неправильной конфигурации системы потерять данные.
Диски, которые поддерживают Multi-writer, должны быть только eager zeroed thick. Ни zeroed thick, ни thin provisioned диски не поддерживаются. Но если вы используете vSAN, то, начиная vSAN 6.7 Patch 01, вы можете использовать тонкие диски, как рассказано, например, тут.
Диски с флагом Multi-writer нельзя привязывать к контроллеру NVMe.
Горячее добавление виртуального диска (Hot Add) убирает флаг Multi-writer.
Начиная с vSphere 7.0 Update 1, хранилища данных, построенные на базе NVMe over Fibre Channel и NVMe over RDMA (RoCE v2), поддерживают настройку Multi-writer, чтобы иметь возможность распределенной записи данных для кластерных систем. За более подробной информацией об этом нужно обратиться по этой ссылке.
Ну а теперь давайте посмотрим, какие возможности платформы VMware vSphere поддерживаются для виртуальных машин с дисками в режиме Multi-writer:
Действия или возможности
Поддерживается
Не поддерживается
Комментарий
Включение, выключение и перезагрузка ВМ
Приостановка ВМ (Suspend)
Горячее добавление виртуальных дисков (Hot add)
Только для уже существующих адаптеров
Горячее удаление устройств (Hot remove)
Горячее расширение виртуального диска
Присоединение и отсоединение устройств
Снапшоты
Решения для резервного копирования используют снапшоты через механизм vStorage APIs, соответственно такие решения (например, Veeam Backup and Replication) также не поддерживаются для этого режима.
Снапшоты ВМ с типом диска independent-persistent
Поддерживается в vSphere 5.1 Update 2 и более поздних версиях
Клонирование ВМ
Горячая миграция хранилищ Storage vMotion
Не поддерживаются и shared, и non-shared диски, так как требуется приостановка ВМ во время миграции хранилищ.
Поддерживается только для Oracle RAC и ограничена 8 хостами ESXi.
Кстати, когда вы включаете кластер непрерывной доступности ВМ VMware Fault Tolerance, режим Multi-writer для VMDK-дисков машины включается автоматически.
Итак, как, собственно, настроить режим Multi-writer:
1. Сначала вам нужно выставить на виртуальном SCSI-контроллере режим общего доступа к шине (SCSI Bus sharing) в значение Virtual или Physical в настройках виртуальной машины:
Physical - к диску получат доступ машины с разных хостов ESXi
Virtual - к диску получат доступ только машины этого же хоста ESXi
2. Далее в настройках виртуальной машины указываем тип Sharing как Multi-writer:
3. На втором хосте ESXi таким же образом настраиваем или создаем SCSI-контроллер, а потом в качестве диска виртуальной машины указываем "Existing Hard Disk"
Там также потребуется выставить режим Multi-writer для диска.
Тут еще есть важная деталь - на обеих машинах SCSI device address должен быть одинаковый! То есть, если у вас указан "SCSI controller 1" для первой ВМ, а ее диск как SCSI(1:0), то точно такая же конфигурация должна быть указана и для второй:
Надо сказать, что в версиях платформы виртуализации до vSphere 6.0 Update 1 настройки Multi-writer в графическом интерфейсе нет. Тут надо добавить следующую строчку в vmx-файл или в расширенные параметры ВМ (VM properties: Options > General > Configuration Parameters):
SCSI1:0.sharing = "multi-writer"
4. Дальше уже в гостевой операционной системе обеих машин нужно настроить диск и доступ к нему согласно инструкциями для вашего кластерного программного обеспечения.
Надо сказать, что режим Multi-writer должен использоваться и поддерживается только для кластерных решений, которые знают, как работать с таким общим ресурсом. Некоторые пользователи полагают, что таким образом можно настроить общий ресурс для хранения файлов, но вынуждены их огорчить - такое не работает, данные на диске обновятся только тогда, когда вы выведете его в офлайн и снова в онлайн. До этого вы не будете видеть изменения, сделанные каждым из хостов.
Теперь вернемся к таблице ограничений дисков в режиме Multi-writer. Как видно из таблицы выше, для них не поддерживаются снапшоты, соответственно, традиционные средства резервного копирования таких дисков не работают. Для конфигурации по умолчанию с такими дисками бэкап виртуальной машины будет завершаться неуспешно (ошибка будет обрабатываться по-разному, в зависимости от того, какого ПО для резервного копирования вы используете).
Самый простой способ продолжить делать бэкап таких машин, но с исключением дисков в режиме Multi-writer - это сменить им тип с Dependent (это диски, которые участвуют в создании снапшотов) на Independent Persistent (это диски, для которых снапшоты не создаются, но они сохраняют изменения во времени). Делается это также в настройках виртуальной машины (Disk Mode):
Ну а как бэкапить диски в режиме Multi-writer, режим операций которых установлен как Independent? Для этого можно использовать решения для резервного копирования на уровне гостевой ОС (например, Veeam Agent for Windows), либо специализированные решения под конкретные приложения, такие как, например, Veeam Plug-in for Oracle RMAN.
В заключение нужно отметить, что режим Multi-writer нужно использовать очень осторожно, предварительно прочитав все необходимые рекомендации VMware и вендора кластерного ПО. Всегда есть риск повреждения данных вследствие неправильной конфигурации или программной ошибки, поэтому о резервном копировании таких систем нужно думать с особой тщательностью.