本文介绍了在 VMware ESXi 8.0 中使用 USB 驱动器作为数据存储的各种选项。使用基于 USB 的数据存储对于迁移、备份、测试或实验室环境非常有用。
请注意,VMware 不支持使用 USB 设备作为数据存储,因此在对敏感数据使用此方法时要小心。
USB 驱动器建议
在外形尺寸或 USB 驱动器方面没有任何限制。您可以使用小型 USB 闪存驱动器、大容量的 3.5 英寸 USB 硬盘驱动器或基于 USB 的外部固态驱动器。由于性能和耐用性问题,我不建议使用廉价的 USB 拇指驱动器作为数据存储。
先决条件
某些命令需要通过 SSH 访问 ESXi 主机,可以从vSphere Client > ESXi 主机 > 配置 > 系统 > 服务 > SSH > 启动或从ESXi 主机客户端 > 主机 > 管理 > 服务 > TSM-SSH > 启动 启用。启用后,您可以使用 SSH 客户端(如PuTTY )登录到 ESXi 主机。
步骤 1 – 禁用 USB 直通
将 USB 驱动器连接到 ESXi 主机时的默认行为是使设备可使用 USB 直通连接到虚拟机。您有 3 个选项可以禁用 USB 直通:
- 根据设备使用esxcli passthrough命令
- 根据每个型号使用USB 怪癖高级设置
- 完全禁用 usbarbitrator
选项 1 – 禁用每个设备的 USB 直通
第一个选项基于 USB 总线和供应商 ID。虽然此设置通常会在重新启动后保留,但当总线或设备 ID 发生变化时,它可能会丢失,这种情况可能发生在驱动器插入另一个端口或连接另一个 USB 设备并取代设备 ID 时。
- 将 USB 驱动器插入 ESXi
- 使用 SSH 连接到 ESXi 主机并以 root 身份登录
- 列出可用的 USB 设备并找到您的驱动器esxcli 硬件 USB 直通设备列表
- 请注意以下格式的连接 ID:Bus#:Dev#:vendorId:productId(例如1:4:1058:1140)
- 使用以下命令禁用 USB 直通:
esxcli hardware usb passthrough device disable -d 1:4:1058:1140
- 无需重新启动系统即可使配置生效
选项 2 – 使用 USB Quirks 禁用 USB 直通
第二个选项使用 USB Quirks 高级设置禁用特定型号(供应商 ID/产品 ID 组合)的 USB 直通。
- 将 USB 驱动器插入 ESXi
- 使用 SSH 连接到 ESXi 主机并以 root 身份登录
- 列出可用的 USB 设备。第一个数字是供应商 ID,第二个数字是产品 ID。
lsusb
- 要设置 USB Quirks,需要按以下格式指定 ID:0x DeviceID :0x VendorID (例如0x 1058 :0x 1140)
- 使用以下命令禁用 USB 直通(替换为步骤 3 中的 ID
esxcli system settings advanced set -o /USB/quirks -s 0x1058:0x1140:0:0xffff:UQ_MSC_NO_UNCLAIM
- 重新启动 ESXi 以使更改生效
选项 3 – 禁用 USB 仲裁器
可以从 UI 或 CLI 禁用 USB 仲裁器。
用户界面:
- 打开 vSphere Client
- 导航到ESX > 配置 > 系统 > 高级系统设置 ,然后单击 编辑…
- 搜索 USB.arbitratorAutoStartDisabled 并将值设置为1
- 重新启动 ESXi
- 将 USB 驱动器插入 ESXi
命令行:
- 使用 SSH 连接到 ESXi 主机并以 root 身份登录
- 停止 USB 仲裁器服务。
/etc/init.d/usbarbitrator stop
- 将 USB 驱动器插入 ESXi
- 重启后永久禁用 USB 仲裁器服务。
# chkconfig usbarbitrator off
- 无需重启
第 2 步 – 创建 VMFS 数据存储
当禁用直通时,您应该能够使用 vSphere Client 创建数据存储,方法是右键单击 ESXi 主机并选择操作 > 存储 > 新建数据存储…,或者从 ESXi 主机客户端中的存储 > 新建数据存储中创建。
如果驱动器未显示在“新建数据存储”向导中,请执行重新扫描(右键单击 > 重新扫描存储)并验证该设备是否列在“存储设备”中。如果这没有帮助,您必须使用 CLI 创建数据存储:
- 识别您的设备路径 (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
- 创建 VMFS 分区(GUID AA31E02A400F11DB9590000C2911D1B8)- 起始和结束扇区通过以下命令计算:
partedUtil "setptbl" "${DISK}" "gpt" "1 2048 $(eval expr $(partedUtil getptbl ${DISK} | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1) AA31E02A400F11DB9590000C2911D1B8 0"
- 使用 vmfstools 格式化分区
vmkfstools -C vmfs6 -S usbdrive ${DISK}:1
USB 数据存储现在应该出现在您的数据存储视图中。
其他提示
使用 ghettoVCB 将 USB 驱动器作为 ESXi 的备份使用外部驱动器通过
ghettoVCB创建虚拟机的备份。
复制到 USB 驱动器很慢 – 使用 vMotion 或 vmkfstools 使用
cp、mv 或 scp 将数据复制到 USB 驱动器很慢。相反,请使用 Storage vMotion 或 vmkfstools 实用程序将虚拟磁盘克隆到 USB 数据存储。
vmkfstools -i <src>.vmdk <dst>.vmdk
已知问题
“显示名称”中的设备 ID 错误
当您尝试识别磁盘时,请仔细检查您是否混淆了驱动器。当 ID 更改时,UI 中显示的名称不会更改。以下是突出显示的驱动器已被新设备推送到 mpx.vmhba 33 的示例。显示名称保持为 mpx.vmhba 32。
现有数据存储不会自动挂载
我在迁移过程中遇到的一个问题是,当您连接已包含 VMFS 数据存储的驱动器时,数据存储不会显示。您可以看到设备,但数据存储仍处于脱机状态。vmkernel.log 提示了此问题:
cpu0:65593)LVM: 11136: Device mpx.vmhba34:C0:T0:L0:1 detected to be a snapshot:
数据存储被检测为快照。使用 esxcli 获取 VMFS 快照列表:
# 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
现在应该可以访问数据存储了。
#esxi