ESXi挂载NAS存储完整指南:NFS配置、权限避坑与性能评估
2026/9/17 3:32:21 网站建设 项目流程

1. 先搞明白:ESXi吃NAS存储,到底图什么

最近好几个朋友问我同一个问题:在VMware ESXi里怎么添加NAS存储?有的刚入坑虚拟化,手里一台旧服务器装了ESXi 6.7,本地硬盘不够用;有的家里有群晖或飞牛NAS,想让虚拟机直接跑在NAS上;还有公司里预算有限,不想上SAN,就想用现成的NAS撑起测试环境。

先说清楚一个概念:ESXi支持三种主流存储形态——本地磁盘、SAN存储(FC/iSCSI)、NAS存储(NFS)。本地盘很好理解,ESXi装在哪个盘、虚拟机就放哪个盘。SAN走的是专用存储网络,性能好但贵,中小环境基本不考虑。NAS存储走的是普通以太网,通过NFS协议把远程共享目录挂载成ESXi的数据存储,虚拟机文件直接落在NAS上。

很多人会有个疑问:虚拟机文件放NAS上,和放在本地盘上有什么区别?区别在于灵活性和成本。NAS存储是共享存储,也就是说你有多台ESXi主机,可以同时把这个NFS共享挂载上来,配合vMotion做虚拟机热迁移、配合HA做故障切换,这些高级功能都依赖共享存储。而本地盘做不到这些,一台ESXi挂了,上面的虚拟机就全没了。

家里或小公司的场景更现实:一台普通PC装了ESXi,跑了软路由、下载机、智能家居控制台几个虚拟机,本地240G固态很快就满了。这时候把一台闲置NAS挂给ESXi,容量瞬间多出几个T,不香吗?这大概也是为什么“家用NAS可以当成小型服务器用吗”这类问题总有人搜。

不过这里我要泼一盆冷水:NAS存储不是万能的。家用NAS跑千兆网络,实际带宽也就110MB/s左右,跑普通Linux虚拟机、轻量应用完全够用,但数据库、高IO业务就别往里放了。万兆网络能跑到500MB/s以上,体验会好很多,但家用NAS支持万兆的型号不多。先评估好自己的业务负载,再决定虚拟机放不放NAS上。

开门见山,这篇内容就是把ESXi挂NAS这条路走通,从选协议、配共享、Web界面操作、命令行操作,到我最常被问到的那些报错和坑,一次性讲完。

2. 动手前的准备:网络、共享目录和权限,一样都不能少

添加NAS存储不是简单填个IP就能完事。ESXi要能访问NAS,得满足几个前提条件,按顺序来。

2.1 网络规划:管理网络和存储网络尽量分开

ESXi上默认只有一个管理网络(Management Network),即vmk0,IP地址是安装ESXi时配置的。添加NAS存储时,ESXi会通过某个vmkernel网口去访问NAS。简易环境里直接用管理网口挂载NFS也能工作,流量和管理流量混在一起,但生产环境建议单独建一个vmkernel网口,分配给存储网段。

具体操作:在ESXi的Web界面里,导航到“网络” -> “VMkernel NIC” -> “添加VMkernel NIC”,选择已有的标准交换机或分布式交换机,新建一个端口组,VLAN按需设置,勾选“NFS”服务,配置一个独立网段的IP,比如NAS在192.168.10.0/24网段,就给vmk1配个192.168.10.10。

为什么建议分开?因为NFS流量是连续的读写,如果和管理流量混跑,一条链路抖动或打满,管理界面可能都进不去。我自己有过一次惨痛教训:家里一台ESXi,NFS和管理的IP在同一个网段同一个交换机,NAS做磁盘校验时CPU占用高,NFS传输几乎占满千兆带宽,结果vSphere Client直接卡到超时。后来把存储流量单独划到另一个VLAN,管理界面再也没卡过。

