Филипп Зыков делится с нашими читателями, как физический диск на железе сервера превратить в 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 данные рекомендации будут выглядеть так:
- Создаем для VM новый диск, после этого данный диск Remove без удаления, чтобы получить vmdk-файл/заготовку для конвертации! Диск можно создавать с параметрами по умолчанию. Какие они – не важно.
- Открываем Putty, чтобы в консоли написать немного команд.
- Смотрим разделы fdisk –l , находим нужный нам раздел из которого надо сделать RDM (можно опознать по размеру).
- Вычисляем его имя (naa.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) через esxcfg-scsidevs -c
- После этого в консоли вводим команду 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.
- После этого подключаем полученный vmdk через VC-клиент к VM и делаем с ним то, что считаем нужным.
Итак, на самом деле, это не совсем «кошер» и тянет на “грязный хак”, по меркам 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, отформатировал, ошибок нет.
Хм, я тут подумал, а ведь используя этот способ можно соорудить дешевое виртуальное iSCSI-хранилище.
Т.е. добавить к этому рекомендации отсюда – http://vmpress.blogspot.com/2009/07/windows-storage-server-2008-microsoft.html и вуаля!
В результате получаем, что железный сервер с дисками по-мимо того что он ESX, еще и диски свои отдает по iSCSI
А можно и на линуксе через iSCSI Enterprise Target (IET).
А если его собрать под ESX, то и виртуалка не нужна.
а как esxi отнесется к смене железа ?
если например он установлен на usb (или по pxe грузиться)
мы отмапили RDM а после железка поменялась (usb с esxi и диски с данными RDM остались)
нормально. эта процедура тока vmdk-файл меняет.
вот если vmx грохнуть, т.е. VM, то процедуру надо повторить
так и номер диска может поменяться или нет ?
номер это свойство GUI от VC
он ничего не значит, главное это то что написано в vmx
тем более что vmdk можно подключать и отключать когда угодно
Как-то очень мутно сделано.
Зачем делать vmdk, а потом конвертировать? Зачем вычислять id?
В vSphere Client идем в раздел Storage Adapters, там на нужном контроллере видим все диски и их Identifier.
После этого в консоле набираем “vmkfstools -r /vmfs/devices/disks/naa.5xx {имя диска}” (если нажать tab, то id диска автоматом продолжится).
Все. Не надо больше ничего конвертить….
Я не могу проверить, так как не на чем. Но скорее всего так оно и есть.
Авторам блога – сообщу.
Спасибо.
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
Спасибо за полезную инфу.
Только вот вопрос к спецам: скрипт выдает в результате ошибку: fault.RestrictedVersion.summary. Что ему надо, никто не подскажет?
To Vovets666:
Есть ссылка – http://communities.vmware.com/message/1082783;jsessionid=AD65AB3760AB0E387669E92DC8BE956A
Если это ESX(i), то такое вполне может быть.
Если ESX, то скорее всего не хватает прав.
Из под кого работаем?
to phily
ESX(i).
за ссылочку спасибо – хоть знать буду куда рыть. 🙂
Я так понял, что ничего из написанного никто так и не сделал…
Железо: НР ДЛ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).
Т.е. вышеописанные способы не работают.
Подробный ответ.
Ок, Алексей. На неделе обязательно проверю и отпишусь!
Алексей, прежде чем обвинять кого-то во лжи, потрудитесь хотя бы подумать почему у вас не получилось… или спросить что за ошибка такая?
Дело в том, что диск у вас уже занят. Убедитесь что он не используется (У вас точно на этом диске нет 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
Еще добавлю для Алексея.
В заметке по миграцию на виртуальную среду https://vmind.ru/2009/12/27/p2v-dlya-linux-s-minimalnym-prostoem как раз рассказано о одном из практических применений RDM локальных дисков. Это не “сферический конь в вакууме” а реальный проект.
Та я и сам не сидел без дела, поковырял немного…
“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Р – отпишусь (это почти уверен получится – потому что без РАЙДа)
>Mr.Aloof
Диск точно не занят (только-только создан).
Если не указывать “:0”, то получаю ошибку “Failed to create virtual disk: Invalid argument (1441801).” (я писал выше)
1. Вот эта ошибка как раз правильная. Возникает из-за заблокированного чем-то диска.
Еще раз повторяю, указание “:0” обозначает первый раздел на диске. Разделы НЕ ЯВЛЯЮТСЯ УСТРОЙСТВОМ, не понимают команды и для них НЕВОЗМОЖНО сделать RDM.
Параметры vmfs, куда вы ложите vmdk-файл с конфигурацией диска(RDM.vmdk) значения не имеют.
2. Ваш контроллер на 100% соответствует протоколу SCSI.
У меня эта ошибка бывет только когда диск уже кем-то занят. Если вы только сделали LUN, и на нем нет vmfs-раздела, то должно все работать.
О! Последний вопрос – у вас ESX или ESXi?
Аналогичная Алексею картина. Такой же сервер, только диски вдвое меньше. Диски с нуля побиты на 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
>Mr.Aloof
ЕСХ4 (писал выше)
Пробовал то-же самое на НР МЛ350Ж5 (контроллер Е200) – аналогично.
Если подскажете как “отключить” всё/всех от тома – с удовольствием попробую. Но судя по ошибке в случае попытки примонтировать том без “:0” – оно говорит “Invalid argument”, а не “дивайс бизи”.
Понимаете, это недокументированная возможность. Не ждите адекватных сообщений об ошибке.
Логика простая: пытаемся получить доступ к пути, указанному в параметре – не получается, значит параметр неверный.
Отсылая команды разделу, в ответ приходит бред. И не понятно что он с ним пытается делать и почему ругается на неподдерживаемую длинну… Но так делать не нужно. Еще раз повторю – разделы это не диски, они команды SCSI не понимают!!! Как вы себе представляете рав-диск-маппинг раздела???
Долгое время везло, но вот и я вступил в эту ошибку (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, отформатировал, ошибок нет.
AddOn
На счет без ошибок вру:
В gui при отображении диалога Edit Settings маловразумительное сообщение:
DiskCapControl: Minimum > Maximum in SetRange(1992277969920,274877906944)
Так как в логах все тихо считаю что проблема где то в недрах gui.
Так что “грязный хак” таки не сошел с рук просто так
> Valeriy Tsukanov
Спасибо, доктор,- ваш рецепт помог! 🙂
Проверил на том-же железе.
> Valeriy Tsukanov
Большое спасибо! Ваш способ единственный из всего нета, который помог! Даже в книге М. Михеева способ оказался не рабочим. Подкл. RAID массив. Пока вроде нормально.
Интересно что без команды vmkfstools – перепробовал кучу вариантов, а ручной правкой созд. в GUI диска .vmdk (загаловочного ф. назван. без -flat) в Putty c помощью консольного редактора vi.
vi NAME.vmdk. По vi см. док-ю.
Подключил диск к 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, где нет ограничений по размеру файлов.
Подробная инструкция по подключению локального диска на англицком форуме http://www.vm-help.com/esx40i/SATA_RDMs.php
Уважаемые спецы! Подскажите пожалуйста – при подключении iSCSI диска выпадает ошибка “Failed disk mapping”
На 15 других компах (все 16 одинаковые) все спокойно подключилось, а на одном – нет 🙁
Диски по сети (с рашаренных папок на других ящиках) спокойно подключаются, всякие эмуляторы типа DemoTool – аналогично, без проблем.
Система: Windows 7 Pro x64
Файл-сервер Dlink ShareCenter Pro 1100
http://dlink.ru/ru/products/120/1451.html
Все решилось само-собой! Оказывается не были установлены обновления (86шт)
Спасибо.
Диск размером 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?
Что такое rdmpassthru?
physical RDM
vmkfstools -z данный параметр и отвечает за физический RDM, виртуальный не поддерживает разделы размером больше 2 ТБ (соответственно GPT).
Сделал конвертацию обычного 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
Спасибо за подробную инструкцию.
Здравствуйте. Подскажите, у меня raid 5- 4Тб, в хранилище видится как 4 Тб, а “fdisk -l” показывает 2Тб
“В хранилище” – это где? В программе управления вашей системой хранения данных?
Если fdisk -l показывает этот диск как 2Тб, скорее всего:
– версия хоста ESXi < 5.0; - раздел отформатирован в VMFS3. Тип файловой системы можно посмотреть в списке хранилищ.
Нашел KB, описывающую как это сделать
http://kb.vmware.com/kb/1017530