ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ESXi 8.0.3添加USB外置硬盘:三种方案与避坑指南

ESXi 8.0.3添加USB外置硬盘:三种方案与避坑指南 ESXi主机后面插一个USB硬盘盒想着像在Windows上一样系统里多出一块盘这是我最早折腾虚拟化时踩过最深的坑。ESXi 8.0.3对USB外置硬盘真的没有想象中那么友好插上去vSphere客户端里“数据存储”什么反应都没有很多人第一句话就是“是不是盘坏了”其实不是而是ESXi默认压根就没打算把USB存储当成正规存储来用。这篇文章就是针对“ESXi 8.0.3添加USB外置硬盘”这个目标场景写的。如果你正在用小主机、软路由或者入门级服务器跑虚拟机手头不巧缺内置硬盘位准备拿一块USB移动硬盘扩展容量或者你想把外置硬盘直接给某台虚拟机单独使用这篇文章基本能覆盖你需要的思路、命令和避坑点。我会先从为什么插上不显示讲起再拆解三条可行路线最后把实操命令和常见问题一起列出来。1. 先把原理搞明白ESXi为什么对USB外置硬盘这么不友好很多人第一次玩ESXi都是从Windows或者Linux桌面迁移过来的习惯性认为外接硬盘插上就应该能被识别成存储。但ESXi作为虚拟化底层系统它的存储栈设计之初就是冲着企业级存储去的USB这种东西在它眼里属于“边缘设备”官方认证列表里压根不会出现USB移动硬盘。所以在动手之前我们需要先搞清楚它为什么不认盘这样才能知道后面该怎么绕。1.1 存储栈的“选择”USB不等于SAS/SATAESXi的数据存储datastore依赖于底层的存储设备驱动主流的存储类型是SAS、SATA、NVMe、iSCSI、FC这类经过VMware认证的存储路径。USB大容量存储设备在市售机器上确实能被ESXi的USB驱动识别为“外部USB设备”但识别归识别不代表它能直接参与VMFS数据存储的创建。在vSphere Client的“存储 设备”列表里你大概率能看到一个类似“Local USB Direct Attach Storage”的设备上面显示有容量但是界面里的“新建数据存储”向导可能就是不让你选它或者选完之后直接报错。原因就在于VMware没有把USB存储纳入VMFS的常规管理路径图形界面默认不开放这个能力。其实从操作系统层面看ESXi内部还是能看到这个设备的存在只是它在存储栈里被标记为“非受管媒体”或者“可用但没有持久性保证”的类型。这就像一个人进了公司大门但没有工牌门禁系统能拍到他的人却不给他开办公区的权限。后面我们讲的SSH命令行方案本质上就是绕过这个门禁手动把USB盘格式化成VMFS但绕过去不代表官方支持这一点一定要先有心理预期。1.2 两种使用场景决定了完全不同的做法关键点在于你要让这块USB外置硬盘“为谁服务”这个问题想清楚后面所有方案就清晰了。场景AUSB硬盘要作为某一台虚拟机的数据盘、备份盘或者下载盘虚拟机操作系统里直接能看到这块硬盘的容量和文件。这种情况走的是“USB设备直通”或者“虚拟机USB设备”路线你不需要把USB盘变成ESXi的datastore只需要让它穿透到VM内部。场景BUSB硬盘要成为ESXi主机的本地存储用来存放虚拟机的vmdk文件、ISO镜像让宿主机像使用一块内置SATA盘一样使用它。这种情况就需要把它手动挂载成VMFS数据存储属于我们常说的“官方不支持但可操作”的做法。绝大多数人实际需求是场景A却一直在尝试场景B的路子最后卡在“数据存储创建向导”里出不来。场景选错了后面全是无用功。我的建议是如果能走场景A尽量不要选场景B因为USB存储做ESXi本地存储的速度和稳定性都没有保障这一点后面会详细展开。2. 方案选型给虚拟机挂USB外置硬盘的三种路子搞清楚需求之后我们来看具体方案。ESXi 8.0.3环境里给虚拟机使用USB外置硬盘主要有三条路径USB控制器PCI直通、虚拟机直接添加USB设备、SSH手动挂载VMFS。每种路径的适用范围和操作成本都不一样下面逐个拆解。2.1 方案一USB硬件直通Passthrough性能最好但独占性最强硬件直通的意思是把宿主机物理上的一个USB控制器也就是PCIe设备完整地交给某台虚拟机虚拟机里的操作系统直接控制这个USB控制器宿主机不再管理它。这是性能最好的方式因为数据不经过ESXi的虚拟化层虚拟机拿到的几乎是原生硬件能力。这个方案适合大容量USB外置硬盘给一台虚拟机当数据盘的场景。比如你有一块8TB的3.5寸移动硬盘挂给一台Linux虚拟机专门做视频素材存储直通之后虚拟机里看它就是一块普通的SCSI磁盘可以自己格式化自己管理分区速度也很接近USB硬盘的真实传输上限。但缺点也很明显独占性极强。USB控制器一旦直通给某台虚拟机这台控制器上插的所有设备全部归这台虚拟机宿主机自己反而不能再用这些USB接口了。如果你的ESXi主机是靠USB键鼠或者USB网卡来管理的直通内置USB控制器之后可能面临宿主机断连的风险。所以很多人会选择加装一张独立的PCIe USB扩展卡只把这张卡直通给虚拟机保留主板自带的USB口给ESXi自己用。2.2 方案二虚拟机添加USB设备轻量方便但更适合中小容量这是vSphere Web Client里提供的最常规功能。在虚拟机编辑设置里添加“USB设备”然后从下拉列表里选择宿主机上已识别的USB外置硬盘、U盘或者读卡器设备直接挂到虚拟机的USB总线上去。虚拟机里会把它识别成一个USB大容量存储设备可以正常读写。这个方案的优点是操作简单不需要重启宿主机不用改BIOS也不用配PCI直通而且同一个USB设备可以来回重新分配给不同虚拟机灵活性高。缺点是它本质上走的是USB模拟通道性能会比PCI直通差一些而且宿主机重启、USB设备重新插拔之后设备映射关系容易丢失虚拟机可能需要手动重新挂载。所以它更适合你的USB硬盘只有1TB、2TB主要用来给虚拟机传文件或者做临时存储不太适合作为生产级别数据盘。2.3 方案三SSH挂载VMFS官方不支持只建议实验方案三是把USB外置硬盘变成ESXi主机本地存储的操作。由于图形界面默认不开放这个选项我们需要SSH登录ESXi底层通过命令把USB盘手动分区、格式化成VMFS文件系统之后它就会像一块内置盘一样出现在datastore列表里可以用来创建虚拟机、放ISO。说白了这就是“手动把USB设备骗进VMFS体系”的操作。ESXi的命令行工具并不会阻止你这么做能格式化成功也能正常使用但它不在VMware的官方支持范围内。一旦ESXi重启、升级USB存储的识别顺序变化这块盘可能出现无法自动挂载的尴尬局面。所以我反复强调这个方案只能拿来测试、临时放点不重要的数据不能用来托管核心业务的虚拟机。下面用一张表把三种方案的特点说清楚方案适用场景性能独占性操作难度风险等级PCI直通USB控制器大容量硬盘给单台VM长期使用高强设备完全归一台VM中需要改BIOS和配置中虚拟机添加USB设备U盘、移动硬盘给VM偶尔传输数据中弱可灵活切换低界面操作低SSH挂载VMFS想拿USB盘做ESXi本地存储中低不涉及VM独占高需要命令行高3. 实操一USB硬件直通的完整步骤如果你确定了要搞PCI直通而且你的USB外置硬盘容量大、需要长期稳定运行那这一节建议认真看。我按实际操作顺序来说每个环节都会解释原因避免你跟着命令敲完却发现白折腾。3.1 前置检查BIOS开启VT-d或IOMMUUSB控制器直通依赖CPU的IOMMU虚拟化能力。Intel平台对应的是VT-dAMD平台对应的是IOMMU必须在BIOS里先打开。很多品牌机和入门级小主机的BIOS默认关闭这个选项你需要在BIOS的“Advanced”或“CPU Configuration”里找到“Intel Virtualization Technology for Directed I/O”或“AMD IOMMU”把它设置为Enabled。开机进BIOS的方法不同品牌略有区别常见的是按Del、F2或者F12。实在找不到就直接搜你主板的“型号VT-d”比在BIOS里翻来翻去快得多。开完之后保存重启ESXi系统启动后可以用下面的命令验证esxcli hardware pci pcipassthru list输出结果里会列出所有支持直通的PCI设备。找到你的USB控制器那一行确认后面的“Passthru Capable”为true。如果你的USB控制器不在这里说明BIOS里VT-d没有正确开启或者CPU本身不支持该功能。另外提醒一句不要只看USB字样就以为找到了有些主板上有多个USB控制器建议把总线和设备号记下来方便下一步精准操作。3.2 在vSphere Client里把USB控制器标记为直通确认支持之后登录vSphere Web Client进入“主机 配置 PCI设备”点击“启用直通”在列表中勾选你的USB控制器设备然后确认。操作完之后ESXi会要求重启主机这一步必须做因为直通配置需要引导阶段重新分配IOMMU映射。重启完成后再回到刚才的PCI设备页面你会看到该设备已经处于“活动/直通”状态。接下来是关键编辑虚拟机设置添加“PCI设备”选择刚才启用的USB控制器确认后保存。这个时候虚拟机需要关闭电源因为PCI直通设备不支持在线热添加部分服务器主板支持热插拔但在消费级平台上很不可靠不值得赌。添加完成重启虚拟机登录虚拟机系统之后用lsblk或fdisk -l看外置硬盘会以物理盘形式出现比如/dev/sdb直接手动分区格式化就能用了。这里有个容易被忽略的点直通之后ESXi主机自己会失去对这个USB控制器的控制。如果你当时插着USB键盘、USB无线网卡它们会直接消失。所以强烈建议如果这台机器只有USB口没有BMC/IPMI远程管理不要直通主板自带的USB控制器稳妥的方法是先插一张独立PCIe USB扩展卡把外置硬盘接在这张卡上再直通这张卡。我曾经有一次直通了主板USB控制器结果SSH网线还好着但管理界面里所有识别不到USB设备只能去机房插显示器重来极其痛苦。3.3 遇到“设备无法直通”的常见错误实操中最常见的是这样一个报错添加PCI设备时vSphere提示“设备无法直通或者已被其他虚拟机占用”。拿到这个报错第一反应不应该是怀疑硬件而是检查三件事第一确认该USB控制器没有被ESXi的某个默认驱动预留第二确认没有其他虚拟机正在使用这个控制器第三确认虚拟机配置里是否预留了足够的MMIO空间。在ESXi里某些USB控制器默认被USB仲裁服务占用导致直通选项是灰的。可以在SSH里执行以下命令查看esxcli hardware pci pcipassthru list如果设备状态显示“Passthru not active”但本身Capable是true多半是虚拟机内存分配过大或者BIOS里MMIO空间不足。尝试给虚拟机减少内存预留或者在主板BIOS里开启“Above 4G Decoding”这是一个经验性解法成功率很高。4. 实操二USB硬盘变成ESXi本地存储的命令行方案现在说回很多人真正想做的事情让USB硬盘变成ESXi的一个datastore。图形界面走不通就只能SSH到底层用命令强行创建。这个方法我在多台ESXi 8.0的机器上试过能成功但每次操作都要想清楚自己在干嘛。4.1 先确认块设备识别名称SSH登录ESXi默认你已经开启SSH服务没有的话在vSphere Client的“服务”里先启动。第一步是让ESXi告诉我们USB硬盘对应的底层设备名称。ls /dev/disks/你会看到很多以naa.、t10.、mpx.vmhba开头的设备文件。USB外置硬盘通常会被识别成类似naa.50014ee2xxxx或者t10.USB DISK之类的名字。不确定哪个是USB盘的话用下面的命令看详细信息esxcli storage core device list | grep -B 5 -A 5 USB确认设备名之后再用partedUtil get查看当前分区表partedUtil get /dev/disks/naa.50014ee2xxxx正常情况下USB移动硬盘出厂可能是MBR分区或者GPT分区甚至完全没有分区。如果ESXi显示“unrecognized disk label”说明该盘没有可识别的分区表需要先格式化一层。4.2 手动分区与格式化VMFS我们需要把这块盘做成GPT分区表然后创建一个占用全部分区的分区再把它格式化成VMFS。注意这一步会清空硬盘上的所有数据操作前务必确认你挑对了设备。partedUtil set /dev/disks/naa.50014ee2xxxx msdos partedUtil create /dev/disks/naa.50014ee2xxxx gpt 1 2048 100% 0 vmkfstools -C vmfs6 /dev/disks/naa.50014ee2xxxx:1第一行是把盘改成MBR引导格式否则ESXi的partedUtil可能不认第二行是重写GPT分区表从2048扇区开始到盘尾结束类型为0第三行是把第一个分区格式化成VMFS6文件系统。三条命令跑完回到vSphere Client的“存储”页面刷新一下一般就能看到新的数据存储了。这里要解释一下为什么是VMFS6而不是VMFS5ESXi 8.x支持VMFS6作为默认版本有更好的空间分配效率对SSD有过优化虽然你用的是USB盘但能跑新版就尽量跑新版。如果你想创建的是虚拟机默认路径还需要去“存储”里把该数据存储的“复用性”调整一下但这一步不是必须的只是方便vSphere自动把新虚拟机放在这个存储上。4.3 关于重启生效的注意点与稳定性评估这个方案最大的坑在于重启后可能掉盘。USB存储的枚举顺序在每次开机时不固定ESXi加载驱动的时候不一定能识别表现为datastore不见了但设备列表里还能看到硬盘。遇到这种问题一般做法是重新vmkfstools -C但注意如果盘上已经有虚拟机数据重新格式化会清空所以这里有一个很微妙的地方已经建立的VMFS文件系统如果没被自动挂载不要急着重新格式化而是尝试用vim-cmd或者重启ESXi让系统重新自动扫描。实际上我个人的建议是不要拿USB盘放需要长期运行的虚拟机尤其是数据库、监控这类写频繁的负载。USB 3.0外接盒的随机IOPS实际表现远远差于内置SATA盘很多时候连机械盘的内置直连速度都跑不满。再加上延长线和USB控制器在长时间负载下容易产生偶发断连如果虚拟机正在写入关键数据时掉盘轻则文件系统损坏重则虚拟机直接挂掉。我就遇到过USB硬盘盒休眠后无法唤醒ESXi里虚拟机直接失去存储路径的惨案所以现在哪怕临时测试我也一定在USB存储上只放可重建的镜像和数据副本。5. 常见问题与排查技巧实录这一部分是我实际折腾中积累的一些问题记录。每个问题都不是网上随手能搜到的标准答案有一些完全是靠日志一点点翻出来的经验写出来希望能帮你少走弯路。5.1 插上USB硬盘vSphere Client的数据存储里看不到盘别慌先区分是“设备列表里看不到”还是“存储向导里选不到”。打开“主机 存储 设备”如果这里能看到USB设备但旁边的“新建数据存储”向导里不让选那说明设备是被ESXi识别到的只是默认不允许创建存储。以我的经验这种情况直接用SSH方案格式化挂载即可。如果设备列表里压根没有那就不是ESXi的问题而是硬件识别的问题。很多USB硬盘盒默认使用UASUSB Attached SCSI协议部分老主板USB控制器和硬盘盒主控之间的兼容性很差导致设备枚举失败。解决办法是找硬盘盒的BOT模式切换开关或者换一根线、换一个USB接口试试。别迷信USB 3.0就一定有更好的兼容性USB 2.0口反而经常最稳定。5.2 虚拟机添加USB设备时列表是空的在虚拟机编辑设置里添加“USB设备”下拉列表却是空的这个问题的根源通常是宿主机上的USB仲裁服务没有运行。SSH到ESXi执行/etc/init.d/usbarbitrator status如果没启动执行/etc/init.d/usbarbitrator start然后重新打开vSphere Web Client刷新页面再编辑虚拟机添加USB设备。另外老版本虚拟硬件比如VM版本13以下不支持USB 3.1控制器会限制部分USB设备的显形。建议把虚拟硬件升级到ESXi 8.0.3支持的版本并且先在虚拟机里创建一个“USB控制器”选择“USB 3.1”然后再添加“USB设备”。顺序反了有时候能加成功但USB设备会落到默认的USB 2.0控制器上速度半死不活。5.3 直通USB控制器后宿主机管理界面或SSH失联这个问题我在前文提过一嘴但值得单独拎出来强调。如果你直通的是主板自带的USB控制器而恰好这台ESXi的网卡不是PCIe有线网卡而是一张USB无线网卡或者你平时靠USB转串口管理设备那直通配置保存并重启的那一刻你和宿主机之间的管理通道可能就断掉了。更麻烦的是ESXi的Web管理端口如果绑定在USB网卡上重启后IP都会消失。所以在点“启用直通”之前做一次“后路检查”确认主机远程管理IP走的是板载千兆网卡或者独立PCIe网卡不是USB设备确认SSH服务登录也走的是同一条网络路径如果机器有IPMI/BMC接口赶紧把远程控制台打开备用。没有后路的话物理机旁边请先坐一个人随时准备按AltF2进DCUI操作。5.4 虚拟机Linux里能看到硬盘但读写到一半掉盘这种情况十有八九是供电问题不是ESXi的锅。2.5寸移动硬盘盒通过USB总线供电如果插在机箱前置USB口或者通过劣质HUB扩展供电纹波大大文件读写时电流波动就会触发USB控制器复位表现为虚拟机dmesg里刷USB disconnect日志。解决办法很简单硬盘盒尽量插主板后置USB口或者选用带独立供电的硬盘底座笔记本通过USB扩展坞接外置硬盘时扩展坞必须插电源适配器不要只靠Type-C供电。还有一个容易忽略的点是硬盘盒的休眠策略。很多成品移动硬盘盒为了省电会在几分钟无IO后自动休眠ESXi虚拟机下一次访问时硬盘盒重新上电需要几秒到十几秒时间期间虚拟机判断为IO超时某些文件系统可能直接标记盘为异常。几乎所有的USB硬盘盒都没法从宿主机端控制休眠能做的就是想办法禁用硬盘盒自身的休眠功能比如有些硬盘盒背面有小拨杆或者用官方工具改固件参数实在不行就换一个不带休眠功能的硬盘盒。5.5 USB设备在宿主机重启之后没有被自动挂载如果你走的是虚拟机USB设备方案宿主机重启后很可能出现虚拟机里的USB盘不见了但vSphere Web Client里能看到这个USB设备仍在宿主机上。这是因为ESXi的USB仲裁服务启动时外置硬盘还没有完成枚举或者虚拟机先于USB设备完成启动。给虚拟机设置“启动延迟”是个不错的补救办法在vSphere Client的虚拟机“编辑设置 虚拟机选项 高级 启动延迟”里填一个60秒左右的延迟值。如果你的USB硬盘本身启动就慢或者大容量盘在硬盘盒自检阶段需要额外时间这个延迟可以再放大一点。其实我还试过一种更稳的办法把USB设备的自动启动和ESXi主机的网络启动错开具体是说把自动启动虚拟机放到ESXi启动完成1分钟后再拉起来给USB设备足够的初始化时间。这个方法在多台机器上验证过比单纯调虚拟机启动延迟更可靠因为USB控制器驱动的加载顺序比VM快ESXi系统稳定后设备基本已经识别再启动虚拟机直接就能挂载成功。最后分享一个我的实际经验折腾完这么多轮我现在的习惯是能用内置SATA/NVMe盘解决的绝不碰USB外置盘。USB外置硬盘在ESXi环境里更适合做临时存储、离线冷备、跨虚拟机拷贝文件的“摆渡盘”不适合当永远的归属盘。如果你手里的机器确实没有多余的内置硬盘位那么优先考虑加装一块PCIe转接口或者M.2转SATA插槽比在USB存储上反复试探要省心得多。实在只有USB这条路那我奉劝你把这块盘定位成“实验盘”所有重要数据必须有另外一份备份。虚拟化环境里的任何“非官方支持”操作最后买单的往往都是数据本身。
返回列表