Подключение локального диска через RDM

Филипп Зыков делится с нашими читателями, как физический диск на железе сервера превратить в RDM на vSphere:

Время от времени, особо упрямые и несогласные с предложенным функционалом Vsphere  VCenter  хотят вытворить что-то такое. А, потом, пишут про это статьи…

Итак, предыстория:

Я решил сделать супермегабюджетное решение в филиале. Там обитает админ, которого подпускать к серверам нельзя. Да, именно. Он не портит и не ломает, но придумывает такие кривые решения, что потом «нормальные» админы готовы ехать туда, чтобы обрушить на его голову свой праведный гнев. Так вот, для реализации «решения» есть DELL NF500 с 2 процами, 4Гб ОЗУ и RAID 5 2,7 Тб. Это вообще-то iSCSI-хранилище на Windows Server  2003. Нам для реализации кое-каких решений нужно завести 3 сервера Windows 2008R2. Железо покупать нельзя по целому ряду объективных и субъективных причин. Поэтому встал вопрос — как это организовать?  Поставили ESX 4.0 и встал вопрос разметки встроенного RAID. Подумав, отдали 700Гб под VM, а вот остальное решили сделать RDM*. Но через графический интерфейс Vsphere  VCenter  этого сделать нельзя, только на SAN можно делать RDM.

Прим.*:Да, пользовательские данные я храню на RDM. Vmdk я уже стирал, они у нас бились, мы долго ругались и решили что RDM это наш выбор. Бэкапить нам 2 Тб нам некуда, железа-то нет, и не будет.

Поиск решения дал ссылку на решение, которое работает в ESX 3.5.

Опытным путем было установлено, что для ESX 4.0 данные рекомендации будут выглядеть так:

  1. Создаем для VM новый диск, после этого данный диск Remove без удаления, чтобы получить vmdk-файл/заготовку для конвертации! Диск можно создавать с параметрами по умолчанию. Какие они — не важно.
  2. Открываем Putty, чтобы в  консоли написать немного команд.
  3. Смотрим  разделы  fdisk –l , находим нужный нам раздел из которого надо сделать RDM (можно опознать по размеру).
  4. Вычисляем его имя (naa.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) через  esxcfg-scsidevs -c
  5. После этого в консоли вводим команду vmkfstools -i  -d , которая делает конвертацию vmdk-файла.

Синтаксис ее такой : vmkfstools i [Путь к vmdk –файл ] —d rdm:/vmfs/devices/disks/naa.xxxxxxxxxxxxxxxxxxxxx  [vmdk-файл]

Пример: [root@dell-nf500 Arizona]# vmkfstools -i /vmfs/volumes/Local_Servers_VM/Arizona/Arizona_1.vmdk -d rdm:/vmfs/devices/disks/naa.60022190bd135e001238f9a43a44a6d8 Local_RDM.vmdk

Таким образом мы конвертируем любой vmdk-файл в RDM.

  1. После этого подключаем полученный vmdk через VC-клиент к VM и делаем с ним то, что считаем нужным.

rdm

Итак, на самом деле, это не совсем «кошер» и тянет на “грязный хак”, по меркам Vmware, но работает так как архитектура позволяет и допускает!

UPD. В комментариях Валерий Цуканов подсказывает другой работающий способ.

1. Создал из GUI обычный диск
2. Отцепил его от виртуальной машины
3. Выгнал “fdisk -l” и “ls -lh /vmfs/devices/disks/”
4. Открыл VMDK на редактирование, привел к следующему виду
————————————————————————-
# Disk DescriptorFile
version=1
encoding=”UTF-8″
CID=2fcb88a8
parentCID=ffffffff
createType=”vmfsRaw” <- новое значение

# Extent description
RW 3891167910 VMFSRAW “/vmfs/devices/disks/mpx.vmhba0:C0:T1:L0″ <- цифру брал из fdisk (Sec*Cyl*Head), путь из ls -lh

# The Disk Data Base
#DDB

ddb.longContentID = “31425c71cef152041d4c84452fcb88a8″
ddb.adapterType = “lsilogic” <- на buslogic не оживало
ddb.geometry.sectors = “63″ <- из fdisk
ddb.geometry.heads = “255″ <- из fdisk
ddb.geometry.cylinders = “242214″ <- из fdisk
ddb.virtualHWVersion = “7″
————————————————————————-
5. Подключил к vm, отформатировал, ошибок нет.