ESXi每个标准交换机的负载均衡策略默认是“基于源虚拟端口”,流量是按虚拟端口来Hash的,两个vmk网口如果不做绑定,也没法自动负载均衡。所以别以为建了两个网口流量就会自动分摊,实际走哪个物理口,得看上游交换机怎么配。简单环境一个网口就够了,别过度设计。

2.2 NAS端创建共享目录并开启NFS

这一步在NAS管理界面操作。以群晖为例,打开控制面板 -> 共享文件夹,新建一个专用的共享目录,比如命名为esxi-nfs;然后控制面板 -> 文件服务,启用NFS服务。在共享文件夹的“编辑” -> “NFS权限”里新增一条规则,填ESXi管理网段(或存储网段),权限选“读写”,勾选“启用异步”、“允许来自非特权端口的连接”这两个选项。

“允许来自非特权端口的连接”这一项特别关键,它对应的是NFS挂载参数里的insecure选项。ESXi的NFS客户端默认源端口是>1024的,如果NAS端不允许非特权端口,挂载会直接报“权限不足”或“挂载失败”。飞牛fnOS的操作为类似,在“网络服务” -> “NFS”里启用服务后,到存储空间的共享目录设置里添加允许访问的IP段即可。

权限设置还有一个坑:很多NAS系统默认给NFS设置了root_squash,意思是来自root用户的请求会被映射成nobody。ESXi的NFS客户端是以root权限来IO的,如果共享目录的所有者是admin(uid 1024),ESXi写文件时会被降权,导致无法创建文件或写不进去。常见解决办法是给存储目录设置no_root_squash,或者干脆把目录所有者设为root。群晖上不好直接在界面上设置no_root_squash,得通过NFS权限的高级配置,或者在SSH命令行里改/etc/exports文件。飞牛和威联通的操作大同小异,搜索“exports 配置”、“NFS no_root_squash”就能找到对应方法。

2.3 NFS版本选择和兼容性

ESXi 6.7支持NFS 3和NFS 4.1两种协议,ESXi 7.0及8.0默认更倾向于NFS 4.1,但仍然兼容NFS 3。如果你的NAS是群晖等主流品牌,NFS 4.1通常没问题。但一些小众NAS系统、路由器自带的NAS功能,或者自己用Ubuntu搭建的NFS服务器,有时只支持NFS 3,此时必须在挂载时显式选择NFS 3,否则会报“不支持的NFS版本”或“无法挂载”。

我踩过的坑是这样的:有一台自己组装的NAS,系统是Debian手动配的NFS服务,默认只开NFS 4.2(Debian 12默认nfsd版本包含4.2),ESXi 6.7只支持到4.1,直接挂载失败,提示“NFS 4.1 mount failed”。后来在/etc/default/nfs-kernel-server里把RPCNFSDOPTS改成"--nfs-port 2049 --vers 3 --vers 4 --vers 4.1 --vers 4.2",重启nfs服务后,ESXi选择NFS 3挂载才成功。如果你用ESXi 8.0,虽然也支持NFS 3,但默认NFS 4.1,报错时优先检查一下NAS的NFS版本。

NFS版本ESXi支持情况特点适用场景
NFS 36.x/7.x/8.x 全部支持简单稳定,无状态协议,兼容性最好老NAS、自建NAS、兼容性优先
NFS 4.16.x/7.x/8.x 支持有状态,支持锁、安全增强新版群晖、威联通等企业级NAS
NFS 4.2ESXi不支持服务端可能默认启用Debian 12自建NFS需注意

提示:ESXi 8.0挂NFS 4.1时,vCenter里要确保“NFS 4.1”选项勾选,且NAS端要支持相同版本。如果NAS只有NFS 3,则选NFS 3,不要强行用4.1。

2.4 NAS存储空间和性能预估

挂载之前算一下NAS的空间和性能是否满足需求。假设你要在这块存储上跑3个虚拟机,每个虚拟机系统盘用60G,数据盘各200G,那实际需要大约800G空间。NFS本身不做精简,ESXi创建vmfs或直接挂载后,虚拟机的vmdk文件都是实际占用NAS空间的。

