VMware ESXi添加NAS存储实战:NFS协议选型与配置排查指南
2026/9/17 21:42:54 网站建设 项目流程

干过虚拟化管理的朋友应该都有印象,ESXi主机自带的本地存储用起来虽然省事,可到了多主机共享、虚拟机迁移、备份恢复这些场景,本地硬盘就成了瓶颈。NAS存储因为部署简单、成本可控,是很多中小企业、实验室和自建机房的首选方案。这篇文章我会从实际操作角度,把在VMware ESXi中添加NAS存储这件事完整讲一遍,包括协议怎么选、图形界面和命令行两种添加方式、权限与网络怎么配、常见问题怎么排查,以及我个人踩过的坑。不管你是刚开始接触ESXi的新手,还是想在现有环境里补一块共享存储的老手,都能直接照着操作。

1. NAS存储与ESXi的适配逻辑及选型

1.1 为什么不用本地硬盘而用NAS存储

先聊一个基础问题:本地硬盘到底哪里不够用?ESXi主机的本地盘虽然写入速度不差,但它是一台主机独占的存储资源。虚拟机文件放在本地盘上,最直接的影响就是vMotion、HA、FT这类功能没法用,因为其他主机看不到这块盘上的数据。备份也要先把数据拷来拷去,时间一长就是灾难。

NAS存储的核心价值在于“共享”两个字。一台NAS设备通过以太网把存储空间暴露给网络,ESXi主机把它挂载成数据存储,所有能访问到这个NAS的主机就都能看到一个共同的存储池。这样虚拟机可以在主机之间在线迁移,故障时另一台主机可以接管,运维和容灾的玩法一下子打开了。

成本上的优势也很明显。SAN存储动辄需要光纤交换机、专用HBA卡,配置复杂,价格不高根本摸不到。而一台群晖、威联通或者自己攒的NAS,只要支持NFS协议,就能在ESXi里当数据存储用。很多家里已经有一台NAS的朋友,甚至不用添设备就能把虚拟化环境跑起来。当然,生产环境下性能要求高,还是得认真评估NAS的硬件能力,但这不妨碍它在中小场景里成为非常务实的选择。

1.2 NFS与iSCSI存储协议怎么选

在ESXi里挂NAS存储,主要有两种协议:NFS和iSCSI。很多人第一次接触时不太清楚区别,我按自己的理解讲清楚。

NFS是网络文件系统,属于文件级协议。NAS把共享目录导出,ESXi挂载到某个路径,虚拟机文件就放在这个目录里。优点是配置简单,一个IP加一个共享路径就能用,多台ESXi访问同一个NFS共享完全没有问题,因为文件锁和并发访问都由NFS服务和VMware层协调了。

iSCSI是网络块存储协议,它把远端的块设备模拟成本地盘,ESXi需要把iSCSI Target上的空间初始化成VMFS文件系统。块级协议对底层有更强的控制,数据库这类高随机IO负载偶尔会有更稳定的表现,但配置和运维门槛也更高,而且多台主机共享时需要额外搞好SCSI锁和VMFS集群文件系统的逻辑。

我用一个表格做个直观对比:

维度NFSiSCSI
协议层级文件级共享块级设备映射
配置难度简单,创建共享即可需要配置Target、LUN、客户端认证
VMFS要求不需要,直接使用目录必须初始化VMFS
多主机共享天然支持支持,但需注意锁机制
性能场景适合常规虚拟化负载高IO、数据库场景可能更优
ESXi兼容性好,NFS 3支持最广泛好,但依赖存储厂商实现

我个人的倾向是:在中小企业、实验环境和自建NAS场景,优先选NFS,理由很简单,就是省心。如果NAS是专门的企业级设备,存储团队对iSCSI也熟悉,那就按块存储方式走。但如果你是第一次在ESXi里挂NAS,我建议先拿NFS走通整条链路,后面有需求再试iSCSI。

1.3 理解VMFS与NFS数据存储形态

ESXi的数据存储大体分两类。一类是VMFS,这是VMware自创的集群文件系统,运行在块设备之上,本地硬盘、SAN LUN、iSCSI Target都可以格式化成VMFS。另一类是NFS数据存储,它没有VMFS文件系统的概念,ESXi直接把虚拟机文件存放在NAS共享目录中,虚拟机仍然以文件夹和VMDK文件的形式存在。

