Подключение внешнего USB диска к VMware ESXi

Несколько раз возникала задача прямого подключения внешнего USB диска (флешки) к хосту VMware ESXi. Это может понадобится для офлайн передачи файлов виртуальных машин или ISO образов напрямую на ESXi (без использования сети) или для создания резервной копии ВМ на внешнем носителе. В этой статье рассмотрим, как подключить USB диск к ESXi и использовать его в качестве VMFS хранилища, или напрямую скопировать файлы с FAT32 или NTFS раздела на внешнем носителе.

Подключить внешний USB диск как VMFS хранилище в VMware ESXi

Внешний USB диск, напрямую подключенный к серверу ESXi, можно отформатировать в файловой системе VMFS. Такой USB накопитель можно использовать как обычное хранилище для копирования/переноса файлов виртуальных машин, так и для запуска ВМ непосредственно с внешнего носителя.

Официально VMware не поддерживает работу внешних USB устройств в качестве VMFS хранилищ, поэтому не рекомендуется использовать его для критических систем. Кроме того, ESXi не поддерживает USB накопителя размером более 2 Тб

Начиная с VMWare ESXi 6.5 при подключении USB устройств к хосту вместо нескольких разныx драйверов (xhci, ehci-hcd, usb-uhci, usb-storage), используется один USB драйвер vmkusb. По умолчанию при подключении USB накопителя к ESXi хосту, он делает его доступным для проброса в ВМ через USB Passthrough. Чтобы подключенный USB диск был доступен для локального использования самим хостом ESXi, нужно отключить этот режим:

  • Можно полностью отключить USB Passthrough для всех устройств, остановив службу USB arbitrator.
  • Либо сделать исключение в USB Passthrough для конкретной модели оборудования с использованием расширенных настроек USB Quirks.
    Вывести список подключенных USB устройств:
    lsusb
    Lsusb - получить ID USB диска в VMware
    Сформируйте ID своего USB диск в формате: 0xDeviceID:0xVendorID
    Отключите USB Passthrough для конкретной модели USB устройства, например:
    esxcli system settings advanced set -o /USB/quirks -s 0x0781:0x5571:0:0xffff:UQ_MSC_NO_UNCLAIM

Полностью отключить USB arbitrator можно из vSphere Client или из CLI:

  1. Откройте vSphere client ESXi хоста и перейдите в Manage -> System -> Advanced System Settings
  2. Найдите параметр USB.arbitratorAutoStartDisabled и измените значение на 1. USB.arbitratorAutoStartDisabled - отключить в настройках хоста ESXi
  3. Перезагрузите ESXi.

Чтобы отключить службу USB arbitrator из CLI:

  1. Подключитесь к консоли ESXi по SSH;
  2. Остановите службу USB arbitrator # /etc/init.d/usbarbitrator stop
  3. Перезагрузка не требуется
  4. Если вы хотите, чтобы USB arbitrator не стартовал после перезагрузки хоста, выполните команду:

    # chkconfig usbarbitrator off

В vSphere 7.x и 8.x можно создать VMFS хранилище на USB накопителе из графического интерфейса vSphere Client

  1. Подключите пустой USB накопитель к хосту ESXi;
  2. Перейдите в раздел Storage -> Devices и выполните Rescan
  3. Убедитесь, что в списке оборудования появился локальный USV накопитель.
  4. Нажмите New Datastore и выберите USB диск в качестве устройства. Следуйте шагам мастера чтобы создать VMFS хранилище на USB накопителе Создать VMFS хранилище на USB диск в VMware ESXi
  5. Таким образом, вы создадите новую VMFS датастору на USB диске.