性能方面,如果你把ESXi本地的swap、日志都放到NAS上,IOPS消耗会明显增加。我的建议是:ESXi的日志(/scratch)和虚拟机的swap文件尽量留在本地,NFS存储只放虚拟磁盘。这样既保证了性能,又避免因为网络抖动导致ESXi主机失联。可能有人觉得“日志没多大,放NAS无所谓”,但ESXi主机在写入日志时如果遇到网络阻塞,会影响整个主控进程,这个风险没必要承担。

3. Web Client图形化添加NFS存储的完整过程

环境准备好之后,实际添加过程就清晰了。下面按ESXi 7.0/8.0的Web Client界面来写,ESXi 6.7的HTML5界面大同小异。

3.1 从ESXi主机界面添加数据存储

登录ESXi的Web管理界面(如果是vCenter管理多台主机,就在vCenter里操作),左侧导航栏选中目标主机,点“存储” -> “数据存储”,然后点“新建数据存储”。

弹出的向导里,第一项是选择类型,这里有两个选项:为ESXi创建VMFS数据存储、挂载NFS数据存储。选“挂载NFS数据存储”。

之后要填这些关键信息:

  • 名称:给数据存储起个名字,比如NAS-NFS-01,尽量只用字母数字和连字符,不要用中文。
  • 服务器:NAS的IP地址,建议用固定IP而不是主机名,避免DNS解析问题。
  • 文件夹:共享路径,群晖根目录下的共享文件夹直接填/volume1/esxi-nfs,飞牛填/vol1/1000/esxi-nfs,Ubuntu NFS服务器填/srv/nfs。注意这个路径是NAS上的绝对路径,不带IP。
  • NFS版本:下拉选项有NFS 3和NFS 4.1,根据前文检查结果选。
  • :如果NAS在AD域环境里才用,一般留空。

点“下一步”之后,ESXi会尝试连接NAS并验证路径,成功会显示“已连接到NFS服务器”,然后确认配置即可。

3.2 挂载后的验证和虚拟机部署

挂载成功后,在“存储” -> “数据存储”列表里会看到新加的NFS卷,状态显示“正常”。此时可以点进去看看,里面应该自动创建了一些系统目录,比如esxi-vms目录(ESXi会自动创建用于放虚拟机的目录)。

验证最稳妥的办法是直接在这一块新存储上创建虚拟机。右键数据存储 -> “新建虚拟机”,选择“从虚拟机创建”或“新建虚拟机”,把系统镜像ISO上传到该数据存储(或者用已有的ISO库),然后按正常流程安装系统。

如果创建虚拟机时下拉菜单里选不到新加的存储,先刷新一下浏览器页面,或检查主机是否显示“已连接”。偶尔会出现存储卷重复扫描后未刷新的情况,点“存储” -> “重新扫描存储器”即可。

3.3 配置多路径和高级参数(生产环境才需要)

对于生产环境,如果NAS有多块网卡且支持多通道NFS,可以在ESXi的高级系统设置里调整NFS.MaxVolumes(默认256,一般不用改)和NFS.HeartbeatFrequency(心跳频率,默认12秒,网络差的地方可以降低到4秒)。这些参数在主机 -> “配置” -> “高级系统设置”里修改。

多路径方面,NFS 4.1支持多路径(Multipath),也就是说两台ESXi主机可以通过多个vmk网口同时挂载同一个共享,实现带宽叠加和故障切换。但前提是NAS端配置了多个IP,且网络设备支持。家用环境我基本不建议上多路径,复杂度和回报不成正比,千兆网络单条链路足够,万兆也一条就行。

4. 如果只有命令行:esxcli方式添加NAS存储

部分场景下没有图形界面,比如ESXi主机配置了DHCP但Web服务端口被防火墙挡了,又或者你只有SSH权限,那就得用命令行。ESXi提供了esxcli storage nfs命令组,功能很完整。

4.1 查看当前NFS挂载情况