很多朋友第一次接触NFS数据存储时会想:“这不就是把虚拟机文件放在网络共享文件夹里吗?”理解很到位,技术上就是这样的。但需要注意,ESXi对NFS共享里的文件结构和权限有要求,通过vSphere创建的数据存储目录都带隐藏标识,不要因为你熟悉群晖的文件管理,就直接跑过去手动删改。我就见过有人在NAS上误删了vmdk文件导致虚拟机不可用的案例,所以用NFS存储时,文件操作最好还是走vSphere界面,而不是直接在NAS上管理。

了解了这些基础,就可以进入实操了。

2. 添加NAS存储前的准备:主机、NAS、网络与账号

2.1 ESXi主机准备

版本方面,ESXi 6.7、7.0、8.0都支持NFS数据存储,最常见的是NFS 3协议,NFS 4.1在6.7以后的版本也都支持。建议先把ESXi主机和vCenter Server(如果有)升级到受支持的版本,固件和驱动保持更新,减少存储挂载时碰到高级功能缺失的问题。

ESXi免费许可证能不能添加NFS数据存储?我用过的免费版是可以添加NFS存储的,基础挂载和运行虚拟机没问题,只是在一些集中管理、备份API的扩展上会有限制。当然,真要上生产环境,还是建议使用正规的vSphere许可证,以免功能受限。

还有一个小细节:确保ESXi主机时间同步。NFS对时间同步不是刚需,但如果你后续想用NFS 4.1的Kerberos认证,时间偏差太大会导致认证失败。即使只用NFS 3,统一时间也是后续排障的基础。ESXi里把NTP配置好,NAS上也启用时间同步,提前省很多事。

2.2 NAS共享准备

以最常见的群晖和威联通为例,下面这些步骤基本通用,自己攒的开源NAS(比如TrueNAS、OpenMediaVault)也大同小异。

第一步,在NAS上启用NFS服务。群晖路径通常在“控制面板 -> 文件服务 -> NFS”,勾选“启用NFS服务”。TrueNAS则在“服务 -> NFS”里开启。

第二步,创建共享文件夹,例如在卷上建一个名为vmware的目录,然后设置NFS权限。群晖是在“共享文件夹 -> 编辑 -> NFS权限 -> 新增”,填写ESXi主机的IP地址,权限选择“读写”,Squash选项建议选择“不映射任何用户”或“无映射”,这对应no_root_squash,ESXi挂载后才有权限写入。这个设置非常关键,后面会专门讲。

第三步,记录导出路径。群晖通常显示为/volume1/vmware这样的路径,TrueNAS可能是/mnt/pool1/vmware。这个路径就是后面在ESXi里填的“挂载路径”。不同的NAS显示方式不同,但一定是共享目录在操作系统里的实际路径。

第四步,检查NAS防火墙。如果NAS开启了防火墙,需要放行NFS相关端口。NFS 3通常需要TCP/UDP 111(rpcbind)、2049(NFS),可能还有mountd端口。小型局域网图省事的话,在隔离网络里关闭NAS防火墙也能跑通,但生产环境建议精确放行。

2.3 网络规划与IP选型

存储网络是整个方案里最容易被忽视的一环。我见过很多环境,把NAS和业务流量混在一个普通交换机上,结果虚拟机高峰时段延迟飙升,存储性能极度不稳定。

建议单独规划一个存储子网,例如ESXi管理IP是192.168.1.0/24,存储网络则用192.168.200.0/24。在ESXi上创建独立的VMkernel端口或vSwitch用于存储流量,把NAS也放在这个子网里。这样即使业务流量抖动,存储流量也能相对稳定。

IP地址一定要使用静态地址,不要依赖DHCP。NAS的IP一旦变化,ESXi上的数据存储会进入断开状态,虚拟机可能直接宕机。ESXi几乎不会自动重新解析一个变化的IP,所以在刚部署时就把NAS做成固定IP,并在路由器或者防火墙上预留好地址。

