Как оказалось, на нашем сайте нет хорошего руководства по назначению и использованию RDM-дисков (Raw Device Mapping) с платформой VMware vSphere. Постараемся заполнить этот пробел.
Давайте начнем с того, что для виртуальных машин на серверах VMware ESX есть всего 3 типа дисков с точки зрения виртуализации подсистемы хранения:
VMDK-диски
Это самые часто используемые диски VMware vSphere. Они создаются на хранилищах VMFS или NFS и позволяют использовать все возможности работы VMware с виртуальными машинами в части распределенных служб. К ним относятся распределенная блокировка файлов (distributed file locking), снапшоты дисков, vMotion - и много чего еще. О типах виртуальных дисков у нас есть отдельная статья. Обычные vmdk-диски - это самый высокий уровень виртуализации, т.е. все SCSI-команды виртуальной машины при обращении к нему проходят через компонент VMkernel, который уже процессит их внутрь файла vmdk. За пределы этого файла виртуальная машина ничего не видит. То есть виртуальной машине дается кусочек тома VMFS или NFS в виде файла vmdk, операции по работе с которым полностью контролируются гипервизором - это и есть максимальная виртуализация устройства. Из этого, кстати, следует, что поскольку есть слой виртуализации, в определенных условиях такие диски могут работать медленнее RDM-дисков, но есть также и условия при которых такие диски могут работать быстрее. Более подробно об этом можно прочитать здесь. На этих дисках в статье мы останавливаться не будем.
RDM-диски в режиме виртуальной совместимости (virtual RDM).
Это промежуточный тип диска с точки зрения виртуализации хранения. В случае создания такого диска на хранилище VMFS (NFS - не поддерживается) создается mapping-файл (он тоже с расширением *-rdmp.vmdk), через который происходит маппирование виртуальной машине физического дискового устройства LUN. Устройство это маппируется особым образом - основные служебные операции по работе с ним (например, команда Open и другие служебные SCSI-команды) проходят через через слой виртуализации в гипервизоре, а команды по работе с данными (Read и Write) процессятся напрямую к устройству, минуя слой виртуализации.
Что означает, что передаются напрямую только команды Read / Write в виртуальный RDM? Это означает, что устройство представляется виртуальной машине как обычный SCSI-диск, с которым нельзя работать иначе как с устройством хранения (как можно иначе - дальше). Зато сохраняется большинство возможностей VMware vSphere по функциональности - например, снапшоты. Ниже мы также посмотрим, где можно использовать такой тип дисков.
RDM-диски в режиме физической совместимости (Physical RDM). Это наименее виртуализованный тип дисков. Для таких дисков хост-сервер ESX также создает mapping-файл, но вот iSCSI-команды процессятся к устройству LUN напрямую, минуя слой виртуализации хранилища в гипервизоре (за исключением одной команды LUN Report).
Что дает такой механизм доступа к устройству? Он позволяет использовать iSCSI-устройство не просто как диск, но и передавать к нему различные iSCSI-команды, которые предоставлют больше возможностей по работе с устройством (например, управление SAN-устройствами изнутри виртуальной машины или снятие снапшота на уровне хранилища). Ниже мы тоже рассмотрим подобные примеры.
Как диски RDM выглядят на сервере VMware ESX / ESXi
Когда мы создаем виртуальную машину, при добавлении к ней виртуального диска мы выбираем следующий пункт:
Далее нам предлагают выбрать Target LUN для тома RDM. Обратите внимание, что VMFS-томов в списке таргетов для дисков RDM нет. Понятно дело, что ваша SAN-фабрика должна быть настроена так, чтобы хосты ESX видели этот LUN (а именно те хосты, для которой будут работать vMotion и HA).
Но будьте осторожны - создав RDM-том на одном из хостов, не отформатируйте его случайно под VMFS на другом (это, само собой, все данные этого диска уничтожит).
Далее выбираем VMFS-хранилище, где будет лежать mapping-файл:
Далее выбираем режим совместимости - Physical RDM или Virtual RDM:
После этого диск будет добавлен. Далее давайте посмотрим, что у нас теперь в папке с виртуальной машиной:
А тут у нас RDM-test.vmdk размером в 5 ГБ (такого размера у нас физический LUN, который мы примаппировали к виртуальной машине). Само собой, этот диск столько на нашем томе VMFS не занимает. Давайте глянем на папку из физической консоли сервера ESX:
На самом деле, как и для обычного диска, у нас есть заголовочный файл RDM-test.vmdk и mapping-файл RDM-test-rdmp.vmdk, который не занимает 5 ГБ (хотя так и показано), а занимает обычно 1-2 МБ. По сути файл -rdmp.vmdk - это что-то вроде символьной ссылки на устройство, который содержит его идентификатор, служебную информацию о режимах работы и позволяет использовать динамическое разрешение имен (об этом ниже).
Динамическое разрешение имен для RDM-дисков
Нам, как пользователям, сервер VMware ESX показывает mapping-файл в удобном символьном виде (RDM-test-rdmp.vmdk), которое не меняется после перезагрузки и других событий. На самом же деле в глубине закопаны всякие идентификаторы SCSI-устройств, пути и т.п. Dynamic name resolution позволяет скрыть от пользователя операции по замене путей и имен устройств, например, при отказе одного из коммутаторов SAN, замене HBA-адаптера и прочих событиях. Все это делается автоматически.
Кстати, для RDM-диска можно управлять путями из GUI клиента vSphere (как и путями к VMFS-хранилищам). Делается это здесь:
Когда нужно использовать диски RDM
Использование возможностей управления по SAN. Иногда в виртуальной машине бывает полезно установить управляющие агенты некоторого оборудования (вы маппируете к ВМ Management LUN, через который происходит управление по SCSI - например, ленточная библиотека). Это возможно только в режиме Physical RDM.
Использование возможностей ПО, работающего через SAN, напрямую с SCSI-устройством. К этому относятся, например, Dell/Equallogic’s VSS Writer для создания снапшотов LUN и для целей резервного копирования (можно забирать файлы с файловой системы гостевой ОС напрямую с LUN), а также NetApp SnapManager для Microsoft Exchange/SQL.
Использование возможностей кластеризации. Например, кластеры Microsoft, которые работают с виртуальными машинами на разных хостах ESX поддерживаются только с дисками RDM (можно использовать Virtual RDM). Кроме того, можно использовать кластер типа "виртуальный-физический", когда вы создаете кластер между виртуальной машиной и физическим сервером. В этом случае можно использовать только Physical RDM. Более подробно об этом написано в нашей статье. Для кластера между виртуальными машинами на одном хосте ESX можно использовать и vmdk-диски (подробнее тут).
Иногда для виртуальных машин с очень большим диском (а такой диск - это диск более 800 ГБ) рекомендуют делать отдельный RDM-том, чтобы остальные машины не мешали по производительности на этом LUN, или чтобы он не болтался один-одинешенек на томе VMFS.
Когда мы хотим осуществлять мониторинг производительности SAN в контексте отдельной виртуальной машины. Там можно использовать такую технологию как N_Port ID Virtualization (NPIV). Подробнее об этом вот в этом документе VMware.
Когда не нужно использовать диски RDM
Диски RDM редко используют для повышения производительности виртуальных машин в плане работы с системой хранения. Да, для некоторых случаев Physical RDM дает прирост производительности, но он достаточно мал, чтобы на этом зацикливаться. Лучше использовать грамотный сайзинг систем и технологию Storage IO Control.
Некоторые администраторы пытаются провернуть такую фишку: примаппировать к виртуальной машине LUN в режиме RDM, дальше отформатировать этот том в VMFS, а потом в эту виртуальную машину поставить VCB в целях бэкапа виртуальных машин на этом томе "VMFS-RDM". Так вот - такая конфигурация не поддерживается и крайне не рекомендуется.
Требования и ограничения дисков RDM
RDM-диски можно использовать только для хранилищ iSCSI и FibreChannel, где можно создавать VMFS-тома (для хранения mapping-файла). NFS-хранилища не поддерживаются. В качестве локальных хранилищ поддерживаются только те, которые показывают свой SCSI serial number.
Для RDM-диска нельзя замапить отдельный раздел на томе, вам потребуется выделить для виртуальной машины целый LUN.
Для томов RDM в режиме Physical Compatibility Mode нельзя использовать мгновенные снимки (снапшоты) со стороны серверов ESX (а значит, и нельзя использовать ПО для резервного копирования на базе снапшотов, например, Veeam Backup and Replication или VMware Data Recovery).
Для томов RDM в режиме Physical Compatibility Mode нельзя использовать технологию Fault Tolerance.
При использовании VMware vCenter Site Recovery Manager нужно включать в репликацию как VMFS-том с mapping-файлом, так и сам RDM-том.
VMware vCenter Server не поддерживает изменение LUN ID для тома RDM. В этом случае нужно будет перестроить RDM-том, сгенерировав новый vml ID.
Максимальный размер тома RDM - 2 ТБ (минус 512 байт).
Совместимость дисков RDM с функциями VMware vSphere
Возможность
Диски VMDK
Диски RDM Virtual
Диски RDM Physical
Сквозной процессинг SCSI-команд
Нет
Только Read/Write
Все, кроме LUN Report
Поддержка vCenter
Да
Да
Да
Поддержка снапшотов (Snapshots)
Да
Да
Нет
Distributed Locking (защита LUN от записи со стороны нескольких машин)
Да
Да
Да
Поддержка кластеризации
Только кластер между ВМ на одном хосте
Кластер между ВМ на одном хосте и кластер между ВМ на разных хостах
Кластер между ВМ и физическим сервером
ПО для управления SAN на базе SCSI
Нет
Нет
Да
Поддержка vMotion
Да
Да
Да
Поддержка HA
Да
Да
Да
Поддержка DRS
Да
Да
Да
Поддержка Storage vMotion
Да
Миграция только в vmdk-файл (обратной миграции нет)
Перемещается только mapping-файл
Интересные моменты
На RDM-том (и Virtual, и Physical) не пишется никаких метаданных, кроме того, что пишет туда гостевая ОС.
Можно ли подцепить RDM-том к физическому серверу и прочитать данные (например, из NTFS)? Да, можно.
Если гостевая ОС видит том как "VMware Virtual SCSI Disk Device" - то это RDM в режиме виртуальной совместимости, если имя назначено со стороны массива - значит это физический RDM.
Если есть дополнения - пожалуйста, пишите в комментарии.