先看现有的NFS存储列表:

esxcli storage nfs list

输出结果会显示每个挂载点的卷名、远程主机、共享路径、版本、是否可写等信息。如果NAS类型是NFS 4.1,最后还会显示相关安全配置。

4.2 添加NFS数据存储

添加NFS 3挂载:

esxcli storage nfs add --type nfs --host 192.168.10.20 --share /volume1/esxi-nfs --name NAS-NFS-01

如果NAS支持NFS 4.1,需要加--nfsvers 4.1

esxcli storage nfs add --type nfs --host 192.168.10.20 --share /volume1/esxi-nfs --name NAS-NFS-01 --nfsvers 4.1

添加成功后可以用esxcli storage nfs list确认状态。所有参数都可以用esxcli storage nfs add --help查看。

4.3 删除NFS数据存储

删除之前确保该存储上没有运行中的虚拟机,否则会报错或导致虚拟机异常。强制卸载:

esxcli storage nfs remove --name NAS-NFS-01

这个命令只会在卷不存在时提示错误。如果虚拟机还放在上面,会提示“卷正在使用中”,需要先迁移或关闭虚拟机。

4.4 通过SSH批量管理多台主机

如果有多台ESXi主机需要批量挂载同一个NAS共享,可以用脚本循环。先在每台主机上开启SSH服务(管理界面 -> 服务 -> TSM-SSH启动),然后用expect脚本或用ansible的esxi模块执行上述命令。这里给一个简单的bash循环示例:

for host in esxi01 esxi02 esxi03; do ssh root@$host "esxcli storage nfs add --type nfs --host 192.168.10.20 --share /volume1/esxi-nfs --name NAS-NFS-01 --nfsvers 4.1" done

批量执行前先在单台主机上验证命令,确认无误后再批量操作。

5. 踩坑实录:添加NAS存储最常见的几个问题

公网上关于ESXi挂NAS的帖子不少,但真正卡住人的往往是几个细节。我把这几年见过、踩过的问题集中写出来,每个都是真实场景。

5.1 总是提示“NFS 服务器不可达”或“无法挂载”

这类问题的排查路径很固定。先用esxcli network ping测试ESXi是否能ping通NAS:

esxcli network ping -H 192.168.10.20

如果ping不通,就看网络配置。ESXi的vmk网口和NAS的IP必须在同一网段,或者中间有路由可达。家庭环境最常见的问题是:ESXi的管理IP是192.168.1.x,NAS是192.168.10.x,中间没有路由器转发,此时ESXi到NAS的请求会被发往默认网关,家庭路由没配静态路由就直接丢掉,表现为NFS挂载失败,但ESXi本身管理正常。

ping通之后,再检查NAS上的NFS服务和共享目录是否正确。可以在另一台Linux机器上手动挂载测试:

mount -t nfs 192.168.10.20:/volume1/esxi-nfs /mnt/test

如果Linux能挂,ESXi挂不来,多半是版本或权限问题。如果Linux也挂不了,基本就是NAS端的导出配置有误。

5.2 权限导致虚拟机开机失败或文件只读

ESXi给NFS存储挂载时,是以root用户身份操作的。如果NAS端设置了root_squash,那ESXi的root会被压缩成nobody,导致创建目录、写文件时“Permission denied”。表现通常是:数据存储能挂载成功,但创建虚拟机时提示“无法创建虚拟磁盘”,或者虚拟机开机后出现“文件系统只读”。

解决办法按优先级排序:

  1. 在NAS导出配置里对客户端IP设no_root_squash
  2. 如果NAS不允许关root_squash(有些品牌出于安全考虑固定开),那就把目录所有者改成nobody:nogroup,或者设置world可写,但安全性差,不推荐。
  3. 用NFS 4.1的sec=sys作为安全类型,有时可以绕开部分权限问题。

提示:自建NFS服务的社群发行版,一定在/etc/exports里给ESXi的IP段加上no_root_squash,例如:/srv/nfs 192.168.10.0/24(rw,sync,no_root_squash,no_subtree_check,insecure)