如果条件允许,带宽上尽量往大了看。普通千兆网络跑一两台虚拟机还行,虚拟机一多,NFS的带宽瓶颈会很明显。很多新项目直接上万兆或者2.5G多网卡绑定,配合SSD缓存,体验完全不同。

3. 图形化方式添加NAS存储:vSphere Client操作全流程

3.1 进入存储“新建数据存储”向导

图形界面是最直观的操作方式,适合第一次配置的朋友。用vSphere Client登录到ESXi主机或vCenter Server,选择目标主机,点击“存储”选项卡,然后点击“新建数据存储”按钮。

向导第一步会让你选择类型。这里选择“网络文件系统(NFS)”,下一步后会出现NFS共享信息填写界面。

有一点要提醒:如果你是在vCenter环境下操作,可能还能看到VMFS、vSAN等选项。此时别选错,只有NFS才是挂NAS共享的选项。VMFS需要块设备,如果选错,后面填IP和共享路径的界面根本不会出现。

3.2 填写NAS路径与名称

在向导界面里,我们需要填这几项:

  • 服务器IP或FQDN:填NAS的存储网络IP,例如192.168.200.10。
  • 共享/挂载路径:填NAS的导出路径,例如/volume1/vmware。
  • 数据存储名称:自定义一个方便识别的名字,例如NAS01。

名称建议用英文字母、数字和下划线,不要使用中文或特殊字符。虽然某些ESXi版本可能支持,但为了避免兼容性问题,还是稳妥一点。

填写完成后先别急着下一步,务必核对路径,尤其是群晖这类NAS的卷号路径很容易看花眼。我遇到过同事把/volume1和/volume2搞混,结果虚拟机全部挂错盘的故事。检查无误再下一步。

3.3 NFS版本与挂载选项说明

在创建向导中,ESXi会要求选择NFS协议版本。常见的选项是NFS 3和NFS 4.1。

NFS 3的兼容性最广,几乎所有NAS设备都支持,配置也最简单,推荐大多数场景默认选NFS 3。NFS 4.1有一个很吸引人的特性是支持Kerberos认证,更安全,但配置远比NFS 3复杂,一旦身份认证方面出错,就连挂载都会失败。如果你不是特别需要强安全认证,没必要一上来就上NFS 4.1。

向导里还会有“启用硬件加速”之类的选项,这是与VAAI相关的能力,能够改善某些存储操作如复制、置零的效率。只要NAS和主机支持,保持默认勾选即可。

这里还要注意“基于文件系统的精简配置”选项。如果NAS支持稀疏文件/精简配置,勾选后虚拟机磁盘能更节省NAS空间,但某些NAS的文件系统可能不支持,勾了反而不稳。普通环境可以直接不勾,空间不够时再扩容。

最后点击“完成”,系统会进行挂载操作,通常几十秒内就能看到结果。

3.4 验证挂载结果

完成后,在主机“存储”列表里可以看到新增的数据存储,状态显示“正常”,旁边会标出NFS类型。

这时候我建议做一个完整验证:第一步,点击该数据存储进入“文件”页签,新建一个文件夹;第二步,上传一个ISO镜像或虚拟机模板,确认写入正常;第三步,尝试创建一台测试虚拟机,完整跑一遍部署流程。这样可以尽早发现NFS权限和网络问题,而不是等真正要部署业务时才发现仓库是坏的。

如果状态显示“不活跃”或“不可访问”,说明挂载没有成功,先不要反复点击重试,直接去看NAS侧的状态,然后对照后面第五部分的排查流程逐项检查。

4. 命令行方式添加NAS存储:esxcli与SSH实操

4.1 开启SSH并查看当前存储

图形化配置够方便,但做自动化或者排障时,命令行反而更高效。ESXi对NFS的命令行支持主要通过esxcli storage nfs子命令完成。

第一步,在ESXi主机上开启SSH服务。在Host Client里进入“管理 -> 服务”,找到SSH,点击“启动”。生产环境建议操作完成后关闭SSH,以减少暴露面。

第二步,使用SSH工具登录ESXi,账号一般为root。

第三步,查看当前已经挂载的存储:

esxcli storage filesystem list

这个命令会列出所有数据存储,包括本地VMFS和NFS。也可以使用df -h查看挂载点和容量。先把环境摸清楚,再动手添加新的NFS,能避免名称或路径冲突。

4.2 使用esxcli添加NFS数据存储

添加NFS存储的基本语法如下:

esxcli storage nfs add --host=<NAS_IP> --share=<NFS_PATH> --name=<datastore_name> --version=nfs3

实际执行示例:

esxcli storage nfs add -H 192.168.200.10 -s /volume1/vmware -v NAS01 -w nfs3

参数说明:

  • -H:NFS服务器IP地址。
  • -s:NFS导出的共享路径。
  • -v:要为这个数据存储取的名称。
  • -w:NFS版本,nfs3或者nfs4。

执行完成后,可以用:

esxcli storage nfs list

查看是否添加成功。正常的话,列表中会显示对应的数据存储名称、挂载路径、版本和状态。

如果想删除这个数据存储,使用:

esxcli storage nfs remove -v NAS01

需要等该存储上的虚拟机都迁移或关闭后,再执行删除,否则会直接导致虚拟机失去磁盘。

4.3 查看挂载参数与启用NFS 4.1

对于NFS 4.1,命令几乎一样,只是将--version=nfs4。但NFS 4.1默认可能带Kerberos认证,实际环境很多NAS并没有集成AD域,这时容易挂载失败。我们可以通过--sec-type=sys参数指定使用传统UNIX系统认证:

esxcli storage nfs add -H 192.168.200.10 -s /volume1/vmware -v NASNFS4 -w nfs4 --sec-type=sys

这种用法适合NFS 4.1的轻量场景。如果NAS上配置了Kerberos且你将vCenter或ESXi加入了域,也可以使用--sec-type=krb5i这类选项启动加密认证。但这类配置牵涉到DNS、Kerberos、时钟同步等问题,生产环境里若不是强安全要求,我还是建议用NFS 3,把复杂度降到最低。

命令行方式特别适合批量部署或脚本化的场景。比如新上架多台ESXi节点,需要同时挂载同一NAS共享,可以写好脚本逐台执行,效率非常高。不过要注意,esxcli添加存储时不会自动检查NAS路径存在与否,它只会尝试挂载,如果你路径填错,后续日志里才会暴露问题。

5. 常见问题与排查技巧实录

5.1 无法访问NAS共享的排查步骤

挂载NFS存储失败,最常见的问题是网络不通或共享路径不对。我一般按这个顺序排查:

先确认ESXi和NAS之间网络通不通。在ESXi SSH里使用vmkping测试NAS的IP:

vmkping 192.168.200.10

如果ping不通,先查ESXi的存储VMkernel网络是否配置正确,再看NAS的IP是否达到,物理交换机端口、VLAN是否都正常。网络不通时,后面一切配置都白搭。

网络通了再看端口。NFS 3需要端口111和2049,NFS 4.1主要需要2049。可以在ESXi里用nc命令测试端口(ESXi的精简环境可能没有nc,可以临时在NAS或另一台设备上测试):

nc -zv 192.168.200.10 2049

如果端口不通,检查NAS端的防火墙规则、NFS服务是否启动。

再接下来看共享路径的准确性。许多NAS面板显示的路径和实际挂载需要填写的路径不完全一样,比如群晖会写成/volume1/vmware,而TrueNAS可能是/mnt/tank/vmware。最稳妥的方法是到NAS的NFS设置页复制导出路径,而不是凭记忆输入。

最后检查NFS访问权限列表。大多数NAS的NFS共享有来源IP限制功能,只允许特定IP列表访问。你需要在NFS权限里加入ESXi主机的存储网络IP。如果ESXi的IP没被放行,即便其他配置全对,也会挂载失败。

5.2 NFS权限与root squash问题

挂载成功但无法写文件,是我收到咨询最多的问题。现象是数据存储能挂上,状态也是“正常”,但创建虚拟机时报权限不足,或者上传文件失败。

原因是ESXi在挂载NFS时使用root身份,而NAS默认会对root用户做squash处理,把root映射成匿名用户或nobody用户,导致对共享目录没有写入权限。这个行为来自NFS协议的“root_squash”默认安全机制。

解决办法是在NAS的NFS配置里开启no_root_squash(不同NAS界面叫法不同,群晖是Squash选“不映射任何用户”,TrueNAS是Maproot User设置为root)。修改后无需重新挂载,NAS会动态生效。然后再尝试创建一个文件夹或上传一个文件,基本就好了。

这里要特别提醒:NFS共享目录在NAS上的实际属主和权限也有影响。比如共享目录的属主是admin,权限是750,就算no_root_squash,ESXi的root能够被映射为本地root,但跨NFS的权限解析可能仍然受文件系统权限位限制。建议把共享目录的属主设为root,权限保持755或777(根据安全要求选择),同时开启no_root_squash,ESXi的读写基本就通顺了。

5.3 性能优化与注意事项

NFS存储的性能,不是挂载完就万事大吉的。我用过一段时间后总结出几个影响很大的细节。

第一,巨帧(Jumbo Frames)能开则开。ESXi的vSwitch、VMkernel端口、NAS网口、交换机端口都需要统一设置MTU 9000,任何一个环节不统一都会造成网络分片,性能反而下降。如果风险控制不住,保持MTU 1500至少稳定。

第二,存储流量分离。在ESXi上专门建一个不承载业务流量的vSwitch放NAS存储,在NAS侧也可以把存储口和业务口分离,减少碰撞和拥塞。这个在虚拟机和NAS都比较忙的环境里尤其重要。

第三,NAS本身的I/O能力决定上限。机械盘做RAID5跑虚拟机的速度只能说是“能跑”,稍高负载就卡。尽量给NAS加SSD缓存,或者直接用全闪NAS。虚拟机的操作系统和数据库高随机读写在SSD上的改善非常明显。

第四,多台ESXi挂载同一个NFS共享时,要注意NAS的连接数限制和并发处理能力。我曾经在测试环境里让八台ESXi同时挂同一个群晖NAS,NAS自带连接数有限,部分主机就出现“存储失联”的情况。后来调整NAS的并发连接数和超时参数才稳定下来。生产环境做共享存储之前,一定先看一下NAS厂家的规格说明。

6. 我踩过的几个坑和最后的小建议

最后分享一些个人体会。

最早我在实验室里挂NFS存储,NAS用的是群晖DS218+,千兆网络,挂载很顺利。但真正把几个Windows虚拟机跑起来之后,发现系统操作时有明显卡顿。排查了半天,发现交换机上根本没有开启巨帧,ESXi的VMkernel却把MTU设成了9000,大包一直被分片,延迟高得吓人。把所有端口统一改成1500后,问题立刻消失。后来我换了支持2.5G的NAS,才彻底把性能瓶颈解决。所以性能问题不一定是NAS不行,先查网络基础设施。

另一个印象深刻的坑是数据存储名称冲突。我同时给多台ESXi添加同一个NAS共享,结果用了不同的数据存储名称,导致vMotion时集群认为存储名称不一致,迁移失败。后来改成全集群统一的名称,问题就没了。所以建议在所有主机上把同一个NAS共享的数据存储名称保持一致,命名规范要提前定好。

还有一次,NAS进行了固件升级,重启后NFS服务虽然自动启动了,但导出的共享目录路径发生了细微变化,ESXi上的数据存储显示“不活跃”。当时差点以为虚拟机数据丢了,后来发现只是路径失效。重新按新路径挂载后,虚拟机文件原封不动地还在共享目录里。这个经历启示我:一方面不要轻易变更NAS的共享路径和IP,另一方面发生类似问题时不要慌张,先把数据存储重新挂载好,虚拟机一般都能恢复。

如果你也准备在ESXi里用NAS存储,我的建议是先在测试环境完整走一遍“创建NFS共享-挂载数据存储-创建虚拟机-做快照-迁移主机”这套流程。很多时候问题都出现在平时没人关注的小细节上,比如NAS的权限、名称一致性、网络MTU。把这些细节在测试阶段暴露出来,生产环境才能稳得住。等你熟悉了整个流程,NAS带来的便利——共享模板、快速迁移、集中备份——会让你觉得当初的折腾特别值。

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

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

立即咨询