
干过数据中心的朋友应该都有印象过去想搭一套虚拟化环境要买两台四路服务器跑计算虚拟化再买一台双控存储阵列放数据外加一堆万兆交换机做网络收敛。三种设备三个管理入口任何一层出了性能瓶颈排查起来就像在黑屋子里找猫。超融合 HCI 这几年能大面积铺开核心就是把这些东西揉成一个软件栈而 aSV、aSAN、aNET 这三个组件恰好把计算、存储、网络三大件的能力塞进同一套集群体系里协同工作。这篇内容我打算直接从架构拆解入手讲清楚它们各自管什么、彼此怎么配合再结合我实际部署中的规划思路和踩坑记录给想上手超融合或者正在选型的朋友一些能直接落地的参考。1. 整体架构设计为什么超融合要把三者绑在一起1.1 传统三层架构到超融合的演进逻辑先看传统架构的问题出在哪。计算集群、集中式存储、网络交换这三层各自独立虚拟机要访问存储业务数据要先从存储阵列的控制器走到交换机再回到计算节点网卡最后进虚拟机。中间任何一跳波动表现到业务上都是延迟毛刺。更麻烦的是存储控制器往往成为性能和容量的双重瓶颈想扩容就得加磁盘框想提升性能就得换控制器成本和业务压力都不小。超融合的思路完全不同。它把虚拟化计算、分布式存储、软件定义网络统一装进 x86 服务器节点每个节点既是计算资源也是存储资源。三个节点起步就能组成一个小集群后续扩容往集群里加节点就行容量和性能跟着节点数线性走。aSV、aSAN、aNET 这套体系正是这种思路的典型实现aSV 负责把物理服务器的 CPU、内存变成虚拟机的计算池aSAN 把多台服务器上的硬盘组成统一的分布式存储池aNET 则负责把网络平面从物理硬件中抽象出来让虚拟机通信不再依赖物理交换机的具体配置。1.2 三个组件的职责边界与合作关系很多初学者会把这三种能力分开理解实际上它们的耦合相当深。aSV 在创建虚拟机时会向 aSAN 申请一块虚拟磁盘作为系统盘和数据盘虚拟机的网络接入则依赖 aNET 提供的虚拟交换机端口。虚拟机运行过程中产生的每次磁盘写入从 aSV 的虚拟化层出来进入 aSAN 的数据通道再通过网络转发到集群内的副本节点。一条 IO 完整路径上任何一个组件异常业务都会直接感知到。所以把这套架构称作协同不是宣传话术而是技术上的必然。aSV 要感知 aSAN 的故障域分布以便在节点失效时选择合适的重建目标aSAN 要感知 aNET 的物理网络拓扑以便优先选择相近节点完成数据同步aNET 要配合 aSV 完成虚拟机热迁移时的网络策略跟随。三者都在同一个控制平面下通过统一接口通信这也是超融合能够做到一个界面管所有的原因。1.3 统一管理平面带来的运维价值我自己的体会是统一管理平面带来的价值在运维阶段才真正凸显。传统环境下计算团队、存储团队、网络团队经常为问题责任边界扯皮。超融合环境里虚拟机的计算资源、存储性能、网络流量都能在同一个界面看到和调整故障定位从三段式排查收敛成单平台分析。对于中小规模环境尤其友好两三个人就能支撑起整个虚拟化平台的日常运维不需要每个方向配一个专家。这套设计的代价是软件栈的复杂度大幅提升。所有功能都集中在软件层实现意味着对硬件兼容性的要求更高对网络质量更敏感。后面再展开说网络这块的影响。2. aSV 计算虚拟化深入虚拟机管理的内功2.1 计算虚拟化的底层机制aSV 的虚拟化底层基于主流的开源虚拟化方案核心工作是完成 CPU、内存、设备三大资源的抽象。拿 CPU 虚拟化来说虚拟机的指令执行要保证安全隔离同时不能让性能损失太明显。现代处理器提供的硬件辅助虚拟化能力在这里发挥关键作用虚拟化层可以直接让大部分指令在物理 CPU 上原速运行只有少数特权指令需要拦截处理因此虚拟机 CPU 性能可以达到物理 CPU 的百分之九十五以上。内存虚拟化也一样硬件辅助提供第二层地址转换虚拟机内部的物理地址可以高效映射到宿主机物理地址。实际配置时aSV 会结合 NUMA 拓扑进行优化确保虚拟机使用的内存在物理上尽量集中在同一颗 CPU 的本地内存区域。跨 NUMA 访问内存的延迟高不少如果虚拟机是大内存规格比如 64GB 以上开启 NUMA 感知往往比盲目调高 CPU 优先级效果更明显。2.2 虚拟机生命周期与高可用机制aSV 负责虚拟机的创建、启动、关闭、迁移、备份等全生命周期操作。虚拟机文件本身存放在 aSAN 提供的分布式存储卷上因此虚拟机可以在集群内任意节点启动和迁移不受单台服务器磁盘位置的限制。热迁移时虚拟机的内存页不断同步到目标节点切换瞬间对业务几乎无感知数据库这类长时间运行的应用也能平滑移动。高可用机制则依赖节点之间的心跳检测。当某个物理节点出现宕机或网络隔离集群控制平面会选举新的主节点把发生故障的节点上运行的虚拟机在健康节点上重新拉起。这里有个关键参数心跳超时时间。设得太短网络波动会误判节点故障导致虚拟机频繁重启设得太长故障恢复时间就会变长。实际部署环境里我一般会把心跳超时适当放宽到默认值的 1.5 倍左右特别是当存储网络和业务网络共用物理链路时网络闪断的误判风险更高。2.3 资源超分与性能隔离的平衡aSV 支持对 CPU 和内存做超分一台 128GB 内存的物理服务器理论上可以跑出接近 200GB 内存的虚拟机规格只要实际负载没有同时打满。但超分是把双刃剑生产环境如果超分比超过 1:4遇到批量虚拟机同时高负载CPU 调度延迟会明显提升数据库这类延迟敏感业务会出现莫名的慢查询。我常用的做法是分类管理数据库、核心业务虚拟机不做内存超分保持 1:1 分配开发测试类虚拟机可以超分到 1:2 甚至 1:4。同时给每台虚拟机设置 CPU 预留保证核心虚拟机在节点繁忙时仍能拿到最低资源配额。简单来说超分赚的是资源利用率赔的是性能可预测性关键业务必须要靠预留来兜底。3. aSAN 分布式存储解析软件定义存储的核心逻辑3.1 一条写 IO 的完整旅程aSAN 是整套超融合架构中技术含量最高的组件也是大家体验差异最大的组件。拿一条虚拟机写 IO 来追踪数据从虚拟机里的应用出发经过虚拟化层进入 aSAN 的存储内核。存储内核会根据配置的副本策略把数据同时发送到本地和远端节点的存储服务上。这里有个容易混淆的概念副本是跨节点分布的。比如三节点集群配置两副本同一份数据会同时写在两个不同节点的硬盘上任何一个节点宕机数据在另一个节点上仍然完整。这种设计取代了传统存储阵列中 RAID 卡的作用可靠性靠多节点冗余而非单机硬盘冗余来保证。对应地传统 RAID 盘只需要一块盘就能写整条 IO分布式存储的一次写请求要同时发往多个节点网络延迟直接影响写性能。3.2 副本策略与故障域设计的平衡副本数怎么选是 aSAN 规划中最核心的决策。两副本能容忍一台节点故障可用容量是裸容量的一半三副本能容忍两台节点同时故障可用容量只有裸容量的三分之一。成本差异非常大。我在实际项目中建议的标准是核心生产环境至少三副本特别是数据库这类不能丢数据的应用容量型和备份型数据可以用两副本但前提是集群规模够大且监控到位。故障域的概念也要提前规划。aSAN 的故障域可以按节点划分也可以按机架划分。如果有两排机柜应当把副本分布策略配置为跨机架比如三个副本分别落在三个不同机架的节点上。这样即使一个机架因供电或网络问题整体宕掉数据仍然完整可用。如果不设置故障域副本会优先选近节点某个机柜断电时数据反而可能全部落在故障区这种情况在真实环境里我见过不止一次。3.3 性能分层HDD、SSD 缓存与全闪配置纯 HDD 的节点跑分布式存储性能上限受限于机械盘的寻道和转速单节点几万 IOPS 就顶天了。为了兼顾容量和性能aSAN 支持 HDD 加 SSD 的混合部署SSD 作为热数据缓存层识别高频访问的数据块并优先缓存写入时先落 SSD 形成快速响应再异步刷回 HDD。配置上建议把 SSD 缓存容量控制在热数据总量以上缓存命中率才会好看。如果预算充足全闪节点是另一种选择。全 NVMe 的配置模式下单节点可以轻松跑出几十万 IOPS延迟稳定在百微秒级。不过要注意全闪配置下存储性能瓶颈往往会转移到网络。万兆网络传输 64KB 左右的数据块理论延迟就在毫秒级想发挥全闪全部性能存储网络至少要上二十五G 甚至 100G否则花在闪存上的钱有一半是浪费的。3.4 快照、克隆与备份机制aSAN 的快照采用写时复制机制创建快照时不需要复制全部数据只在数据块第一次被修改时才复制原数据到快照空间。因此快照的创建几乎是瞬间完成的空间占用一开始很小但随着源卷数据变化会逐渐增长。实际使用中要盯紧快照占用比例尤其是长期保留快照的虚拟机快照空间膨胀到源卷一半以上的场景并不少见。克隆功能同样依赖快照技术可以做完整克隆也可以做链接克隆。链接克隆的新虚拟机共享源虚拟机的数据块创建速度快但后续修改会生成独立的数据块适合批量交付开发环境时可以大量节省存储空间。备份方面aSAN 支持将虚拟机快照导出到外部备份存储可以做灾备环境的异地恢复演练。4. aNET 网络虚拟化解析看不见的虚拟网络平面4.1 分布式虚拟交换机的工作方式aNET 负责构建虚拟网络的核心基础设施分布式虚拟交换机。所谓分布式是指虚拟交换机不是跑在某台物理服务器上的独立进程而是所有物理节点上同时运行的同一套逻辑交换机。虚拟机网卡连接到的虚拟端口逻辑上属于同一个交换机无论虚拟机迁移到哪个物理节点它的网络配置保持不变。分布式虚拟交换机省掉的是传统环境中虚拟机迁移后网络配置跟着改的麻烦。物理交换机上的 VLAN 配置、ACL 规则都不需要为单个虚拟机改动虚拟网络的配置变化只发生在软件层。对运维来说新增虚拟网络就像写一行配置不用去碰物理交换机的命令行。4.2 Overlay 网络与 VPC 隔离aNET 支持基于 Overlay 技术的网络隔离方案数据包在虚拟机之间传输时外层封装了虚拟网络标识物理网络只负责转发封装后的流量虚拟网络的拓扑和物理网络拓扑解耦。这意味着可以在不改动物理交换机配置的前提下在同一套物理网络上跑成千上万个相互隔离的虚拟网络。这种能力在对接多租户或部门隔离场景时价值很明显。比如集团内部财务、研发、人事各需要一个完全隔离的网络环境传统做法需要划分不同 VLAN 和网段Overlay 方案则直接创建多个虚拟网络安全策略在网络入口统一管控比纯 VLAN 隔离更灵活也避免了 VLAN 数量上限的问题。4.3 分布式防火墙与安全策略跟随aNET 的分布式防火墙跑在每台物理服务器的虚拟化层里每个虚拟机的进出流量都会先经过本地的安全引擎过滤再进入虚拟网络。这样做的好处是安全策略不依赖物理网络的引流和旁挂虚拟机即使迁移到其他节点安全策略依然跟随虚拟机走不会出现安全漏洞窗口。实际配置时可以把防火墙策略绑定到虚拟机的安全组安全组内虚拟机之间默认放通跨安全组的访问必须显式放行。这种方式比传统防火墙的 IP 段规则直观很多业务变更频繁的环境里运维人员改策略的时间能减少一半以上。4.4 物理网络与虚拟网络的映射关系虚拟网络再灵活终究要映射到物理网络才能实际通信。aNET 在物理层面通常需要配置管理网络、业务网络、存储网络三类流量。管理网络负责集群节点之间的控制通信和 web 管理平面业务网络承载虚拟机的南北向流量存储网络承载 aSAN 的分布式存储数据同步流量通常最大。物理网络规划上最稳妥的做法是存储网络使用独立网卡或独立 VLAN至少保证存储流量不跟业务流量挤在同一条拥塞链路上。如果服务器只有双万兆口又想省交换机端口那么优先保障存储网络的带宽业务网络共享剩余带宽并在虚拟交换机上为存储流量设置高优先级。5. 三大组件的协同机制IO 路径与故障联动的全景视图5.1 从虚拟机到存储盘的完整 IO 链路理解了三个组件各自的职责协同机制才有基础。以一台虚拟机写入数据库文件为例应用发出磁盘写请求aSV 虚拟化层把请求翻译成虚拟磁盘的块写入这段 IO 会先经过 aNET 虚拟交换机被识别为存储流量然后通过物理网络发送到 aSAN 的本地以及远端副本节点副本节点确认收到数据之后IO 才算完成返回成功信号给应用。这条路径清楚地展示出超融合架构的延迟构成本地处理延迟加网络传输延迟加远端写盘延迟。网络延迟占比很大这也是超融合环境下万兆网络只是入门、存储节奏快的场景需要更高带宽的原因。双副本写请求等最慢的那个副本响应网络抖动一点点应用层就能看到明显延迟。5.2 存储流量与业务流量共存时的优先级策略业务流量和存储流量共用物理网络时要特别关注优先级配置。虚拟交换机的队列调度可以把存储流量标记为高优先级当链路拥塞时优先转发存储同步数据确保写 IO 的响应时间不被大流量业务拖累。这种调优不需要改物理交换机配置纯软件策略就能实现。但要注意这只是一种软性保障如果存储流量本身已经占满整个链路带宽业务流量依旧会受影响根本解决还是靠容量规划。5.3 节点故障时的三方联动过程故障联动最能体现协同架构的含金量。假设一个节点意外断电aSV 的心跳机制在一段时间内没收到对应节点响应启动虚拟机高可用切换同时 aSAN 检测到存储节点离线触发副本数据的重新复制把故障节点上的数据副本在其他健康节点重建aNET 同步更新虚拟交换机配置把故障节点上的虚拟端口迁移到健康节点确保虚拟机恢复后网络策略无缝生效。三个动作在后台并行但业务能否快速恢复取决于两个因素一是健康节点是否有足够的资源承载故障节点的虚拟机二是存储重建是否会挤占正常业务的 IO 带宽。实际运维中应该为故障切换预留 15% 到 20% 的资源缓冲否则故障场景下容易出现虚拟机恢复成功但性能严重劣化的局面。5.4 数据本地性与跨节点读写的取舍超融合架构中数据本地性是个经常被讨论的话题。所谓本地性就是虚拟机访问存储时优先从本节点的磁盘上读取数据避免跨节点网络访问带来的额外延迟。理想状态下每个节点的虚拟机负载均衡后大多数数据访问都发生在本地存储性能接近本地磁盘性能。但负载均衡不是永远成立。虚拟机迁移、数据分布变化都可能导致某些虚拟机的数据副本不在本地节点。这种情况下跨节点访问的 IO 延迟会高一些但不至于不可用毕竟有高速网络支撑。全闪配置加高性能网络组合下跨节点访问和本地访问的差距已经缩小到几乎可以忽略这也是全闪超融合逐渐成为主流的原因之一。6. 部署实践与容量规划从选型到落地的完整路径6.1 节点硬件配置建议部署超融合集群节点硬件选型是整个项目的基础。CPU 方面推荐双路主流 x86 处理器核心数越多越好因为虚拟化层的 CPU 开销和存储服务都会占用一部分算力。内存按虚拟机实际需求规划同时要为 aSAN 的数据缓存留出一定内存余量一般建议物理内存至少比虚拟机规格总和多 20%。存储盘位分配上系统盘和数据盘要分离。建议两块小容量 SSD 组成 RAID 镜像安装虚拟化底层和系统数据盘至少配四块。混合配置的话SSD 缓存盘的容量建议为 HDD 总容量的 10% 以上这样热数据命中率才有保障。网卡建议双口万兆起步如果有条件上四口二十五G存储性能会宽裕很多。6.2 容量计算的一个实际例子拿一个具体的三节点项目来算容量需求。假设业务规划需要 6TB 可用存储容量数据库等核心业务要求三副本保障可用容量等于裸容量除以副本数所以需要的裸容量是 18TB。每个节点均为 6TB底层三节点 18TB。看起来刚好对上但还要预留快照空间、临时扩容余地和故障重建缓冲。实际建议裸容量至少按需求的 1.5 倍准备也就是 27TB每个节点 9TB 以上。网络带宽规划也不能只看名义速率。万兆网口的实际有效吞吐通常只有 80% 左右因为要扣除协议开销更别提数据复制时的突发流量。规划存储网络时建议按峰值流量的 150% 来计算带宽需求避免高峰时段的拥塞影响业务性能。6.3 部署过程中的核心注意事项部署实施中最容易被轻视的是网络基础配置。节点之间的管理网络、存储网络的 IP 规划要提前设计好避免部署后发现 IP 冲突或网段重叠。虚拟机业务网段的网关配置也要在虚拟网络里预置否则创建虚拟机后还要回头改网络参数。另外一个细节是时间同步。超融合集群对时间同步要求很高证书验证、日志关联、分布式锁都会受影响。部署完成后第一时间配置好集群的外部时间同步源并检查每个节点的时间偏移确保在一百毫秒以内。6.4 验收测试的标准化动作集群部署完成验收不是简单跑个压力测试就行。我通常按三层递进方式来做验收。第一层做了虚拟机的基本功能测试比如创建、删除、快照、克隆这组生命周期的操作。第二层做性能抽查用存储性能测试工具分别测单路和多路虚拟机的读写带宽和 IOPS确认跟硬件预期匹配。第三层做故障演练挑一个非业务时段主动重启其中一个节点观察虚拟机的切换时间是否在一分钟以内数据文件是否有损坏。第三层很多人不敢做或不愿意做但恰恰是最有价值的。没有经过故障演练的集群真到出问题时很难判断高可用机制到底靠不靠谱。我参与过的好几个项目故障演练都会暴露一些配置问题比如某台节点的心跳网卡链路不稳定、某个虚拟机的磁盘策略没正确应用等。还好发现得早后面生产运行才没出大乱子。7. 常见问题排查与排障经验7.1 业务 IO 延迟高的定位思路超融合环境出现 IO 延迟高问题往往不是单点的。我的排查顺序是先看是单台虚拟机延迟高还是同一节点上所有虚拟机都延迟高还是整个集群普遍延迟高。单台虚拟机的问题优先检查虚拟机内的应用和磁盘队列同节点问题优先查宿主机负载和磁盘健康状态整个集群的问题则要考虑网络链路、存储节点状态和副本策略。实际环境里有个高频原因某块 SSD 缓存盘寿命到临界值或性能衰减导致命中缓存的 IO 也变慢。系统里通常能看到类似缓存盘降级的告警但如果不定期主动检查这类问题能潜伏很久。另一个高频原因是存储网络丢包万兆网线或光模块接触不良、网卡驱动异常都会造成偶发丢包表现就是 IO 延迟抖动。排查这种问题优先看网卡的错误计数不要只盯着平均延迟看。7.2 节点故障演练中暴露的典型问题做节点故障演练最常暴露的问题有两类。一类是资源容量不足故障节点上的虚拟机迁到其他节点后发现内存或 CPU 不够用虚拟机起不来或者启动极慢。这个问题的解药是前面说的预留缓冲而不是演练时临时抱佛脚。另一类是存储重建风暴故障节点恢复后aSAN 要复制大量数据补副本会把整个网络的带宽占满正常业务跟着受牵连。解决存储重建风暴的办法是配置重建限速限制重建流量占物理链路带宽的比例。比如设置重建流量最高占存储网络带宽的 50%业务流量优先保障。代价是重建时间变长但总比业务卡死要好。这样性能和安全的取舍生产环境里一定要提前规划好。7.3 扩容时需要注意的隐性细节超融合扩容听起来是加个节点插上即用操作中还是有不少坑。新节点的硬件型号、固件版本尽量与存量节点保持一致特别是网卡型号和盘型。有次项目扩容时新节点的网卡固件版本较老初始化后存储性能比老节点低一截排查了几天最后发现是网卡队列数不一致更新固件才解决。扩容后还要关注数据再平衡策略。新节点加入集群后aSAN 会自动调整数据分布把一部分数据迁移到新节点。这个迁移同样是背景流量会影响正在运行的业务。如果业务高峰期扩容建议先手动暂停数据再平衡等低峰期再恢复避免和业务流量抢资源。扩容完成后还要检查虚拟机的存储策略是否自动适配了新节点数量比如从两副本环境扩到四节点是否考虑切换到三副本策略来增强可靠性。7.4 快照空间增长失控的清理技巧快照空间增长失控是运维中很常碰到的问题。有时为了备份或升级给核心虚拟机打了长时间快照之后每天的数据变化都会写入快照差异快照空间越占越大。等到快照把存储池占满才发现虚拟机的写 IO 开始报错这个状态是非常危险的清理起来也很被动。我的经验是严格执行快照生命周期管理生产虚拟机的快照保留不超过 48 小时到期必须删除或合并。如果遇到快照占用已经很大的虚拟机删除快照前先评估可用空间因为快照合并过程需要一定的临时空间来写最终状态。空间不足时强行删除快照可能直接导致虚拟机故障这种情况宁可先扩容存储池再执行清理操作。回到开头说的aSV、aSAN、aNET 三者的协同架构本质上是在用软件栈的复杂度换取运维的简洁度和资源的弹性。这些技术在规划、部署和排障中踩过的坑大多不是孤立的软件问题而是三者协作边界上的疏漏。我个人的体会是真正理解这套架构的协同逻辑比背熟某个界面的操作路径有价值得多。后续如果有多集群容灾或跨数据中心双活的需求前面说的这些基础规划经验依然可以直接复用。