从零搭建VMware vSAN 7.0U3测试环境:规划、部署与故障模拟实战
1. 项目缘起为什么要在实验室里折腾vSAN最近在整理实验室的虚拟化环境手头有几台配置还不错的服务器一直跑着传统的集中式存储。每次想测试点新东西比如多节点集群、高可用迁移或者单纯想给虚拟机加点性能总感觉存储这块是个瓶颈。要么是单点故障要么是性能跟不上。正好看到VMware vSphere 7.0 Update 3的文档里面关于vSAN的增强功能挺吸引人比如性能提升、运维简化还有对现代硬件的更好支持。我就琢磨着与其纸上谈兵不如自己动手搭一套vSAN测试环境从零开始走一遍看看这玩意儿到底怎么玩实际用起来有哪些门道和坑。vSAN说白了就是VMware搞的软件定义存储SDS它把集群里每台ESXi主机上的本地硬盘SSD和HDD攒成一个大的、高性能的共享存储池。虚拟机文件不再放在某个单独的存储设备上而是打散成很多个“组件”分布在不同主机的不同硬盘里。这样做的好处很明显利用现有硬件构建共享存储无需额外购买昂贵的SAN设备通过分布式架构实现高可用和横向扩展管理界面和vSphere深度集成用起来很顺手。这次测试的目标很明确在一套由三台物理服务器组成的小型集群上部署vSphere 7.0U3并启用和配置vSAN最终验证其基本功能比如创建存储策略、部署虚拟机、模拟主机故障等。整个过程会涉及ESXi安装、vCenter部署、网络配置、vSAN启用、功能测试等多个环节。下面我就把这次从规划到验证的完整过程以及中间遇到的各种问题和解决方案详细记录下来。2. 测试环境规划与硬件准备动手之前规划是关键。vSAN对环境有一些硬性要求瞎搞很容易失败。2.1 硬件清单与兼容性确认我用了三台戴尔PowerEdge R740xd服务器作为计算和存储节点。这是搭建vSAN集群的最低要求至少3个节点才能允许一台主机故障后数据不丢失。每台机器的配置如下CPU:2颗 Intel Xeon Silver 4214 (12核24线程)内存:256GB DDR4 ECC存储控制器:戴尔PERC H740P Mini这是关键必须确认它在VMware的vSAN兼容性列表里。我上VMware官网的 VMware Compatibility Guide 查了H740P在vSAN 7.0 U3的列表里并且运行模式需要设置为“非RAID”模式也就是直通模式让ESXi直接管理每一块硬盘。硬盘配置每台缓存层2块 800GB SAS SSD (用作vSAN缓存盘必须是高性能的闪存设备)容量层4块 4TB 7.2K RPM SAS HDD (用作vSAN容量盘)引导设备1块 240GB SATA SSD (单独安装ESXi系统)网络4端口万兆光纤网卡我用的Intel X710-DA4用于vSAN流量、vMotion流量等。还有一个千兆管理网口。这里有个重要心得缓存盘必须用SSD而且性能要好。vSAN的写操作会先到缓存盘然后再异步地降速沉降到容量盘。如果缓存盘性能差整个vSAN的IO延迟都会很高。容量盘可以用大容量的HDD或者QLC SSD来降低成本。另外所有用于vSAN的磁盘组缓存盘容量盘必须由兼容的直通控制器如HBA、RAID卡配非RAID模式管理不能用服务器主板自带的SATA控制器也不建议用RAID卡做成RAID0再给vSAN用官方不支持且可能出问题。2.2 网络拓扑设计vSAN对网络延迟和带宽非常敏感尤其是当存储策略要求“双副本”或“容错”时节点间需要频繁同步数据。我的设计如下管理网络使用千兆电口接入实验室核心交换机的一个VLAN。用于ESXi主机管理、vCenter通信。vSAN专用网络使用万兆光纤口。我为三台服务器的万兆网卡分配了同一个网段的IP例如172.16.10.11/24, .12, .13并创建了一个独立的VMkernel适配器专门用于vSAN流量。这个网络最好与其他流量如vMotion、虚拟机业务流量物理隔离或通过VLAN逻辑隔离以减少干扰和争用。vMotion网络同样使用万兆光纤口的另一个网段创建另一个VMkernel适配器。虽然可以和vSAN共用物理网卡通过VLAN但为了测试效果清晰我暂时用不同网段做了隔离。虚拟机网络使用剩余的网络端口。注意确保所有用于vSAN通信的网卡都启用巨帧Jumbo FrameMTU 9000。这能显著提升大块数据同步的效率。需要在物理交换机、ESXi主机的vSwitch以及对应端口组上全局设置。3. 软件部署与基础配置硬件就绪后开始安装和配置软件。3.1 ESXi 7.0 U3 安装从VMware官网下载ESXi 7.0 U3的ISO镜像制作成U盘启动盘。为每台服务器安装引导后选择安装ESXi。选择之前准备的240GB SATA SSD作为安装目标。设置root密码这个密码要记好后续vCenter加入主机时需要。安装完成后重启你会看到ESXi的DCUI界面。按F2登录配置管理网络分配一个固定的IP地址、子网掩码、网关。设置主机名如esxi-01.lab.local。配置DNS服务器地址。同样方法完成另外两台服务器的安装和网络配置。安装完ESXi后第一件事是通过浏览器访问每台ESXi的IP地址用root登录管理界面。在这里你可以看到服务器的硬件信息特别是存储设备。你需要确认所有用于vSAN的SSD和HDD都被正确识别并且显示为“非RAID”或“直通”设备。如果看到磁盘是“RAID0 Virtual Disk”那就说明RAID卡模式没调对需要进RAID卡配置界面服务器启动时按CtrlR把磁盘组删掉设置为非RAID模式。3.2 vCenter Server 7.0 U3 部署vCenter是管理整个vSphere集群的大脑也是配置vSAN的核心。我选择使用“vCenter Server Appliance”VCSA的ISO镜像进行部署这是一个预配置的Linux虚拟机比Windows版本更轻量、更容易维护。将VCSA ISO挂载到一台可以访问ESXi管理网络的电脑上运行安装程序。第一阶段是部署VCSA虚拟机。需要提供目标ESXi主机我选了esxi-01的地址、root账号密码以及为VCSA虚拟机分配的计算资源CPU、内存、存储。我给了它8个vCPU、24GB内存磁盘空间选择默认的“微型”部署约500GB这对于测试环境足够了。第二阶段是配置VCSA。设置VCSA的静态IP、主机名如vcsa.lab.local、SSO域名vsphere.local和管理员密码。SSO密码要复杂且牢记。部署完成后通过https://vcsa.lab.local访问vSphere Client。首次登录会用你设置的SSO管理员账号。3.3 构建集群并添加主机登录vCenter后创建一个数据中心Data Center比如叫“VSAN-Lab”。在该数据中心下创建一个集群Cluster命名为“VSAN-Cluster”。在创建集群时先不要勾选“启用vSAN”我们等网络和主机都加进来后再开启。将三台ESXi主机依次添加到集群中。在集群上右键“添加主机”输入每台主机的IP、root账号密码。添加过程中vCenter会与主机建立信任关系。主机添加完成后在集群的“配置”-“VMkernel适配器”里为每台主机添加用于vSAN的VMkernel网卡。确保三台主机的vSAN VMkernel网卡在同一个二层网络内并且能互相ping通。4. vSAN 启用与磁盘组配置基础架构搭好了现在可以激活vSAN了。4.1 启用vSAN服务在vCenter中进入“VSAN-Cluster”集群点击“配置”-“vSAN”-“服务”-“配置”。选择集群类型我选择“单站点集群”因为我们没有跨机房。声明磁盘这是核心步骤。vCenter会自动扫描集群中所有主机上可用的、未使用的磁盘。缓存层你需要为每台主机选择至少一块SSD作为缓存盘。我每台主机有两块800G SSD这里我选择其中一块作为缓存盘。一个磁盘组只能有一块缓存盘但一块缓存盘可以对应多块容量盘。容量层选择剩余的SSD和所有HDD作为容量盘。我把每台主机剩下的1块800G SSD和4块4TB HDD都勾选上了。配置网络确认vSAN网络选择的是我们之前创建的、MTU为9000的那个VMkernel适配器。点击“完成”后vCenter会开始在所有主机上初始化vSAN服务格式化磁盘并构建分布式存储。这个过程可能需要几分钟到十几分钟取决于磁盘数量和大小。启用成功后在集群的“监控”-“vSAN”-“运行状况”里可以看到一个全面的健康检查面板。刚开始可能会有一些警告比如时钟未同步、物理网络适配器冗余等需要逐一解决。4.2 理解磁盘组与存储策略vSAN的存储对象如虚拟机硬盘是由“存储策略”来定义其放置规则和性能、可用性特性的。而物理存储资源是由“磁盘组”来组织的。磁盘组是主机级别的一个逻辑结构包含一块缓存盘和一到多块容量盘。我每台主机创建了一个磁盘组包含1块缓存SSD和5块容量盘1 SSD 4 HDD。如果缓存盘故障整个磁盘组都会失效所以有些生产环境会配两块缓存盘做镜像但测试环境一块够了。存储策略是vSAN的精髓。创建虚拟机或虚拟磁盘时你需要为其分配一个存储策略。策略决定了允许的故障数 (FTT):数据保存多少个副本。FTT1意味着数据有2个副本分布在不同的主机上允许一台主机故障。FTT2则需要至少5台主机。条带宽度数据在写入时被分割成多少份并同时写入多个容量盘。可以提高顺序读写性能但可能会增加延迟和主机负载。默认是1。对象空间预留是否为虚拟机磁盘立刻分配全部空间厚置备还是按需分配精简置备。vSAN会根据你选择的策略自动将数据组件副本、见证组件放置到符合策略要求的不同主机的磁盘组上。这一切都是自动完成的无需手动指定数据存到哪块物理盘。5. 功能测试与问题排查环境跑起来了接下来就是验证它是否真的可靠、好用。5.1 创建存储策略与部署虚拟机首先创建一个自定义存储策略。在vCenter中“策略和配置文件”-“虚拟机存储策略”-“创建”。名称VSAN-Test-Policy规则集添加规则“允许的故障数”为1 “每个对象的磁盘带数”保持默认1。这意味着数据会存两份双副本并且需要至少3台主机。创建一个新的虚拟机。在创建过程中选择数据存储时你会看到类型为“vSAN”的数据存储名字通常是vsanDatastore。关键一步在“虚拟机存储策略”下拉框中选择我们刚创建的VSAN-Test-Policy。安装操作系统我装了一个Windows Server 2022然后往里面拷贝大文件用CrystalDiskMark等工具跑一下磁盘性能测试。你会观察到IO延迟和吞吐量特别是随机读写会显著优于单块HDD这得益于缓存盘的加速。5.2 模拟主机故障测试高可用这是检验vSAN可靠性的核心测试。让一台主机比如esxi-02上的虚拟机正常运行并持续进行一些IO操作比如在虚拟机里持续复制文件。直接物理关闭esxi-02服务器或者通过vCenter将其置于维护模式选择“确保可访问性”选项vSAN会迁移数据。观察在vCenter“监控”-“vSAN”-“虚拟对象”中查看原来在esxi-02上的虚拟机组件状态。你会看到它们的状态可能变为“已降级”因为一个副本丢失了但虚拟机本身在另外两台主机上仍然可以运行vSphere HA会在一台主机故障时在集群内其他主机上重启虚拟机。检查运行在esxi-01或esxi-03上的同一台虚拟机是否仍然可以访问数据是否完整。重新启动esxi-02。当它重新加入集群后vSAN会自动开始“重新同步”数据将缺失的副本重新构建到esxi-02上。在“重新同步组件”监控项里可以看到进度。这个测试成功证明了vSAN在节点故障时能保证数据不丢失FTT1业务不中断结合vSphere HA。5.3 测试vMotion与存储vMotionvSAN作为共享存储天然支持vMotion计算资源迁移和存储vMotion存储位置迁移。vMotion将一台正在运行的虚拟机从esxi-01迁移到esxi-03。由于虚拟机文件都在共享的vsanDatastore上所以迁移速度非常快几乎是无感知的。存储vMotion更有意思的是你可以改变虚拟机的存储策略。比如给一台虚拟机新建一块硬盘分配另一个策略比如FTT0即单副本用于非关键数据然后使用“迁移”功能仅更改存储将虚拟机从VSAN-Test-Policy迁移到这个新策略。迁移过程中虚拟机会保持运行。这展示了vSAN存储策略的灵活性和动态性。5.4 遇到的典型问题与解决测试过程并非一帆风顺遇到了几个典型问题问题一vSAN运行状况告警“物理网络适配器冗余丢失”现象健康检查显示网络适配器冗余警告。排查检查每台主机的vSAN VMkernel适配器绑定的物理网卡。我发现我只用了一个万兆口做vSAN流量没有配置网卡绑定NIC Teaming或备用网卡。解决对于生产环境强烈建议为vSAN流量配置至少两个物理网卡进行绑定以实现冗余和负载均衡。在测试环境中这个警告可以暂时忽略但需要明白其含义。要解决它需要修改分布式交换机的端口组将vSAN流量端口组的“成组和故障转移”策略配置为“基于IP哈希的路由”或“链路聚合控制协议”并在物理交换机上做相应配置。问题二添加容量盘时失败提示“磁盘已包含分区”现象在声明磁盘时某块HDD无法被选中提示该磁盘已有分区表。原因这块硬盘之前可能被其他系统使用过留有残留分区信息。解决需要通过命令行手动清除。SSH登录到对应的ESXi主机使用partedUtil命令。首先用ls /vmfs/devices/disks/找到磁盘标识符如naa.5000c500a1b2c3d4然后执行partedUtil delete /vmfs/devices/disks/naa.5000c500a1b2c3d4 1删除分区。删除后在vCenter界面刷新磁盘应该就显示为“未使用”了。问题三虚拟机性能不如预期现象用磁盘测试工具跑分4K随机读写IOPS不高。排查检查存储策略确认FTT1这意味着每次写入实际上要写两个副本会影响写入性能。检查缓存盘使用ESXi命令行工具esxcli vsan storage list查看缓存盘的健康状态和类型。确保是高性能的读写密集型SSD而不是读密集型或混合用途的。检查网络用ping -s 8972 对端主机vSAN IP测试巨帧是否通。延迟是否在1毫秒以内。检查队列深度虚拟机SCSI控制器类型是否用对了。对于高性能需求建议使用VMware Paravirtual控制器。解决对于测试可以创建一个FTT0单副本的策略来测试极限性能。但生产环境需权衡性能与可用性。确保网络和缓存盘是瓶颈排查的重点。6. 进阶观察与运维要点经过基本功能测试后我深入看了一下vSAN的一些内部机制和运维界面。6.1 见证组件与故障域当FTT1时一个对象比如VMDK文件会有两个数据副本和一个“见证组件”。见证组件不存储实际数据只存储元数据如对象版本号、锁信息用于在出现网络分区脑裂时仲裁哪个数据副本是最新的。见证组件非常小通常约2GB并且会被自动放置在与两个数据副本主机不同的第三台主机上。这就是为什么3节点是vSAN的最小配置。在vSAN监控界面你可以看到每个虚拟对象的组件分布图非常直观。6.2 去重与压缩vSAN 7.0提供了基于磁盘块的去重和压缩功能可以有效节省容量空间。这个功能是在磁盘组级别启用的。你可以在磁盘组的配置里打开它。需要注意的是启用去重和压缩会消耗额外的CPU和内存资源。它只对容量层的数据有效缓存层的数据不进行此操作。一旦启用整个磁盘组内的所有容量盘都会作为一个整体进行数据处理。后续如果禁用需要将数据全部迁出才能完成。对于全闪存架构节省空间的效果可能非常显著尤其是运行了许多相似操作系统的虚拟机时。对于混合架构SSDHDD由于HDD本身容量大但IOPS低启用此功能需谨慎评估性能影响。6.3 运行状况服务与性能服务vSAN内置了强大的监控工具。运行状况服务就是我们一直看的健康检查面板。它从配置、硬件、网络等多个维度检查集群状态给出明确的警告或错误信息并常常附带修复建议。这是日常巡检的第一站。性能服务在“监控”-“vSAN”-“性能”里可以看到整个集群或单个对象的实时和历史性能指标包括IOPS、吞吐量、延迟、缓存命中率等。这对于性能瓶颈分析和容量规划至关重要。你可以看到是缓存盘压力大还是容量盘响应慢或者是网络出现了拥塞。6.4 扩容与维护扩容容量很简单给主机增加新的硬盘容量盘然后在vCenter中找到该主机的磁盘组点击“添加容量磁盘”即可。vSAN会自动将新磁盘纳入存储池无需停机。主机维护当需要对某台主机进行硬件维护或升级时必须将其置于“维护模式”。vCenter会提供两个选项“确保可访问性”vSAN会迁移该主机上的数据组件到其他主机需要额外空间和“不迁移数据”主机离线后其上的数据会因副本不足而降级仅适用于FTT0且允许暂时降级的场景。生产环境务必选择“确保可访问性”并等待数据迁移完成后再操作主机。7. 测试总结与个人体会这一套vSAN 7.0U3的测试环境搭建和功能验证下来前后花了差不多一周的业余时间。整个过程就像在搭一个精密的乐高模型每一步都有明确的依赖和规则。最大的体会是规划和前期准备占了成功的一半以上。硬件兼容性、网络拓扑、磁盘模式这些如果在开始没搞对后面会麻烦不断。VMware的兼容性列表不是摆设是避坑指南。网络方面物理隔离或者用VLAN把vSAN流量分开并且配上巨帧对性能提升是立竿见影的。vSAN的管理理念和传统存储很不一样。你不再需要操心LUN映射、RAID级别、存储分区这些琐事而是通过定义“存储策略”这种面向服务的方式来管理存储。你需要思考的是“我的虚拟机需要什么样的可用性和性能级别”而不是“我的数据应该放在哪个磁盘柜的哪个RAID组里”。这种抽象层次更高对运维人员更友好但也要求你对策略的含义有深刻理解。设置一个FTT2的策略很容易但你要清楚它需要至少5个故障域会消耗多少存储空间。在测试故障场景时看到虚拟机在一台主机宕机后能在另一台主机上自动重启并正常运行那种感觉是很踏实的。vSAN和vSphere HA、DRS这些功能深度集成共同构成了一个相当健壮的基础架构。当然它也不是银弹。成本上你需要为每台主机配置高性能的SSD和足够的网络带宽软件许可证也是一笔开销。性能上它的延迟肯定比不过顶级全闪存阵列但对于大多数企业应用和虚拟桌面场景其性能已经绰绰有余并且其横向扩展的能力是传统存储难以比拟的。最后对于想学习vSAN的朋友我的建议是一定要动手。可以在笔记本上用VMware Workstation嵌套虚拟化搭建一个微型的3节点实验环境对硬件要求极高需要大量内存和CPU核心或者利用一些云服务商提供的按小时计费的裸机服务器。光看文档是学不会的只有亲手配置过策略、触发过重建、看过性能图表你才能真正理解软件定义存储的运作逻辑和强大之处。这次测试中遇到的每一个错误和警告都是最好的学习材料。