На сайте проекта virten.net появилось отличное руководство о том, как правильно настроить USB-накопитель (обычную флэшку), подключенный к хосту VMware ESXi 8.0 в качестве датастора, откуда можно запускать виртуальные машины. Для производственной среды этого делать, само собой, не рекомендуется, а вот для тестирования различных возможностей хоста vSphere данная инструкция может оказаться очень полезной.
Итак:
Рекомендации по выбору USB-накопителя
Касательно форм-фактора или типа USB-накопителей нет никаких ограничений. Вы можете использовать маленькие флешки USB, большие жесткие диски USB 3.5" с высокой емкостью или внешние твердотельные накопители на базе USB. Из-за проблем с производительностью и надежностью, не рекомендуется использовать дешевые USB-флешки для хранилищ.
Предварительные условия
Некоторые команды требуют доступа по SSH к хосту ESXi, который можно включить из vSphere Client:
После этого вы можете зайти на хост ESXi по SSH с помощью любого клиента, например, PuTTY.
Шаг 1 - отключаем USB Passthrough
Дефолтное поведение хоста ESXi при присоединении USB-накопителя к хосту - дать возможность его проброса в виртуальную машину через механизм USB Passthrough. Поэтому нам нужно отключить этот механизм.
Есть 3 способа это сделать:
На базе устройства с помощью команды esxcli passthrough
На базе модели с использованием расширенных настроек USB quirks
Полностью отключить его для всех устройств, отключив сервис usbarbitrator
1 - Отключаем USB Passthrough на базе устройства
Этот способ основан на параметрах USB Bus и Vendor ID. Эта настройка сохраняется при перезагрузке, но учтите, что она может перестать работать в условиях, когда изменяются идентификаторы Bus ID или Device ID (например, вы воткнете флэшку в другой порт, либо будет присоединено другое устройство на время отсутствия флэшки в порту).
Итак, втыкаем USB-накопитель в хост ESXi и соединяемся с ним по SSH как root. Выводим список USB-устройств командой:
esxcli hardware usb passthrough device list
Для следующей команды вам потребуется записать параметры четырех выделенных колонок в формате Bus#:Dev#:vendorId:productId (например, 1:4:1058:1140).
Отключаем проброс для устройства:
esxcli hardware usb passthrough device disable -d 1:4:1058:1140
После этого перезагружать хост ESXi не требуется.
2 - Отключаем USB Passthrough, используя USB Quirks
Второй вариант отключает USB Passthrough для конкретной модели (сочетание идентификатора производителя и идентификатора продукта) с использованием расширенных настроек USB Quirks.
Вставьте USB-накопитель в ваш ESXi, подключитесь к хосту ESXi с использованием SSH и войдите под root. Далее просмотрите доступные USB-устройства. Первое число - это идентификатор производителя, второе число - идентификатор продукта:
lusb
Для установки USB Quirks нужно указать ID в следующем формате (см. скриншот выше): 0xDeviceID:0xVendorID (например, 0x1058:0x1140).
Отключите USB passthrough, используя следующую команду:
esxcli system settings advanced set -o /USB/quirks -s 0x1058:0x1140:0:0xffff:UQ_MSC_NO_UNCLAIM
Здесь уже нужно перезагрузить хост ESXi для применения изменений.
3 - Отключаем USB Arbitrator
Перед началом процедуры не втыкаем флэшку в сервер.
Заходим в клиент vSphere Client, идем в ESX > Configure > System > Advanced System Settings и нажимаем Edit... Далее найдем параметр USB.arbitratorAutoStartDisabled и установим его в значение 1:
После этого перезагружаем хост ESXi и уже после этого втыкаем флэшку в сервер.
То же самое можно сделать с помощью CLI-команды через SSH (после нее можно уже втыкать флэшку):
/etc/init.d/usbarbitrator stop
Также можно отключить USB Arbitrator следующей командой, которая будет применена после перезагрузки хоста:
# chkconfig usbarbitrator off
Шаг 2 - создаем VMFS Datastore на флэшке
После того, как вы отключили проброс USB, можно создавать датастор через vSphere Client, кликнув правой кнопкой на хосте ESXi и выбрав Actions > Storage > New Datastore... (в ESXi Host Client это делается в разделе Storage > New Datastore).
Если ваше устройство не отображается в мастере New Datastore, нужно сделать ресканирование хранилищ (опция Rescan Storage по правому клику) и убедиться, что устройство присутствует в списке.
Если и это не помогло, то можно попробовать создать датастор с помощью командной строки. Находим путь к устройству (Device Path в формате mpx.vmhba##). Для этого запускаем команду:
esxcli storage core device list |grep '^mpx' -A3
В выводе команды вы сможете идентифицировать устройство по его размеру:
Если у вас несколько устройств одного размера, то после подключения нужного вам устройства загляните в лог /var/log/vmkernel.log и посмотрите там наличие вот такой записи:
vmkernel: Successfully registered device "mpx.vmhba34:C0:T0:L0" from plugin "NMP" of type 0
Это и есть ваша флэшка. Теперь создаем переменную с этим устройством:
DISK="/vmfs/devices/disks/mpx.vmhba34:C0:T0:L0"
После этого создаем метку для данного устройства:
partedUtil mklabel ${DISK} gpt
Теперь с помощью утилиты partedUtil создадим раздел с идентификатором GUID=AA31E02A400F11DB9590000C2911D1B8:
После этого ваш том, созданный на флэшке, появится в списке датасторов хоста.
Для бесплатного резервного копирования виртуальных машин можно использовать скрипт ghettoVCB.
Если вы заметите, что скорость копирования на/с датастора с помощью команд cp, mv или scp очень медленная, то вы можете использовать механизм Storage vMotion или утилиту vmkfstool для копирования данных.
Например, вот так можно склонировать VMDK-диск:
vmkfstools -i <src>.vmdk <dst>.vmdk
Известные проблемы
Когда вы пытаетесь определить диск, дважды проверьте, что вы не перепутали свои накопители. Имя, отображаемое в пользовательском интерфейсе, не меняется, когда меняется идентификатор. Вот пример, где выделенный диск был перенесен на виртуальный адаптер mpx.vmhba33 как новое устройство. Отображаемое имя при этом остается старым - mpx.vmhba32.
Существующие датасторы не монтируются автоматически! То есть, если на вашей флэшке уже есть тома VMFS, то они не будут видны при ее подключении. В этом случае датастор будет offline, а в логе vmkernel.log вы увидите вот такое сообщение:
cpu0:65593)LVM: 11136: Device mpx.vmhba34:C0:T0:L0:1 detected to be a snapshot:
То есть датастор определяется как снапшот. Список снапшотов вы можете вывести командой:
# esxcli storage vmfs snapshot list 583b1a72-ade01532-55f6-f44d30649051 Volume Name: usbflash VMFS UUID: 583b1a72-ade01532-55f6-f44d30649051 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 583b1a72-ade01532-55f6-f44d30649051