Запись опубликована в рубрике 4.1, 5.0, VMware, vSphere. Добавьте в закладки постоянную ссылку.

37 комментариев: Подключение локального диска через RDM

  1. phily говорит:

    Хм, я тут подумал, а ведь используя этот способ можно соорудить дешевое виртуальное iSCSI-хранилище.
    Т.е. добавить к этому рекомендации отсюда — http://vmpress.blogspot.com/2009/07/windows-storage-server-2008-microsoft.html и вуаля!
    В результате получаем, что железный сервер с дисками по-мимо того что он ESX, еще и диски свои отдает по iSCSI

    А можно и на линуксе через iSCSI Enterprise Target (IET).

    А если его собрать под ESX, то и виртуалка не нужна.

  2. dim-soft говорит:

    а как esxi отнесется к смене железа ?
    если например он установлен на usb (или по pxe грузиться)
    мы отмапили RDM а после железка поменялась (usb с esxi и диски с данными RDM остались)

  3. philzy говорит:

    нормально. эта процедура тока vmdk-файл меняет.
    вот если vmx грохнуть, т.е. VM, то процедуру надо повторить

  4. dim-soft говорит:

    так и номер диска может поменяться или нет ?

  5. philzy говорит:

    номер это свойство GUI от VC
    он ничего не значит, главное это то что написано в vmx
    тем более что vmdk можно подключать и отключать когда угодно

  6. Mr.Aloof говорит:

    Как-то очень мутно сделано.
    Зачем делать vmdk, а потом конвертировать? Зачем вычислять id?
    В vSphere Client идем в раздел Storage Adapters, там на нужном контроллере видим все диски и их Identifier.
    После этого в консоле набираем «vmkfstools -r /vmfs/devices/disks/naa.5xx {имя диска}» (если нажать tab, то id диска автоматом продолжится).
    Все. Не надо больше ничего конвертить….

  7. phily говорит:

    Я не могу проверить, так как не на чем. Но скорее всего так оно и есть.

    Авторам блога — сообщу.
    Спасибо.

  8. phily говорит:

    To Mr.Aloof:

    Вы оказались правы, коллега.
    Все проще.
    Недавно выдался случай проверить и «хак» упростился…
    Надо было тут одну машинку превратить в ESXi, чтобы решить пару вопросов, взяли обычную станцию с 3-мя дисками. Из 2-х надо было сделать RDM.
    Но 1-ый шаг все-таки:
    esxcfg-scsidevs -c или -l , а то имена бывают ну очень непонятные, особенно в случае 2-х одинаковых дисков.

    2-ой шаг:
    Синтаксис уточненный: “vmkfstools -r /vmfs/devices/disks/ {имя диска} (если нажать tab, то id диска автоматом продолжится) /vmfs/volumes/ {имя тома куда кладем полученный RDM-диск} (если нажать tab, то можно посмотреть имя тома куда кладем) {и не забываем дать имя vmdk}

    Примеры:
    1.

    vmkfstools -r /vmfs/devices/disks/t10.ATA_____WDC_WD2002FYPS2D01U1B0________________________WD2DWCAVY0654557 /vmfs/volumes/System/1.vmdk

    2.

    vmkfstools -r /vmfs/devices/disks/t10.ATA_____WDC_WD2002FYPS2D01U1B0________________________WD2DWCAVY0654557 /vmfs/volumes/System/2.vmdk

  9. Vovets666 говорит:

    Спасибо за полезную инфу.
    Только вот вопрос к спецам: скрипт выдает в результате ошибку: fault.RestrictedVersion.summary. Что ему надо, никто не подскажет?

  10. phily говорит:

    To Vovets666:

    Есть ссылка — http://communities.vmware.com/message/1082783;jsessionid=AD65AB3760AB0E387669E92DC8BE956A

    Если это ESX(i), то такое вполне может быть.
    Если ESX, то скорее всего не хватает прав.
    Из под кого работаем?

  11. Vovets666 говорит:

    to phily

    ESX(i).
    за ссылочку спасибо — хоть знать буду куда рыть. 🙂

  12. Aleksey говорит:

    Я так понял, что ничего из написанного никто так и не сделал…

    Железо: НР ДЛ380, Р400х512, САС 8*146Гб
    6 дисков в РАЙД5 — тут ЕСХ (4.0, 4.0У1)
    2 оставшихся — РАЙД 0+1 — заРДМить
    (о целесообразности прошу не писать — это просто тестовое железо)

    # esxcfg-scsidevs -l
    mpx.vmhba0:C0:T0:L0
    Device Type: Direct-Access
    Size: 699910 MB
    Display Name: Local VMware Disk (mpx.vmhba0:C0:T0:L0)
    Plugin: NMP
    Console Device: /dev/cciss/c0d0
    Devfs Path: /vmfs/devices/disks/mpx.vmhba0:C0:T0:L0
    Vendor: VMware Model: Block device Revis: 1.0
    SCSI Level: 2 Is Pseudo: false Status: on
    Is RDM Capable: false Is Removable: false
    Is Local: true
    Other Names:
    vml.0000000000766d686261303a303a30

    mpx.vmhba0:C0:T1:L0
    Device Type: Direct-Access
    Size: 139979 MB
    Display Name: Local VMware Disk (mpx.vmhba0:C0:T1:L0)
    Plugin: NMP
    Console Device: /dev/cciss/c0d1
    Devfs Path: /vmfs/devices/disks/mpx.vmhba0:C0:T1:L0
    Vendor: VMware Model: Block device Revis: 1.0
    SCSI Level: 2 Is Pseudo: false Status: on
    Is RDM Capable: false Is Removable: false
    Is Local: true
    Other Names:
    vml.0000000000766d686261303a313a30

    # vmkfstools -i /vmfs/volumes/Storage1/test/test_1.vmdk -d rdm:/vmfs/devices/disks/vml.0000000000766d686261303a313a30 Local_RDM.vmdk
    Destination disk format: raw disk mapping to ‘/vmfs/devices/disks/vml.0000000000766d686261303a313a30’
    Cloning disk ‘/vmfs/volumes/Storage1/test/test_1.vmdk’…
    Failed to clone disk : Invalid argument (1441801).

    # vmkfstools -i /vmfs/volumes/Storage1/test/test_1.vmdk -d rdm:/vmfs/devices/disks/vml.0000000000766d686261303a313a30:0 Local_RDM.vmdk
    Destination disk format: raw disk mapping to ‘/vmfs/devices/disks/vml.0000000000766d686261303a313a30:0’
    Cloning disk ‘/vmfs/volumes/Storage1/test/test_1.vmdk’…
    Failed to clone disk : The destination file system does not support large files (12).

    # vmkfstools -r /vmfs/devices/disks/vml.0000000000766d686261303a313a30 /vmfs/volumes/Storage1/RDM.vmdk
    Failed to create virtual disk: Invalid argument (1441801).

    # vmkfstools -r /vmfs/devices/disks/vml.0000000000766d686261303a313a30:0 /vmfs/volumes/Storage1/RDM.vmdk
    Failed to create virtual disk: The destination file system does not support large files (12).

    Т.е. вышеописанные способы не работают.

  13. A.Vakhitov говорит:

    Подробный ответ.
    Ок, Алексей. На неделе обязательно проверю и отпишусь!

  14. Mr.Aloof говорит:

    Алексей, прежде чем обвинять кого-то во лжи, потрудитесь хотя бы подумать почему у вас не получилось… или спросить что за ошибка такая?
    Дело в том, что диск у вас уже занят. Убедитесь что он не используется (У вас точно на этом диске нет datastore?).
    Для чего Вы пытаетесь замапить раздел на диске? (xxx:0) Это невозможно.
    Клонировать диск не нужно. Правильные команды для вас:

    vmkfstools -r /vmfs/devices/disks/mpx.vmhba0\:C0\:T1\:L0 /vmfs/volumes/Storage1/RDM.vmdk

    или:

    vmkfstools -r /vmfs/devices/disks/vml.0000000000766d686261303a313a30 /vmfs/volumes/Storage1/RDM.vmdk

  15. Mr.Aloof говорит:

    Еще добавлю для Алексея.
    В заметке по миграцию на виртуальную среду http://vmind.ru/2009/12/27/p2v-dlya-linux-s-minimalnym-prostoem как раз рассказано о одном из практических применений RDM локальных дисков. Это не «сферический конь в вакууме» а реальный проект.

  16. Aleksey говорит:

    Та я и сам не сидел без дела, поковырял немного…
    «Failed to create virtual disk: The destination file system does not support large files (12).» — Переустановил ЕСХ на ВМФС с блоком 4 МБ — не помогло, т.е. дело не в «большом файле для файловой системы».
    Ну и еще.
    http://download3.vmware.com/vmworld/2005/pac267-b.pdf
    стр. 15
    «RDM Disadvantages»:
    «Not available for block or RAID devices that do not report a SCSI serial number»
    Да, статья старая, но оч. точно подходит под мой случай.
    Попробую на Южном интел9Р — отпишусь (это почти уверен получится — потому что без РАЙДа)

  17. Aleksey говорит:

    >Mr.Aloof
    Диск точно не занят (только-только создан).
    Если не указывать «:0», то получаю ошибку «Failed to create virtual disk: Invalid argument (1441801).» (я писал выше)

  18. Mr.Aloof говорит:

    1. Вот эта ошибка как раз правильная. Возникает из-за заблокированного чем-то диска.
    Еще раз повторяю, указание «:0» обозначает первый раздел на диске. Разделы НЕ ЯВЛЯЮТСЯ УСТРОЙСТВОМ, не понимают команды и для них НЕВОЗМОЖНО сделать RDM.
    Параметры vmfs, куда вы ложите vmdk-файл с конфигурацией диска(RDM.vmdk) значения не имеют.
    2. Ваш контроллер на 100% соответствует протоколу SCSI.

    У меня эта ошибка бывет только когда диск уже кем-то занят. Если вы только сделали LUN, и на нем нет vmfs-раздела, то должно все работать.

    О! Последний вопрос — у вас ESX или ESXi?

  19. Андрей Вахитов говорит:

    Аналогичная Алексею картина. Такой же сервер, только диски вдвое меньше. Диски с нуля побиты на R1 (2) и R6 (6) . На Р1 поставлен ESXi, остальные диски прокидываю в RDM.

    # esxcfg-scsidevs -l
    mpx.vmhba1:C0:T1:L0
    Device Type: Direct-Access
    Size: 279900 MB
    Display Name: Local VMware Disk (mpx.vmhba1:C0:T1:L0)
    Plugin: NMP
    Console Device: /vmfs/devices/disks/mpx.vmhba1:C0:T1:L0
    Devfs Path: /vmfs/devices/disks/mpx.vmhba1:C0:T1:L0
    Vendor: VMware Model: Block device Revis: 1.0
    SCSI Level: 2 Is Pseudo: false Status: on
    Is RDM Capable: false Is Removable: false
    Is Local: true
    Other Names:
    vml.0000000000766d686261313a313a30

    Шустрый ESXi уже отформатировал этот раздел в VMFS. Это можно увидеть с помощью команд
    fdisk -l и df -h

    Делаю
    vmkfstools -r /vmfs/devices/disks/mpx.vmhba1\:C0\:T1\:L0 /vmfs/volumes/datastore1/RDM.vmdk
    выдает ту же ошибку, что и у вас. “Failed to create virtual disk: Invalid argument (1441801).”
    Удалил раздел VMFS через FDISK — ничего не изменилось.
    Продолжаем разбираться с Mr.Aloof

  20. Aleksey говорит:

    >Mr.Aloof
    ЕСХ4 (писал выше)
    Пробовал то-же самое на НР МЛ350Ж5 (контроллер Е200) — аналогично.
    Если подскажете как «отключить» всё/всех от тома — с удовольствием попробую. Но судя по ошибке в случае попытки примонтировать том без «:0» — оно говорит «Invalid argument», а не «дивайс бизи».

  21. Mr.Aloof говорит:

    Понимаете, это недокументированная возможность. Не ждите адекватных сообщений об ошибке.
    Логика простая: пытаемся получить доступ к пути, указанному в параметре — не получается, значит параметр неверный.

    Отсылая команды разделу, в ответ приходит бред. И не понятно что он с ним пытается делать и почему ругается на неподдерживаемую длинну… Но так делать не нужно. Еще раз повторю — разделы это не диски, они команды SCSI не понимают!!! Как вы себе представляете рав-диск-маппинг раздела???

  22. Valeriy Tsukanov говорит:

    Долгое время везло, но вот и я вступил в эту ошибку (12, 1441801). Судя по проявлениям (смотрел и на http://communities.vmware.com/message/1392809#1392809) проблема связана с контроллером (в моем случае Adaptec 5805) и версией ESX. Излечил следующим образом:
    1. Создал из GUI обычный диск
    2. Отцепил его от виртуальной машины
    3. Выгнал «fdisk -l» и «ls -lh /vmfs/devices/disks/»
    4. Открыл VMDK на редактирование, привел к следующему виду
    ————————————————————————-
    # Disk DescriptorFile
    version=1
    encoding=»UTF-8″
    CID=2fcb88a8
    parentCID=ffffffff
    createType=»vmfsRaw» <- новое значение

    # Extent description
    RW 3891167910 VMFSRAW «/vmfs/devices/disks/mpx.vmhba0:C0:T1:L0» <- цифру брал из fdisk (Sec*Cyl*Head), путь из ls -lh

    # The Disk Data Base
    #DDB

    ddb.longContentID = «31425c71cef152041d4c84452fcb88a8»
    ddb.adapterType = «lsilogic» <- на buslogic не оживало
    ddb.geometry.sectors = «63» <- из fdisk
    ddb.geometry.heads = «255» <- из fdisk
    ddb.geometry.cylinders = «242214» <- из fdisk
    ddb.virtualHWVersion = «7»
    ————————————————————————-
    5. Подключил к vm, отформатировал, ошибок нет.

  23. Valeriy Tsukanov говорит:

    AddOn

    На счет без ошибок вру:
    В gui при отображении диалога Edit Settings маловразумительное сообщение:
    DiskCapControl: Minimum > Maximum in SetRange(1992277969920,274877906944)
    Так как в логах все тихо считаю что проблема где то в недрах gui.

    Так что «грязный хак» таки не сошел с рук просто так

  24. Aleksey говорит:

    > Valeriy Tsukanov
    Спасибо, доктор,- ваш рецепт помог! 🙂
    Проверил на том-же железе.

  25. Vent говорит:

    > Valeriy Tsukanov
    Большое спасибо! Ваш способ единственный из всего нета, который помог! Даже в книге М. Михеева способ оказался не рабочим. Подкл. RAID массив. Пока вроде нормально.
    Интересно что без команды vmkfstools — перепробовал кучу вариантов, а ручной правкой созд. в GUI диска .vmdk (загаловочного ф. назван. без -flat) в Putty c помощью консольного редактора vi.
    vi NAME.vmdk. По vi см. док-ю.

  26. dicher говорит:

    Подключил диск к VSphere 5.0 по способу Mr.Aloof.
    При подключении к VSphere 4.1 выскакивали ошибки описанные выше, после поиска по англоязычным форумам, выявлена причина ошибки “Failed to create virtual

    disk: The destination file system does not support large files (12).” Файловая система VMFS 3 используемая в VSphere 4.1 при создании datastore запрашивает

    максимальный размер файла (по умолчанию 256ГБ, максимальный 2ТБ).
    При выполнении команды например: «vmkfstools -r /vmfs/devices/disks/mpx.vmhba0\:C0\:T1\:L0 vmfs/volumes/Storage1/RDM.vmdk» выполняется попытка создания файла

    RDM.vmdk на datastore Storage1 с размером равным размеру присоединяемого диска. Если ограничение 256ГБ, а диск больше получаем ошибку. На VSphere 5.0 можно

    использовать файловую систему VMFS 5, где нет ограничений по размеру файлов.

  27. dicher говорит:

    Подробная инструкция по подключению локального диска на англицком форуме http://www.vm-help.com/esx40i/SATA_RDMs.php

  28. Вадим говорит:

    Уважаемые спецы! Подскажите пожалуйста — при подключении iSCSI диска выпадает ошибка «Failed disk mapping»
    На 15 других компах (все 16 одинаковые) все спокойно подключилось, а на одном — нет 🙁
    Диски по сети (с рашаренных папок на других ящиках) спокойно подключаются, всякие эмуляторы типа DemoTool — аналогично, без проблем.
    Система: Windows 7 Pro x64
    Файл-сервер Dlink ShareCenter Pro 1100
    http://dlink.ru/ru/products/120/1451.html

  29. Вадим говорит:

    Все решилось само-собой! Оказывается не были установлены обновления (86шт)
    Спасибо.

  30. Александр говорит:

    Диск размером 9TB с GPT.
    fdisk не запускается на GPT.
    vmkfstools -i и vmkfstools -r выдают:
    «Failed to create virtual disk: The destination file system does not support large files (12).»

    Помогла команда:
    vmkfstools -z /vmfs/devices/disks/mpx.vmhba0:C0:T1:L0 /vmfs/volumes/datastore1/Local_RDM_R.vmdk

    (-z —createrdmpassthru)
    Диск успешно подключился и работает в гостевой ОС.
    Подскажите, насколько это безопасно? Что такое rdmpassthru?

  31. Mister Nobody говорит:

    Что такое rdmpassthru?
    physical RDM

  32. Mister Nobody говорит:

    vmkfstools -z данный параметр и отвечает за физический RDM, виртуальный не поддерживает разделы размером больше 2 ТБ (соответственно GPT).

  33. Роман говорит:

    Сделал конвертацию обычного vmdk диска в RDM на Vmware ESXI 5.1 из SSH консоли в две команды.

    Предварительная подготовка (все делалось мышкой vSphere Client): Создал (добавил) в свойствах Виртуальной машины vmdk диск (любого размера — это не важно), там же в свойствах отцепил его от виртуальной машины (кнопка Remove). Через Browse Datastore нашел его в папке где лежит виртуальная машина и запомнил его имя в моем случае это: Win2003_64_R2_1.vmdk. Затем в закладке Configuration — Storage — Devices в таблице находим нужный нам диск (не должен быть подцеплен как Data storage, см. соседнюю таблицу Datastores) в моем случае это запись вида «Local LSI Disk (naa.600605b0039fd2c0189d5ea11e6cd30d)» кликаем в название левой клавишей мыши и копируем в буфер для вставки в команду конвертации.

    Далее подключаемся к SSH и вводим команды, используя скопированное выше название диска для подстановки в ключ команды конвертации. в путях фигурирует «hdd1» и «/Win2003_64_R2/» это имена моего Datastorage и папки Виртуальной машины на этом диске соответственно. В вашем случае эти пути будут отличаться.

    # vmkload_mod multiextent
    Загрузка модуля конвертации (по умолчанию в 5 версии не загружается. Выгрузка модуля командой: vmkload_mod -u multiextent)
    # vmkfstools -i /vmfs/volumes/hdd1/Win2003_64_R2/Win2003_64_R2_1.vmdk -d rdm:/vmfs/devices/disks/naa.600605b0039fd2c0189d5ea11e6cd30d /vmfs/volumes/hdd1/Win2003_64_R2/Win2003_64_R2_RDM.vmdk

    Если все прошло нормально вы увидите сообщение: «Clone: 100% done.»
    Все, диск RDM создан, можно прицеплять его чрез свойства виртуальной машины — добавить существующий диск. В моем случае это диск с именем Win2003_64_R2_RDM.vmdk

  34. Андрей Вахитов говорит:

    Спасибо за подробную инструкцию.

  35. Виктор говорит:

    Здравствуйте. Подскажите, у меня raid 5- 4Тб, в хранилище видится как 4 Тб, а «fdisk -l» показывает 2Тб

  36. A.Vakhitov говорит:

    «В хранилище» — это где? В программе управления вашей системой хранения данных?
    Если fdisk -l показывает этот диск как 2Тб, скорее всего:
    — версия хоста ESXi < 5.0; - раздел отформатирован в VMFS3. Тип файловой системы можно посмотреть в списке хранилищ.

  37. Андрей Вахитов говорит:

    Нашел KB, описывающую как это сделать
    http://kb.vmware.com/kb/1017530

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *