Как использовать USB диск/флешку в качестве VMFS хранилища в ESXi 6.5

В ESXi 6.5 были внесены некоторые изменения касательно устройств, подключенных через USB порты. Унаследованные драйверы, включая xhci, ehci-hcd, usb-uhci и usb-storage, были заменены единым USB-драйвером с именем vmkusb. Новый драйвер имеет некоторые особенности, позволяющие подключать внешний USB-устройства (флешки или USB жесткие диски) и использовать их в качестве VMFS хранилищ.

В этой статье, я попробую собрать вместе всю информацию о подключении USB устройств, использовании их в качестве хранилищ ВМ с файловой системой VMFS5 или VMFS6 на хосте ESXi и типовых проблемах.

Важно. Обратите внимание, что использование USB хранилищ официально не поддерживается VMware (кейс о проблеме с таким хранилищем завести не получится).

Именование USB устройств в ESXi 6.5

Как я уже говорил, в ESXi 6.5 было изменены правила именования устройств. Если в ESXi 6.0 все USB устройства определялись как mpx.vmhbaXX, то в ESXi 6.5 они называются naa.XXX. Вот как выглядит SSD накопитель Samsung, подключенный через порт USB3:

# ESXi 6.0u2
-rw-------    1 root     root     128035676160 Dec 27 15:57 naa.5000000000000002

# ESXi 6.5
-rw-------    1 root     root     128035676160 Dec 27 18:16 mpx.vmhba36:C0:T0:L0

Однако, это правило работает не всегда. К примеру, моя 16 Гб флешка Transcend в обоих версиях гипервизора выглядит как mpx.vmhba:

# ESXi 6.0u2
-rw-------    1 root     root     16022241280 Dec 27 16:02 mpx.vmhba34:C0:T0:L0

# ESXi 6.5
-rw-------    1 root     root     16022241280 Dec 27 16:18 mpx.vmhba34:C0:T0:L0

Новое именование не влияет на VMFS хранилища, подключенные по USB, однако теперь при проверке /dev/disks/ нужно быть внимательным и не пропустить все USB-устройства. Как и ранее, вы можете создавать разделы и форматировать такие устройства в файловую систему VMFS, но нужно использовать новое имя.

Проблема: не монтируются автоматически VMFS хранилища

Довольно часто, пользователи жалуются, что при подключении к ESXi 6.5 USB флешки, на которой уже имеется хранилище VMFS, оно автоматически не монтируется. Устройства отображается в /dev/disks, но само хранилище остается в офлайн режиме. Проблема видна в логе vmkernel.log.

2017-12-27T10:25:05.885Z cpu0:65593)VMWARE SCSI Id: Id for vmhba34:C0:T0:L0
0x50 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x41 0x53 0x32 0x31 0x31 0x35
2017-12-27T10:25:05.885Z cpu0:65593)ScsiDeviceIO: 9120: Get VPD 80 Inquiry for device «naa.5000000000000002» from Plugin «NMP» failed. Not supported
2017-12-27T10:25:05.885Z cpu0:65593)ScsiDeviceIO: 9167: Get VPD 86 Inquiry for device «naa.5000000000000002» from Plugin «NMP» failed. Not supported
2017-12-27T10:25:05.887Z cpu0:65593)ScsiDeviceIO: 7851: Could not detect setting of QErr for device naa.5000000000000002. Error Not supported.
2017-12-27T10:25:05.891Z cpu0:65593)ScsiDeviceIO: 8365: Could not detect setting of sitpua for device naa.5000000000000002. Error Not supported.
2017-12-27T10:25:05.898Z cpu1:65562)ScsiDeviceIO: 2948: Cmd(0x439500b60000) 0x1a, CmdSN 0x238 from world 0 to dev «naa.5000000000000002» failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.
2017-12-27T10:25:05.905Z cpu0:65593)LVM: 11136: Device naa.5000000000000002:1 detected to be a snapshot:
2017-12-27T10:25:05.905Z cpu0:65593)LVM: 11143: queried disk ID: <type 2, len 14, lun 0, devType 0, scsi 0, h(id) 4847995147196820166>
2017-12-27T10:25:05.905Z cpu0:65593)LVM: 11150: on-disk disk ID: <type 0, len 11, lun 0, devType 0, scsi 0, h(id) 8386732072863042940>
2017-12-27T10:25:05.914Z cpu0:65593)ScsiEvents: 300: EventSubsystem: Device Events, Event Mask: 40, Parameter: 0x43029e372700, Registered!
2017-12-27T10:25:05.914Z cpu0:65593)ScsiEvents: 300: EventSubsystem: Device Events, Event Mask: 200, Parameter: 0x43029e372700, Registered!
2017-12-27T10:25:05.914Z cpu0:65593)ScsiDevice: 4265: Successfully registered device «naa.5000000000000002» from plugin «NMP» of type 0

Как видно из лога, устройство почему-то определилось как снапшот. Такая проблема почему-то появляется только в ESXi 6.5 и исправляется довольно просто. Выведем список снапшотов:

# esxcli storage vmfs snapshot list
593b1a71-ade01512-51f6-f49d35640016
Volume Name: usbflash
VMFS UUID: 593b1a71-ade01512-51f6-f49d35640016
Can mount: true
Reason for un-mountability:
Can resignature: true
Reason for non-resignaturability:
Unresolved Extent Count: 1

С помощью VMFS UUID смонтируем хранилище:

# esxcli storage vmfs snapshot mount -u 593b1a71-ade01512-51f6-f49d35640016

Хранилище должно появится в /vmfs/volumes и отобразится в vSphere клиенте.

Создаем файловое хранилище VMFS5/VMFS6 на USB диске или флешке

Процесс создания VMFS5 или VMFS6 хранилищ аналогичен предыдущим версиям:

    1. Подключаемся к хосту ESXi по SSH
    2. Останавливаем службу USB arbitrator. Этот сервис используется для проброса USB устройств с хоста ESXi в виртуальную машину.# /etc/init.d/usbarbitrator stop
    3. Подключите USB устройство к хосту ESXi. После подключения USB устройства в журнале /var/log/vmkernel.log можно проверить наличие подключения и идентифицировать имя устройства(или через /dev/disks).
      USB диск должен определится как mpx.vmhbaXX или naa.X.# ls /dev/disks/
    4. Поставим GPT метку (предполагаем, что идентификатор устройства — naa.5000000000000002)#partedUtil mklabel /dev/disks/naa.5000000000000002 gpt
    5. Чтобы создать раздел, нужно знать начальный и конечный сектор (последний зависит от размер диска и GUID).
      Начальный сектор всегда 2048
      Метка GUID для VMFS — AA31E02A400F11DB9590000C2911D1B8
      Конечный сектор можно рассчитать с помощью формулы (используем цифры из getptbl):
    6. #partedUtil getptbl /dev/disks/naa.5000000000000002

      gpt
      15566 255 63 250069680
      15566 * 255 * 63 — 1 = 250067789
      Также можно рассчитать конечный сектор следующей командой:# eval expr $(partedUtil getptbl /dev/disks/naa.5000000000000002 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1

      250067789

    7. Создадим раздел VMFS (замените номер последнего сектора на свой)# partedUtil setptbl /dev/disks/naa.5000000000000002 gpt "1 2048 250067789 AA31E02A400F11DB9590000C2911D1B8 0"
    8. Отформатируйте раздел в файловой системе VMFS5 или VMFS6

VMFS5:
# vmkfstools -C vmfs5 -S USB-Datastore /dev/disks/naa.5000000000000002:1
VMFS6:
# vmkfstools -C vmfs6 -S USB-Datastore /dev/disks/naa.5000000000000002:1