5.3 NFS 4.1挂载后速度极慢

有用户反馈ESXi挂NFS 4.1后传输速度只有几MB/s,换NFS 3就正常。遇到这种问题,先看NAS的NFS版本配置。NFS 4.1相比NFS 3多了一些状态维护和锁机制,如果NAS的NFS服务实现有bug或CPU较弱,4.1的性能就会大幅下降。

另外一个隐藏点:NFS 4.1默认启用nfsv4 xattr,某些NAS对这个特性的支持不完善,会导致文件操作时元数据开销翻倍,数据读写速度明显偏慢。这种情况下,最有效的方案是直接在ESXi挂载时明确用NFS 3。ESXi 8.0虽然偏好4.1,但在“新建数据存储”里选择NFS 3没有任何问题。

5.4 存储显示“已连接”但刷新后状态变成“不可用”

这类间歇性失联多数是网络不稳定或NAS休眠导致的。家用NAS为了省电,默认开启硬盘休眠,一段时间无IO后硬盘停转,ESXi的心跳请求会超时。和VMware动态的爬取广告不同,这个和虚拟化无关,纯粹是NAS侧的电源管理问题。解决方法是到NAS控制面板里把“硬盘休眠”关掉,或者把ESXi的IP段加入“白名单”,让NAS检测到特定IP访问时不休眠。

另一个原因是网卡节能。ESXi里的物理网卡如果开启了省电模式,空闲时链路速度会降,恢复后协商失败也会导致NFS暂时不可达。如果存储网口是独立网卡,在“网络” -> “物理网卡”里关闭节能选项(如果有),或者用ethtool命令关闭。

5.5 无法删除NFS数据存储

删除时提示“无法卸载卷”,基本可以断定有虚拟机在使用该存储,或者有未正常关闭的虚拟机文件锁。排查步骤:

# 列出所有虚拟机及其所在数据存储 vim-cmd vmsvc/getallvms

找到目标虚拟机后,确认这些虚拟机已经迁移走或关闭。彻底一点,打开“虚拟机”页面,把每个虚拟机的清单文件位置(.vmx)确认一遍,保证没有指向要删除的存储。删除前还可以执行一次“重新扫描存储器”,让ESXi清掉残留的锁信息。

5.6 ESXi 8.0无法挂载老NAS的NFS

ESXi 8.0对NFS 4.1的支持更严格,一些老NAS(比如多年前的DSM 5.x)的NFS 4.1实现和8.0不兼容,报错会直接指向“NFS 4.1: Server failed the request”。解决办法是在NAS上把共享同时开启NFS 3支持,然后ESXi里强制选择NFS 3。如果你找不到版本选项,检查一下是不是选择了“NFS 4.1”后没有重新扫描数据存储。ESXi 8.0在“新建数据存储”向导里的NFS版本字段,如果NAS只支持v3,选v3就行,没必要追新版本协议。

6. 添加完成后,这些存储管理习惯建议你养成

NAS存储挂上之后,并不是就完事了。存储的长期可用性和数据安全,取决于后续的使用习惯。

6.1 给虚拟机和存储做定期快照

NAS通常自带快照功能,启用快照后,ESXi写入的vmdk文件变更会被NAS系统以增量方式记录。群晖上定时快照支持每30分钟一个点,快照保留策略可以按周、按月循环,代价只是多占用一些存储空间。这点比本地单块磁盘强太多——本地盘做快照要么靠VMware本身,要么完全没法做。只要给NAS共享目录开了快照,万一虚拟机文件损坏或中勒索病毒,可以直接从快照里恢复整台虚拟机。

这个做法我强烈建议开启。原因很简单:ESXi本地VMFS存储一旦文件损坏,恢复工具很少;NFS存储在NAS端做快照,恢复操作在NAS界面上点几下就完成,不需要惊动ESXi。配合虚拟机“独立磁盘”关闭快照功能(vmdk属性里设置independent-persistent),还能避免长时间运行的数据库虚机产生大量快照导致存储膨胀。

