折腾NAS的人迟早会走到这一步一边是手头有一台性能不错的服务器已经装了ESXi上面跑着软路由、下载器和各种Docker服务另一边是眼馋DSM的相册备份、文件同步套件和整体生态不想再单独买一台物理NAS。于是在ESXi上创建一个DSM虚拟机再把物理硬盘透传进去就成了最自然的解法。不过这个操作看似简单实际踩坑点非常多引导镜像、网卡型号、直通方式、ESXi系统盘位置每一步都能让你白忙一个晚上。这篇文章把我自己的完整实验过程和教训整理出来希望能让你少走一些弯路。1. 为什么要把DSM跑在ESXi里还非得透传硬盘1.1 All in One的诱惑一台机器吃掉所有服务在说技术细节之前先聊聊动机。我现在的服务器是一台24小时开机的机器原本上面跑着软路由虚拟机、Windows测试虚机和几个Linux容器。服务器本身有8个硬盘位硬盘却一直处于闲置状态只作为ESXi的VMFS数据存储使用利用率不高。当时想补充NAS功能预算又不想再加一台设备干脆把DSM放进ESXi让这台服务器同时承担存储、虚拟机、Docker和轻量NAS的职责。这么做还有一个好处磁盘可以按需分配性能。DSM不是重负载场景和软路由、下载机共存在一台机器上完全没问题。但问题也随之而来——硬盘怎么给DSM才合理1.2 虚拟磁盘和物理硬盘直通用起来完全是两个东西如果你只是想在ESXi上体验一下DSM建虚拟机时直接“添加硬盘”让DSM使用一块虚拟磁盘VMDK确实很快。跑起来之后能装套件、建共享文件夹日常文件共享看不出明显毛病。但一旦你有真正的存储需求虚拟磁盘的问题就会暴露出来DSM看不到硬盘的SMART状态因为VMware层把它抽象成了虚拟SCSI设备硬盘休眠也没法控制因为ESXi会时刻保持磁盘活跃硬盘故障时没有任何提前预警等发现数据读不出来就晚了。透传就不一样。透传之后DSM虚拟机直接拿到物理硬盘的控制权DSM里的“存储管理器”能看到这块硬盘的温度、固件版本、SMART信息也能设置硬盘休眠。整块硬盘的数据读写路径绕过了VMware文件系统层性能更接近原生。对需要长年累月挂机的人来说这两种体验差别非常大。我画了个简单对比方便大家判断自己的需求维度虚拟磁盘透传硬盘SMART信息看不到能看到硬盘休眠控制不了可以由DSM控制性能损耗有一定损耗高IO场景明显接近原生ESXi可见性作为VMFS存储直通后ESXi不再管理虚拟机快照支持一般不支持迁移灵活性高固定绑定硬件如果你只是临时跑一跑、折腾一下虚拟磁盘够用如果打算把DSM当作长期存储方案透传硬盘基本是必须的。这也是我这篇文章核心要解决的问题在ESXi上创建DSM虚拟机并透传硬盘到底怎么操作才稳。2. 部署前的硬性检查直通需要主板和CPU配合很多人第一次做直通满怀期待地重启主机结果发现PCI设备列表里“切换为透传”这个按钮根本点不了或者透传后启动虚拟机直接死机。这往往不是操作问题而是硬件平台不支持。所以正式开工前必须做一次硬件体检。2.1 CPU和主板必须支持IOMMU别只看VT-xESXi本身只需要CPU支持虚拟化Intel VT-x或AMD-V就能跑虚拟机。但“PCI直通”属于I/O虚拟化需要芯片组的IOMMU能力Intel叫VT-dAMD叫AMD-Vi。直通的原理是把物理设备绕过Hypervisor直接交给虚拟机使用这个“绕过”动作必须由IOMMU完成。主板BIOS里如果没有打开VT-d/AMD IOMMU后面所有步骤都是白费。不同主板的开启路径不完全一样但大致在“高级”-“CPU配置”或“北桥配置”里。我的主板是某品牌的消费级板BIOS里选项叫“Intel VT-d”默认是关闭的开启后保存重启即可。如果BIOS里压根找不到这个选项基本可以判断这套平台不支持直通趁早放弃或换主板。另外有些服务器级别的主板虽然支持VT-d但可能存在IOMMU分组问题某个SATA控制器和显卡、网卡绑在同一个IOMMU group里直通时会互相干扰这种情况只能通过后续BIOS设置或运气解决。2.2 在ESXi里怎么确认SATA控制器可不可直通进入ESXi后可以通过vSphere Client的主机管理页面查看。路径是主机 - 管理 - PCI设备。这里会列出所有PCI设备找到带“SATA Controller”字样的设备看右侧的状态。如果显示“可用于直通”说明平台已经识别到IOMMU且该设备没有被ESXi核心驱动占用如果状态是“活动”说明当前被使用也可以尝试切换为直通但要注意可能影响ESXi启动。想用命令行确认的话可以在ESXi的SSH终端执行lspci | grep -i sata能看到SATA控制器的总线地址和名称配合Web界面检查即可。这里提醒一句ESXi默认SSH是关闭的需要在管理页面开启。不要为了省事直接跳过确认步骤等重启后才发现直通不可用再想回退又要折腾一轮。2.3 规划硬盘位置别让ESXi系统盘被直通“带走”这是整个操作里最容易被忽略、后果也最严重的坑。PCIe直通是整卡直通如果你把板载SATA控制器直通给DSM那么这块控制器上挂的每一块硬盘都不再被ESXi管理。如果ESXi系统盘恰好也插在这个SATA控制器下面重启之后ESXi就找不到系统盘了主机直接失联。我身边不少朋友都在这上面翻过车。所以规划硬盘位置的原则是ESXi系统盘尽量装到U盘或独立的NVMe SSD上。哪怕是速度一般的U盘只要系统盘就好因为ESXi会把系统加载进内存日常运行基本不依赖U盘写入。准备直通给DSM的机械硬盘单独接到需要直通的那个SATA控制器上并确保这个控制器下没有ESXi的数据存储。如果主板只有一个SATA控制器又想把所有SATA盘直通给DSM那么ESXi需要用U盘或NVMe启动并且ESXi的VMFS数据存储也要放在U盘/NVMe上。这样做虽然能运行但我自己不太推荐因为DSM虚拟机的引导盘和虚拟系统盘也需要数据存储全部挤在U盘上不稳定。这里的核心思路是把“ESXi启动依赖的存储”和“要透传出去的存储”彻底分离。你不想在折腾DSM的时候把宿主机自己搞死。3. 准备DSM引导镜像与创建虚拟机的关键参数可以看到整个部署流程是先有一个能启动DSM的引导镜像把它放到虚拟机的引导盘上再创建一台配置合理的虚拟机最后把物理硬盘挂进去并安装DSM系统。3.1 引导镜像的制作思路以及为什么要选BIOS传统SATADSM官方系统对硬件有严格校验普通PC的硬件无法直接引导安装。社区里有一套引导打包方法基本原理是生成一个特殊的小Linux环境在DSM内核启动前接管引导加载对应的硬件驱动和修改参数让DSM认为自己运行在官方NAS上。这个引导镜像需要根据你想要安装的DSM版本和虚拟机的硬件环境来选择尤其是网卡驱动必须匹配。制作时通常分三步根据DSM版本下载对应的引导生成所需的基础文件在配置文件中填入你虚拟机的网卡类型一般是e1000e和引导方式运行打包脚本生成img镜像。生成出来的是img格式ESXi不能直接挂载需要转换成VMware的vmdk格式。转换工具很多Windows下可以用磁盘镜像转换工具Linux下可以用命令行工具转换。转换完成后把生成的vmdk上传到ESXi数据存储作为虚拟机的一块磁盘。虚拟机固件类型建议选BIOS不要选UEFI。虽然新版引导能支持UEFI但BIOS的兼容性最好尤其在直通场景下少一个变量就少一个问题。硬盘控制器建议选VMware SATAAHCI。有些教程为了性能会选PVSCSI但DSM引导对PVSCSI的支持并不好实际使用中容易出现安装时找不到硬盘的问题。3.2 新建虚拟机时的详细参数参考在vSphere Client中新建虚拟机我最终采用的配置如下配置项参考值虚拟机兼容与ESXi版本一致即可比如ESXi 6.7选6.7及以后客户机操作系统Linux 3.x/4.x64位固件BIOSCPU2~4核给DSM拆照片索引或转码时尽量多分配内存4GB起步跑Docker和套件多就8GB网卡e1000eSCSI/SATA控制器VMware SATA (AHCI)引导盘1GB虚拟磁盘SATA接口安装盘可选DSM官方ISO可以挂在虚拟光驱也可以不挂这几个参数都来自我实测后的经验e1000e网卡能被绝大多数引导镜像识别PVSCSI则很容易让引导过程卡住。内存不要低于4GDSM 7日常占用就接近2G开几个套件后3G很常见太低会让界面卡顿。3.3 建议先用虚拟盘安装再挂直通硬盘创建虚拟机时我只加了一块1GB的虚拟磁盘作为引导盘另外再加一块20GB的虚拟盘当作DSM的系统盘。引导镜像放在1GB虚拟盘上DSM系统安装到20GB虚拟盘。等DSM能正常启动、进入系统我才会关机再添加直通硬盘。为什么要绕这一圈因为直通硬盘一旦被DSM当作系统盘安装系统就会被分区和写入如果中途引导坏了这块物理硬盘上已经有很多DSM数据恢复起来非常麻烦。先用虚拟盘验证引导、网络和系统版本都正常后面的直通只当作“加数据盘”处理可控性高得多。虽然多了一次关机操作但换来的是可回滚的第一步。如果这一步你只加了引导盘现在仍然不算晚。此外在后续添加快直通硬盘时DSM会在存储管理器中把它识别为“未初始化”硬盘此时可以创建存储池和共享文件夹。千万不要误点“初始化”否则会清空所有数据。这个步骤要仔细看清楚。4. 两种直通方式的选择PCIe整卡直通 vs RDM裸盘映射直通硬盘不是只有一种做法。准确地说ESXi下有两条路PCIe直通也叫PCI Passthrough和RDMRaw Device Mapping裸设备映射。两者最终都能让DSM直接使用物理硬盘但适用场景完全不同。4.1 PCIe直通适合整组SATA盘都要交给DSM的场景PCIe直通是把物理PCI设备整体分配给虚拟机。在NAS场景里通常就是把主板上那个SATA控制器AHCI Controller直接直通给DSM虚拟机。这样一来所有连在这个控制器上的硬盘都是由DSM直接管理的相当于主机上装了一张独立的SATA扩展卡只不过这张卡被DSM独占。优点很明显性能最好DSM能读到所有硬盘的SMART信息也支持硬盘休眠。缺点也很明显无法单独选择某一块硬盘进行直通控制器下所有设备都一起过去。如果控制器下还有ESXi的系统盘或其它数据盘也会同时被“带走”。另外直通后不能再对这个控制器做任何热插拔添加硬盘的操作因为虚拟机是独占硬件的需要关机再添加。在我的场景里主板有两个SATA控制器一个板载控制器挂了两块机械盘和一个SSD另一个PCIe扩展的SATA卡挂了四块机械盘。我把扩展卡直通给了DSM板载控制器留给ESXi和虚拟系统盘互不干扰这是很舒服的配置。4.2 RDM直通适合只透传部分硬盘的场景RDM的做法是ESXi不把物理硬盘做成VMFS数据存储而是通过一条映射记录让虚拟机把物理硬盘当作裸设备访问。你可以理解为在VMware里给硬盘开了一扇“后门”虚拟机直接读写物理盘但ESXi层仍知道这块盘的存在。RDM的最大优势是灵活你可以单独选择某块物理硬盘直通其它硬盘继续作为ESXi数据存储使用操作上也不需要重启主机不用整个控制器都让出去。缺点方面性能比PCIe直通略低一些SMART信息是否完整取决于ESXi版本和硬盘型号而且不推荐对RDM盘做虚拟机快照快照会打断裸设备映射。我自己在两个场景下会选择RDM一是只打算直通一两块机械盘不够一块SATA扩展卡二是主板没有多余SATA控制器但我不想直通整个控制器导致ESXi存储消失。4.3 直通操作步骤与验证命令PCIe直通操作路径在vSphere Client中进入“主机 - 管理 - PCI设备”找到目标SATA控制器点“切换为透传”然后重启ESXi主机重启后编辑DSM虚拟机点击“添加其它设备 - PCI设备”选择刚才透传的SATA控制器打开虚拟机电源进入DSM的存储管理器应能看到多块未初始化硬盘。RDM直通操作路径通过SSH登录ESXi执行命令查看物理硬盘设备路径ls /vmfs/devices/disks输出里以naa.开头的就是物理硬盘的标识例如naa.55cd2e414b3d5e0e。为目标硬盘创建一个RDM映射文件。例如vmkfstools -r /vmfs/devices/disks/naa.55cd2e414b3d5e0e /vmfs/volumes/datastore1/DSM/disk1.vmdk注意datastore1要替换成你的实际数据存储名称DSM/disk1.vmdk是映射文件的存放路径。编辑DSM虚拟机选择“添加硬盘 - 现有硬盘”找到刚才创建的disk1.vmdk并添加。开机后在DSM存储管理器中确认硬盘容量和型号非系统盘直接创建存储池即可。验证直通是否生效在ESXi命令行可以用esxcli hardware pci pcipassthru list查看设备状态是否为“Enabled”且属于某一台虚拟机。DSM里则可以查看存储管理器中的硬盘型号、序列号和SMART信息——如果能看到这些就说明透传成功。5. 开机安装DSM及失败排查直通配置好后接下来是安装DSM系统。这部分看似简单实际卡点很多我把自己遇到的问题和排查思路放在一起。5.1 局域网扫描不到DSM多半是网卡驱动没对上引导镜像启动后屏幕上滚动一堆日志最后停在booting kernel之类的界面这时用电脑打开官方局域网助手或访问查找页面却找不到任何DSM设备。第一次遇到这个情况我翻来覆去找原因最后发现是虚拟机网卡型号和引导镜像内置的网卡驱动不匹配。我的经验是虚拟机网卡先用e1000e这是Intel千兆网卡几乎所有主流引导镜像都内置了它的驱动。如果用VMXNET3VMware半虚拟化网卡虽然性能更好但很多引导镜像没有对应驱动自然获取不到IP。如果你已经使用了e1000e仍然找不到再检查一下几个点IP地址是否和电脑在同一网段如果DSM通过DHCP获取到其他VLAN的地址可以用端口扫描工具扫一下5000端口引导镜像里是否设置了MAC地址或IP参数有些固化的引导镜像会忽略DHCP虚拟机的网卡是否真的连接了vSphere里确认“已连接”勾选。5.2 安装进度卡在55%或提示更新失败如果局域网能找到DSM也顺利上传了.pat安装包但进度到55%左右提示“无法安装”或“更新失败”问题多半出在两个地方一是.pat版本和引导镜像版本不对应二是DSM安装过程中访问的目标硬盘有问题。DSM的安装包版本必须和引导镜像配套。比如引导镜像对应某版DSM你就非要装另一个不匹配的.pat很容易失败反过来也容易出现引导参数不匹配。所以下载安装包时一定要选择明确支持的版本不要盲目追新。硬盘层面如果你用RDM直通的物理硬盘上原本有分区表或其他系统的数据DSM安装程序可能无法完成分区。建议先用一个干净硬盘试装确认系统跑通之后再挂载正式数据盘。如果是PCIe直通整组硬盘同样建议先把部分硬盘拔下来只留一块目标盘进行首次安装。安装成功后再关机把其他硬盘插回去。这样可以最大限度地减少干扰。5.3 首次安装时务必确认“目标盘”选对DSM安装向导会让你选择数据传输方式或安装目标盘。如果你像我一样先去虚拟盘验证会把DSM安装到虚拟系统盘上这一步不要点错。点错了后续虽然可以通过重新安装改回来但可能会把直通盘原有数据清掉。我的操作习惯是在安装目标列表里先看容量确认目标盘容量和你想安装的物理盘容量一致再继续。如果列表里出现多块硬盘只选自己计划做系统盘的那一块其它都保持未选中状态。另一个容易忽略的点是安装完成后DSM会在所有存储池的盘上写入系统分区。如果你在安装阶段就已经把多块直通硬盘同时挂上了那么这些硬盘都会被DSM标记为系统盘后续想拆下来单独使用会很麻烦。所以我前面强调“先用虚拟盘安装再挂直通盘”为的就是让物理硬盘在DSM里只作为数据盘出现。6. 我踩过的几个坑和现在的稳定配置参考最后这部分我把自己踩过的坑汇总一下再给出当前我用下来比较稳的配置方案供参考。6.1 把ESXi系统盘放在被直通控制器下的教训这个坑我前面提过一次但值得单独说。当时我图省事把ESXi也装在板载SATA控制器下的SSD上另外两块机械盘也在这个控制器上。然后我满怀信心地启用了PCIe直通重启主机页面上看到的是断线一样的告警ESXi主机完全无法访问。折腾了一个多小时才意识到整个SATA控制器已经被直通给DSM虚拟机了ESXi的系统盘也一起“消失”了宿主机的Web管理界面自然起不来。最终解决办法是重装ESXi到U盘并把ESXi的数据存储也迁移到另一块NVMe盘上。这个教训让我养成了习惯凡是要直通某个PCI设备先检查这个设备的“下游”有没有ESXi自己的存储哪怕是一点点虚拟磁盘文件都不要放。如果你已经有一个SATA控制器可以整卡直通建议把ESXi系统盘放在独立的NVMe或USB存储上再去做直通。6.2 直通后虚拟机快照基本用不了备份要靠DSM自己直通盘有一个隐藏问题很多玩家习惯了VMware的快照功能以为ESXi虚拟机整机都能快照但直通设备例外。RDM盘虽然能添加进虚拟机但启用快照时ESXi会提示“包含虚拟磁盘的裸设备映射不支持快照”或者快照后直通盘的数据一致性无法保证。PCIe直通就更不用说了设备直接独占快照根本没有意义。所以我现在的备份策略是ESXi虚拟机的引导盘和系统盘小虚拟盘可以通过VMware定期做快照防止DSM配置坏了直通硬盘上的数据则依靠DSM自带的备份套件备份到另一块移动硬盘或另一台机器。虚拟机层面的“一键整机快照”对直通硬盘来说是伪需求别指望它能帮你救数据。6.3 当前稳定运行的虚拟机配置参考经过几次折腾我现在的DSM虚拟机配置如下可以当作一个参考起点项目配置虚拟机版本ESXi 6.7及以后兼容固件BIOSCPU2 sockets / 2 cores per socket共4核内存8GB网卡e1000eSATA控制器VMware SATA (AHCI)引导盘1GB虚拟磁盘SATA系统盘20GB虚拟磁盘SATA直通方式一块SATA扩展卡PCIe直通另有一块单盘用RDM启动顺序引导盘 - CD-ROM - 其它这套配置我只用了大约半年日常开照片备份、文件同步和几个监控套件负载不高时CPU占用在10%以下。如果你也想在这套虚拟机上玩Docker8GB内存比较舒服4GB也能跑但要盯紧内存。另外主机重启后DSM虚拟机不一定自动启动因为直通PCI设备需要时间准备。我通常在ESXi的“虚拟机启动/关闭”设置里把DSM虚拟机的启动延迟设为30秒让直通设备稳定后再开机。这个细节看着小但对直通场景来说非常关键不加的话偶尔会出现“找不到直通设备”导致DSM无法启动。最后再分享一个小技巧如果你打算长期使用RDM直通记得在DSM里开启硬盘休眠之前先确认这块盘不会被某个套件频繁访问。直通盘虽然能休眠但唤醒次数多了对硬盘寿命反而不好。我自己的机械盘一般设置20分钟无访问休眠SSD系统盘则从不休眠。平衡好性能和寿命DSM虚拟机用起来才真的省心。