从 VMWare ESXi 访问 USB 闪存驱动器
有时您可能需要将外部 USB 闪存驱动器(棒)直接连接到 VMWare ESXi 主机。例如,您可能需要它来复制虚拟机映像以将其发送到远程办公室(如果办公室之间的 WAN 通道速度较慢或负载较高)、将虚拟机文件备份到外部 USB 介质、将 ISO 文件或虚拟机映像复制到 ESXi 主机(最好不要使 LAN 过载)。在本文中,我们将展示如何将 USB 闪存驱动器/记忆棒作为 VMFS 数据存储连接到 ESXi 主机,或直接从 FAT32/NTFS 分区复制文件。
如何在 VMWare ESXi 中连接外部 USB 驱动器作为 VMFS 数据存储?
假设您想要将 USB 驱动器连接到 ESXi 主机并在其上创建 VMFS 数据存储,以方便地复制/移动虚拟机的文件和映像。
根据官方说法,VMWare 不支持外部 USB 驱动器作为 VMFS 数据存储。但是,它有效并且您可以使用它。此外,ESXi 不支持大于 2 TB 的 USB 设备。
在 VMWare ESXi 6.5 及更高版本中,将 USB 设备连接到主机的方法已更改。早期使用了几个驱动程序(xhci、ehci-hcd、usb-uhci、usb-storage)。然后一个 USB 驱动程序 (vmkusb) 取代了所有这些。
通过 SSH 连接到 ESXi 主机控制台;
-
停止USB 仲裁器。该服务用于将 USB 设备从 ESXi 主机直通到虚拟机(USB 直通):
# /etc/init.d/usbarbitrator stop如果您不希望 USB 仲裁器在主机重新启动后启动,请运行以下命令:
# chkconfig usbarbitrator off 将空 USB 驱动器连接到 ESXi 主机;
您可以在日志中识别 USB 驱动器的名称:/var/log/vmkernel.log 或使用 /dev/disks:
# ls /dev/disks/USB 磁盘通常命名为 mpx.vmhbaX 或 naa.X。
在 USB 驱动器上创建 GPT (GUID) 分区表:
# partedUtil mklabel /dev/disks/naa.5000000000000001 gpt然后在驱动器上手动创建一个分区。为此,请指定驱动器上的第一个和最后一个扇区。列出有关磁盘扇区的信息:
# partedUtil getptbl /dev/disks/naa.5000000000000001第一个扇区始终是2048。最后一个扇区的大小是根据 getptbl 输出计算的。在我的示例中,计算如下:
121597 * 255 * 63 -1 = 1953455804如果驱动器上有分区,您可以将其删除:
# partedUtil delete /dev/disks/naa.5000000000000001 1创建 VMFS 分区(此类分区的 GUID 始终为 AA31E02A400F11DB9590000C2911D1B8):
# partedUtil setptbl /dev/disks/naa.5000000000000001 gpt "1 2048 1953455804 AA31E02A400F11DB9590000C2911D1B8 0"然后您可以使用 VMFS6 格式化分区:
# vmkfstools -C vmfs6 -S USB-HDD-DSDatastore /dev/disks/naa.5000000000000001:1打开图形 VMWare vSphere Client 并转到存储。您的 USB 驱动器将出现在可用数据存储列表中。
如何将文件从 USB 驱动器 (NTFS/FAT32) 直接复制到 ESXi?
如果您不想将 USB 驱动器上的文件系统更改为 VMFS(有一个小技巧可以从 Windows 访问 VMFS),您可以从 ESXi 控制台访问 NTFS 或 FAT32 格式分区上的文件并复制所需的文件。
在将 USB 驱动器连接到 ESXi 主机之前禁用 USB 仲裁器服务。
要从 ESXi 访问 FAT32 格式的分区,您可以使用 mcopy 工具。要访问 USB 驱动器上的 NTFS 分区,请使用 ntfscat。最初也支持 Ext3 文件系统。基本限制是:
FAT32和Ext3分区可读写;
NTFS 驱动器是只读的(这意味着您可以将数据从 NTFS USB 驱动器复制到 ESXi 主机,但反之则不然)。
要将文件从 FAT32 USB 设备复制到 ESXi,请使用以下命令:
# /bin/mcopy -i "/dev/disks/naa.5000000000000001:2" ::/some.iso /vmfs/volumes/12345678-ddd654321-4321-aaaabbbb2222/iso/some.iso在哪里
/some.iso是 USB 驱动器上文件的路径。第二条路径显示将文件复制到 ESXi 主机上(例如,直接复制到 VMFS 数据存储)。
要将文件从 ESXi 复制回 USB,只需交换命令中的路径即可。
FAT32 的主要问题是它不支持超过 4 GB 的文件。所以复制虚拟机的VMDK文件是相当困难的。通常,您可以在复制之前将源文件分成几个部分(例如 3 GB):
# split -b 3221225472 /vmfs/volumes/xx/vm1/vm1.vmdk然后,您可以将所有部分复制到 USB 驱动器并将它们加入到目标 ESXi 主机上:
# cat vm1* > vm1.vmdk要将文件从 NTFS 格式的 USB 驱动器复制到 ESXi 主机,请使用以下命令:
# /bin/ntfscat -f /dev/disks/naa.5000000000000001:2" some.iso > /vmfs/volumes/12345678-ddd654321-4321-aaaabbbb2222/iso/some.iso您只能将文件复制到 ESXi,而不能复制回来。 NTFS 不能用 ntfscat 写入。