Если ваше USB устройство не отображается в списке доступных в мастере New Datastore, или вы исопльзуете версию ESXi, младше чем 7.0, вы можете вручную отформатировать USB диск и создать на нем хранилище из командой строки:

  • Нужно получить имя USB диска, которое ему назначено на хосте ESXi. Воспользуйтесь одной из следующих команд:
    vdq -q
    vdq -q - узнать имя USB диска в консоли vmware
    Или
    ls /dev/disks/
    USB диск будет называться mpx.vmhbaX или naa.X. В нашем примере это mpx.vmhba32:C0:T0:L0
  • Для удобства, создайте переменную оболочки, в которой укажите полный путь к диску. Например: DISK="/vmfs/devices/disks/mpx.vmhba0:C0:T1:L0"
  • Создайте на USB yнакопителе GPT разметку: # partedUtil mklabel ${DISK} gpt
    Все данные будут удалены!
  • Теперь нужно создать раздел на диске. Для этого нужно указать начальный и конечный сектор на диске. Выведите информацию по секторам диска:
    # partedUtil getptbl ${DISK}
  • Начальный сектор всегда 2048. Номер конечного сектора можно вычислить командой : # eval expr $(partedUtil getptbl ${DISK}| tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') – 1

    В нашем примере это 104856254

    создать gpt таблицу разделов на диске

    Если на диске уже есть раздел, его можно удалить;
    # partedUtil delete ${DISK} 1
  • Создайте VMFS раздел (GUID такого раздела всегда AA31E02A400F11DB9590000C2911D1B8 ):
    # partedUtil setptbl /${DISK} gpt "1 2048 104856254 AA31E02A400F11DB9590000C2911D1B8 0"
    partedUtil - создать VMFS раздел на диске
  • Теперь можно отформатировать этот раздел в файловой системе VMFS6: # vmkfstools -C vmfs6 -S USB-HDD-DSDatastore ${DISK}:1
    vmkfstools - отформатировать диск в VMFS
  • Откройте графический веб клиент VMWare и перейдите в раздел Storages. Ваш USB накопитель появится в списке доступных датостор. USB диск доступен как VMFS хранилище в VMware

Подключение USB накопителя с VMFS к ESXI

При подключении USB диск с VMFS файловой к ESXi хосту, он должен автоматически определиться и появится в списке доступных датастор.

Выведите список хранилищ, которые определились как снапшоты:

esxcli storage vmfs snapshot list

Найдите в списке ваш USB диск и смонтируйте его по VMFS UUID:

esxcli storage vmfs snapshot mount -u <uuid>

Теперь внешнее USB хранилище должно появится в веб интерфейсе.

Прямое копирование данных между ESXi и USB диском

Если вы не хотите менять файловую систему USB накопителя на VMFS, вы можете из консоли ESXi получить доступ к файлам на файловой системе NTFS или FAT32 и скопировать нужные файлы.

Перед подключением USB диска к ESXi хосту не забудьте выключить службу USB arbitrator.

Для доступа к FAT32 разделам с ESXi можно использовать утилиту mcopy , а для доступа к NTFS разделу на USB – ntfscat (доступна в версиях ESXi 5.x и 6.x). Также нативно поддерживается файловая система ext3. Основные ограничения:

  • FAT32 и Ext3 разделы доступны на чтение и запись;
  • NTFS диски доступны только на чтение (т.е. вы можете скопировать файлы с USB накопителя с NTFS на ESXi хост, но не наоборот).

Чтобы скопировать файл с USB устройства с FAT32 на ESXi, используйте:

# /bin/mcopy -i /dev/disks/mpx.vmhba0:C0:T1:L0:1 ::/some.iso /vmfs/volumes/46b2f3eb-ced454321-1234-111122223333/iso/some.iso

где /some.iso – путь к файлу на USB диске. Второй путь показывает куда поместить файл на хосте ESXi (например, сразу в VMFS хранилища).

Для обратного копирования с ESXi на USB просто поменяйте местами пути в команде.

Основная проблема FAT32 – не поддерживаются файлы более 4 Гб. Поэтому довольно сложно скопировать vmdk файлы виртуальных машин. Как правило перед копированием исходный файл можно разбить на части (например, по 3 Гб):

# split -b 3221225472 /vmfs/volumes/xx/vm1/vm1.vmdk

Теперь можно скопировать все куски на USB накопитель, а на целевом хосте ESXi собрать их:

# cat vm1* > vm1.vmdk

Для копирования файла с USB диска с NTFS на ESXi хост используется команда:

# /bin/ntfscat -f /dev/disks/mpx.vmhba0:C0:T1:L0:1 some.iso > /vmfs/volumes/46b2f3eb-ced454321-1234-111122223333/iso/some.iso

В новых версиях ESXi (7.x и 8.x) утилита ntfscat отсутствует, поэтому если нужно скопировать файл между ESXi и NTFS, проще выполнить копирование по сети. Подключите USB накопитель к любому компьютеру (будь то Windows или Linux) и скопируйте необходимые файлы с помощью scp / WinSCP или аналогов.


Предыдущая статья Следующая статья


Комментариев: 11 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)