Иногда в виртуальной инфраструктуре VMware vSphere возникает необходимость скопировать большой объем данных с хоста VMware ESXi. Например, нужно что-то загрузить на изолированный от общей сети хост или забрать виртуальные машины на флешке для переезда на другую инфраструктуру. Через USB сделать это гораздо быстрее, чем ждать пока все это пройдет по небыстрой сети предприятия. Вильям Лам сделал на этот счет полезную инструкцию.
Скопировать файлы с и на ESXi можно как на USB-накопитель в формате FAT32, так и в формате NTFS. Но сначала надо остановить службу USB Arbitrator Service, которая отвечает за проброс USB-устройств в виртуальные машины (passthrough). Делается это следующей командой:
/etc/init.d/usbarbitrator stop
Теперь можно воткнуть флешку, убедиться, что она примонтировалась (она должна быть в списке хранилищ по адресу /vmfs/volumes/) и выполнить следующую команду для копирования файла с USB-устройства в формате FAT32на хост ESXi:
/bin/mcopy -i "/dev/disks/${USB_KEY}:2" ::/MyFile /tmp/MyFile
Ну а вот так можно скопировать файл в обратную сторону - с хоста ESXi на USB-накопитель:
/bin/mcopy -i "/dev/disks/${USB_KEY}:2" /tmp/MyFile ::/MyFile
Минус тут в том, что для FAT32 размер файла на USB-устройстве может быть не более 2 ГБ, поэтому для перемещения виртуальной машины ее диск придется разбить на кусочки. Для этого в Linux и Mac OS существует следующая команда (размер кусочка указывается в байтах, в данном случае - 1 ГБ):
split -b 1073741824 [FILE-TO-BE-SPLIT]
После того, как файлы будут перемещены, их можно склеить следующей командой, указав имена кусочков через *:
cat [SPLITTED-FILES]* > [ORIGINAL-FILE-NAME]
Для файловой системы NTFS можно воспользоваться утилитой ntfscatдля копирования файлов. Если вы хотите скопировать файл с USB-устройства на хост ESXi нужно выполнить следующу команду:
/bin/ntfscat -f /dev/disks/${USB_KEY}:2 MyFile > /tmp/MyFile

