Создание кластерного Multi-writer диска в VMware ESXI

vmware logo

Доброго времени суток! Многоуважаемые инженеры по виртуализации, рад, что вы вновь посетили профильный блог Pyatilistnik.org. В прошлый раз мы с вами подробно разобрали механизм применения утилиты Robocopy и научились с ее помощью реализовывать всевозможные сценарии копирования данных. Сегодня я бы хотел вам рассказать, о создании общих дисков (Multi-writer) в VMware ESXI 5.5, 6.5 и выше, для кластерных решений Oracle RAC и Microsoft MSCS кластер.В век виртуализации, данная информация все больше становится актуальней.

Что такое общий диск Multi-writer в VMware ESXI

Сейчас уже очень сложно себе представить серьезный сервис без отказоустойчивости, которая может быть реализована на разных уровнях работы инфраструктуры. Очень частым решением выступает отказоустойчивый кластер, который подразумевает использование разных серверов для одного сервиса. Выход из строя одного из серверов не влияет на работоспособность предоставляемых услуг клиентам. Очень часто в кластерах используются общие диски, для хранения баз данных (Microsoft SQL или Oracle), файловые ресурсов. Общие диски могут презентованы, как отдельные LUN с СХД, через ISCSI протокол, через общий диск или RDM в случае с виртуальными машинами.

В данной заметке я опишу реализацию с помощью общего диска для виртуальных машин VMware ESXI 6.5. В некоторых случаях (как правило, в сценариях кластеризации) может потребоваться совместное использование одного и того же диска между двумя (или более) виртуальными машинами. Наиболее оптимальным способом является использование диска vmdk, физически расположенного на общем хранилище или локально на хосте ESXi. Если вы хотите использовать общие диски на разных хостах ESXi, то вы можете использовать только разделяемое хранилище

.На представленной ниже схеме вы видите:

  1. Storage Array, по сути это ваша система хранения данных, на которой реализован RAID массив, по рекомендации производителя.
  2. RAID массив порезан на LUN, это логически порезанное место на вашей системе хранения данных
  3. Далее LUN презентуется хостам VMware ESXI 6.5 и размечается файловой системой VMFS 6. Где из LUN получаются разделы (Datastore-Volume) для гипервизора.
  4. Далее на на Datastore уже разворачиваются виртуальные машины

Схема общего диска в ESXI 6.5

Вот на таком общем VMFS Volume диске вы создаете общий VMDK диск, который будет доступен двум и более виртуальным машинам под чтение и запись. Сами виртуальные машины могут находится на разных физических хостах и разных географических локациях.Такой режим называется Multi-Writer VMDK, его часто применяют в построении кластеров MS SQL, Oracle RAC, такой режим работы диска применяется в технологии VMware Fault Tolerance.

Для чего применяют Multi-Writer диск

  • Во первых, как я и писал выше для отказоустойчивости различных сервисов, сервера которых могут быть в разных ЦОДах.
  • Во вторых для возможности обслуживания важных серверов, без их простаивания. Например, чтобы была возможность своевременно производить обновление Windows пакетов, другого программного обеспечения, иметь возможность перезагружать сервер
  • В целях тестирования кластерных технологий, когда у вас нет СХД и нет возможности реализовать общий диск, по FC или ISCSI протоколу

Ограничения общих дисков VMware ESXI

Без некоторых нюансов все же не обошлось, хочу выделить некоторые ограничения при использовании общих дисков:

Самое главное, что у вас пропадет возможность производить миграцию виртуальной машины, обычный vMotion и Storage vMotion (Подробнее https://kb.vmware.com/s/article/1003797)

Ограничения общих дисков ESXI

Например, при попытке сделать Storage vMotion вы получите ошибку:

Virtual machine is configured to use a device that prevents the operation: Device 'SCSI controller 1' is a SCSI controller engaged in bus-sharing

Если нужно будет мигрировать, то придется выключать виртуалку.

Ошибка миграции общего диска ESXI

  • Вы не сможете на живую произвести расширение дисков, при попытке вы получите вот такую ошибку:

The disk extend operation failed: The virtual disk requires a feature not supported by this program. Hot-extend is currently supported only for VMFS flat virtual disks without snapshots opened in persistent mode.

  • Если вы вдруг разметите оба диска в NTFS на двух хостах и попытаетесь на них писать, создав на одном одну папку, а на втором вторую, то хосты эти папки не увидят, каждый свою, учтите, это вам не общий диск с синхронизацией файлов, Multi-Writer VMDK именно нужен для кластеризации.

Как подключить общий диск в VMware ESXI 6.5 и выше

Предположим, что общее внешнее хранилище (подключенное к каждому хосту ESXi с использованием iSCSI или Fibre Channel SAN) уже представлено всем хостам VMWare ESXi, на которых запущены виртуальные машины, которым вы хотите добавить общий виртуальный диск. На обеих виртуальных машинах вам нужно добавить новый контроллер SCSI. Объясню для чего нужно добавлять новый SCSI Controller. Когда вы создаете новую виртуальную машину ESXI у вас по умолчанию уже будет один LSI Logic SAS контроллер (SCSI Controller), но он работает во первых в режиме SCSI Bus Sharing "None", то есть не работает с общими дисками VMDK, это можно поправить при выключенной машине, но VMWare не рекомендует совмещать при работе обычных дисков и Multi-Writer VMDK дисков на одном LSI Logic SAS контроллере.

Поэтому нам первым делом необходимо в свойствах виртуальной машины добавить новый SCSI Controller.

Создание кластерного Multi-writer диска в VMware Vsphere-01

Если посмотреть подсказку у LSI Logic SAS контроллера, то вы увидите три его режима:

  • None - для работы с не кластерными Multi-Writer дисками
  • Physical - виртуальные диски могут быть общими для виртуальной машины и физическим сервером
  • Virtual - для работы с общим диском для нескольких виртуальных машин

описание типа LSI Logic SAS контроллера

Хочу отметить, что к одному LSI Logic SAS контроллеру можно одновременно подключить до 16 виртуальных дисков

Делается это через пункт "New Device" и нажатии кнопки Add, для SCSI Controller.

Добавление нового LSI Logic SAS контроллера

Далее у нового, добавленного контроллера вы в пункте "SCSI Bus Sharing" выберите тип "Virtual". Можете сохранить конфигурацию виртуальной машины, через нажатие кнопки "Ок"

Создание кластерного Multi-writer диска в VMware Vsphere-03

Далее на первой машине, где мы только что добавили новый контроллер, вам нужно создать новый виртуальный диск, делается это так же, через пункт "New Device"

Создание кластерного Multi-writer диска в VMware Vsphere-04

Откройте параметры нового виртуального диска. Для того, чтобы сделать его общим между виртуальными машинами VMware ESXI, вам необходимо выставить соответствующие настройки:

  • Disk Provisioning - Делает толстый диск с занулением "Thick provision Eager zeroed thick disks", нужен для кластеризации, о типах дисков ESXI, читайте по ссылке.
  • Sharing - тут вы как раз выбираете режим общего диска "Multi-Writer"
  • Disk Mode - режим работы диска выставите "Independent Persistent" (Подробнее про режимы работы ESXI дисков), данный режим работы не позволит использовать vStorage APIs, что не даст создавать на таком диске снапшоты. Данный режим рекомендуется самим вендором VMware и его партнерами, такими как Oracle. Если бы мы разрешили создание снимков на этом диске, то это могло бы привести к потере данных. Так если у вас на этом диске быдет база SQL и вы будите использовать Veeam Backup, то у ваших резервных копий на уровне самого SQL могут быть проблемы при восстановлении из них, так как точка отсчета с которой нужно будет выстраивать цепочку бэкпов будет нарушена Veeam, который сдвинет точку бэкапа на себя. Если выставлен Independent Persistent, то в Veeam при создании бэкапа этой виртуальной машин можно исключить нужные диске, где стоят SQL или Oracle.
  • Virtual Device Node - выберите наш новый LSI Logic SAS контроллер, работающий в режиме "SCSI Bus Sharing Virtual"

Создание кластерного Multi-writer диска в VMware Vsphere-05

Далее я для своего удобства, хочу чтобы общие диски лежали в отдельной папке, а так как они по умолчанию создаются в папке с виртуальной машиной да и еще имеют имя дисков, как имя машины_цифра, я бы такое хотел поправить. Для этого я в конфигурации виртуальной машины удаляю все созданные диски, но я не ставлю галку "Delete files from datastore", то есть по сути на датасторе они остаются.

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

Создание кластерного Multi-writer диска в VMware Vsphere-07

Далее я иду на датастор на котором находится виртуальная машина с общими дисками (Datastore - Browse Files).

Перемещение общих дисков в esxi

Нахожу нужные мне Multi-Writer диски. Создаю новую папку

Создание кластерного Multi-writer диска в VMware Vsphere-09

И перемещаю в новую папку общие диски, хочу отметить, что вы их можете переместить на любой общий между хостами ESXI датастор.

Перемещение общих дисков в esxi

Я делаю "Move to" на тот же латасторе, но в новую папку. Этим я добьюсь, что буду видеть явным образом общие кластерные диски.

Создание кластерного Multi-writer диска в VMware Vsphere-11

Так как я диски до этого удалил, для удобства, то мне их нужно заново добавить. Если вы до этого не удаляли, то сделайте эти действия только для второй виртуальной машины. Открываем настройки виртуальной машины и нажимаем добавить новое устройство, выбираем пункт "Existing Hard Disk", это у нас выбор существующего общего кластерного диска.

Создание кластерного Multi-writer диска в VMware Vsphere-12

Указываем на каком датасторе у нас лежит Multi-Writer диск и выбираем нужный VMDK, в моем случае их семь.

Добавление Multi-Writer общего диска

Выставляем нужные параметры:

  • Disk Provisioning - "Thick provision Eager zeroed thick disks"
  • Sharing -  "Multi-Writer"
  • Disk Mode -  "Independent Persistent"
  • Virtual Device Node - выберите наш новый LSI Logic SAS контроллер, работающий в режиме "SCSI Bus Sharing Virtual"

Если такой диск не один, то добавляем все за один раз для экономии времени. Проделываем такое добавление общих дисков на всех виртуальных машинах, где планируется использовать Multi-Writer.

Создание кластерного Multi-writer диска в VMware Vsphere-14

Далее уже в операционной системе Windows Server, зайдя в оснастку "Управление дисками" вы обнаружите ваши диски. Остается их только разметить в GPT формат и отдать под кластер.

Размеченные общие диски в кластере ESXi

Включение общего диска для ESXI 5.5 и ниже

В более ранних версиях гипервизора Vmware ESXI 5.5 и ниже, общий кластерный диск выключается таким образом. Вы заходите так же в свойства виртуальной машины и добавляете там новый SCSI Controller с типом работы "Virtual".

Добавление LSI Logic SAS контроллер в ESXI 5.5

Затем вы создаете новый диск, указываете его размер и тип Thick Provision Eager Zeroed.

СОздание общего диска

Далее Vmware ESXI 5.5 попросит вас выбрать Выбор LSI Logic SAS контроллер, обязательно укажите тот, что мы создали заранее и запомните порт SCSI к которому вы его подключаете в моем примере, это SCSI (1:0).

Выбор LSI Logic SAS контроллера

Далее в настройках виртуальной машины вам необходимо перейти на вкладку "Option - General" и нажать кнопку "Configuration Parameters".

Включение флага Multi-Writer

В самом конце для каждого общего диска пишем в имени номер SCSI порта SCSI1: 0.sharing в поле "Value" пишем multi-writer.

Multi-Writer VMDK

Для второй виртуальной машины делаем те же действия, единственное на этапе создания диска, выбираем пункт существующего "Use an existing virtual disk"

ESXI 5.5 добавление общего диска-01

Через кнопку "Browse" указываем путь до него.

ESXI 5.5 добавление общего диска-02

Выбираем сам VMDK диск. После чего не забываем так же прописать на вкладке "Option - General" и нажать кнопку "Configuration Parameters", для каждого общего диска пишем в имени номер SCSI порта SCSI1: 0.sharing в поле "Value" пишем multi-writer.

ESXI 5.5 добавление общего диска-03

Включение Multi-Writer VMDK через SSH

  1. Выключите виртуальную машину.
  2. Войдите на хост ESXi по ssh, на котором расположена виртуальная машина.
  3. Перейдите к конфигурационному файлу виртуальной машины ( VM_name.vmx) (расположенному в /vmfs/volume/datastore_name/vm_name).
  4. Всегда рекомендуется создать резервный файл .VMX перед внесением изменений в файл конфигурации виртуальной машины. Вы можете создать резервную копию с помощью команды ( CP VM_name.vmx VM_name.VMX.bak )
  5. Откройте и отредактируйте исходный .vmx-файл с помощью текстового редактора, такого как редактор VI. Введите «i», чтобы начать вносить изменения.
  6. Добавьте эту запись в конец .vmx-файла: SCSI0: 1.sharing = "multi-writer" , для каждого диска отдельная запись
  7. Закройте и сохраните файл .vmx, используя (: wq)

ssh общий диск esxi

НА CentOS 7 посмотреть общие диски можно командой cat VM_Name.VMX | grep multi-writer. Надеюсь, что я подробно и доступно объяснил, о общих кластерных дисках, используемых в VMware ESXI. С вами был Иван Семин, автор и создатель портала Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий

  1. Виктор

    Добрый день. Спасибо за статья!

    Я так понял что рекомендации Vmware — Disk Mode — режим работы диска выставите «Independent Persistent» для дисков где базы SQL, Oracle и скорее всего Postgress. Получается для данного диска не будут делаться снэпшоты? А разве Veritas, и Veeam при резервном копировании Виртуальной машины не используют снэпшоты? А как тогда сделать полную копию виртуальной машины?

  2. Иван Семин автор

    Да снапшотов делаться не будет. Виртуальную машину вы можете бэкапить с установленным внутрь ОС агентом, но лучше бэкапить системный диск, а остальное средствами БД, так правильнее.

  3. Сергей

    Встал вопрос, а как расширить такой диск?

  4. Иван Семин автор

    По идее на живую, но если не дает, то придется выключать обе vm и потом расширять на активной, сейчас тестового стенда нет, так что проверить не могу.

  5. Владимир

    Добрый день. Попробовал добавить созданный диск к виртуалке. Но про добавлении существующего диска невозможно выбрать параметры диска (выпадающие списки пустые).