USB хранилище должно появится в списке хранилищ в разделе Storage.

.
vmfs6 usb хранилище в esxi65

Вот как полностью выглядят команды и их вывод:

[root@esx6:~] partedUtil mklabel /dev/disks/naa.5000000000000002 gpt
[root@esx6:~] eval expr $(partedUtil getptbl /dev/disks/naa.5000000000000002 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
250067789
[root@esx6:~] partedUtil setptbl /dev/disks/naa.5000000000000002 gpt "1 2048 250067789 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 250067789 AA31E02A400F11DB9590000C2911D1B8 0
[root@esx6:~] vmkfstools -C vmfs6 -S USB-Datastore /dev/disks/naa.5000000000000002:1
create fs deviceName:'/dev/disks/naa.5000000000000002:1', fsShortName:'vmfs6', fsName:'USB-Datastore'
deviceFullPath:/dev/disks/naa.5000000000000002:1 deviceFile:naa.5000000000000002:1
ATS on device /dev/disks/naa.5000000000000002:1: not supported
.
Checking if remote hosts are using this device as a valid file system. This may take a few seconds...
Scanning for VMFS-3/VMFS-5 host activity (512 bytes/HB, 2048 HBs).
Creating vmfs6 file system on "naa.5000000000000002:1" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "USB-Datastore".
Successfully created new volume: 583b0efb-33b7ba1e-57e7-001fc69b9659

VMFS хранилище на USB дисках размером более 2Тб

Большие диски, размером более 2Тб все также не работают в ESXi 6.5. Лог такой:

2017-12-27T16:22:13.213Z cpu4:66004)WARNING: ScsiPath: 7481: Adapter Invalid does not exist
2017-12-27T16:22:13.246Z cpu7:65593)VMWARE SCSI Id: Could not get disk id for vmhba35:C0:T0:L0
2017-12-27T16:22:13.246Z cpu7:65593)ScsiDeviceIO: 9120: Get VPD 80 Inquiry for device «t10.WD______My_Book_1140____WMC1T2972871____» from Plugin «NMP» failed. Not supported
2017-12-27T16:22:13.246Z cpu7:65593)ScsiDeviceIO: 9167: Get VPD 86 Inquiry for device «t10.WD______My_Book_1140____WMC1T2972871____» from Plugin «NMP» failed. Not supported
2017-12-27T16:22:13.248Z cpu7:65593)ScsiDeviceIO: 7851: Could not detect setting of QErr for device t10.WD______My_Book_1140____WMC1T2972871____. Error Not supported.
2017-12-27T16:22:13.251Z cpu2:65563)ScsiDeviceIO: 2948: Cmd(0x439500b1fe80) 0x1a, CmdSN 0x6ce from world 0 to dev «t10.WD______My_Book_1140____WMC1T2972871____» failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.
2017-12-27T16:22:13.253Z cpu7:65593)ScsiDeviceIO: 8365: Could not detect setting of sitpua for device t10.WD______My_Book_1140____WMC1T2972871____. Error Not supported.
2017-12-27T16:22:13.253Z cpu7:65593)ScsiDevice: 3163: Failing registration of device ‘t10.WD______My_Book_1140____WMC1T2972871____’: Unsupported sector size:4096
2017-12-27T16:22:13.253Z cpu7:65593)ScsiEvents: 545: Event Subsystem: Device Events, Destroyed!
2017-12-27T16:22:13.253Z cpu7:65593)WARNING: NMP: nmp_RegisterDevice:851: Registration of NMP device with primary uid ‘t10.WD______My_Book_1140____WMC1T2972871____’ failed. Not supported
2017-12-27T16:22:13.253Z cpu7:65593)StorageApdHandler: 1062: Freeing APD handle 0x43029e213fd0 []
2017-12-27T16:22:13.253Z cpu7:65593)StorageApdHandler: 1147: APD Handle freed!

Опубликовано в VMWare

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

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