6.2 监控存储容量和IO延迟

ESXi的“性能”标签页可以看到每个数据存储的IOPS、延迟、吞吐。NFS存储挂载后,重点监控平均延迟CPU延迟。当平均延迟超过15-20毫秒,说明网络或NAS性能存在瓶颈,需要排查。家用NAS用SMR盘(叠瓦盘)作存储盘时,随机写入速度极其拉垮,高峰期延迟能飙到数秒,这种盘不适合跑虚拟化,最好换成CMR或SSD。

容量监控上,ESXi会实时显示数据存储的已用空间和可用空间。NFS存储空间不足时,ESXi并不会自动清理任何文件,虚拟机继续写入会报“磁盘空间不足”。所以建议NAS创建共享目录时预留一个较大的“recycle”空间,或者定期在NAS的存储空间设置里开启自动回收快照。更实用的是设置邮件或推送告警,空间低于80%就提醒,避免出现存储写满导致虚拟机崩溃的尴尬。

6.3 数据备份永远不要依赖单一存储

NAS存储解决了容量和共享问题,但它不解决备份问题。NAS本身也是设备,硬盘会坏,RAID卡会挂,误删除文件也会发生在NAS上。建议的备份链路是:

  • 虚拟机放在NFS存储上,NAS端每天做快照。
  • 关键业务的虚拟机,每周用vCenter或直接复制vmdk文件到另一块独立存储/移动硬盘。
  • 如果有多余的旧硬盘,可以做冷备:定期把NAS上的虚拟机文件夹压缩拷贝一份出来,离线上电验证一下可读性。

6.4 为路由器或交换机配置固定IP和QoS

ESXi通过IP访问NAS,所以NAS必须设置固定IP(静态IP或DHCP保留)。如果NAS重启后IP变了,或者被路由器重新分配了IP,ESXi会瞬间失去存储连接,虚拟机会全部卡死。这个问题在生产环境出过一次,我们排查了两小时,最后发现是路由器DHCP租约到期,NAS换了IP。后面给NAS绑了静态IP,世界清净了。

如果家里网络复杂,有多台设备同时大流量下载,建议在路由器上给ESXi到NAS的通信设置高优先级QoS,或在NAS端开启流量整形,确保虚拟机的IO不会被PT下载占满。

7. 从一次失败的挂载开始,聊聊ESXi+NFS的预期管理

有一次帮朋友远程挂载NFS,他的环境是ESXi 7.0 + 群晖DS920+,操作步骤完全按教程来,点了保存之后,ESXi界面一直显示“正在连接到NFS”,卡了快十分钟。最后控制台报了一个“主机内存不足”的错误——当然不是真的物理内存不足,而是ESXi的NFS客户端允许的挂载会话达到上限(默认上限较高,但部分版本有限制),或者是NAS上的NFS服务进程没起来。

重启NAS的NFS服务之后,重新扫描存储器,就挂上了。这个案例告诉我们,很多时候问题不在ESXi本身,NAS端服务端出点毛病,症状就全堆在ESXi这边了。挂载NFS存储时,遇到异常先去看NAS的日志,而不是反复在ESXi里点“重试”。

预期管理上,我要再说一遍:家用NAS给ESXi用,定位于“扩展存储、共享存储、快照恢复”,而不是“高性能存储”。如果你想在NAS上跑数据库,至少上固态盘+万兆;如果只想放一些轻量虚拟机,千兆机械盘也能凑合。做决定前,把“这是什么需求”“NAS能扛什么负载”想清楚,而不是一上来就问“怎么挂NAS”,挂完之后又嫌慢。

从网络规划、共享配置、图形化操作、命令行管理,到各种典型报错的处理路径,这篇文章基本把我能踩的坑都过了。下一次如果还有人说“ESXi加NAS存储怎么老是失败”,你可以直接把这篇文章甩给他,照着前四节做,九成问题都能解决。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询