超融合HCI部署手册精读:aSAN存储、网络与仲裁边界
简介:这份《深信服超融合HCI 用户及部署手册》面向技术服务工程师、运维人员及正在规划超融合基础设施的技术人员,系统梳理HCI的产品架构、关键特性与落地部署方法。内容围绕超融合、虚拟化与分布式存储等核心概念展开,涵盖架构介绍、配置要求、网络配置、系统部署及应用等章节,并对aSV、aSAN、aNET等组件特性、标准集群组网注意事项、安装流程、日常运维管理和常见问题排查给出说明,便于读者建立从规划、组网到部署运维的完整认知。压缩包内为1个PDF文件,大小约35.42MB,单文件结构适合按章节检索和离线查阅。已有1250人学习,说明其在超融合入门与工程实践中具有一定参考价值。读者可借助手册核对部署前的硬件与网络要求,理解集群组网和组件分工,并在实施与排障时快速定位对应章节,适合作为项目部署前的准备资料和运维阶段的查阅工具。
1. 拿到一份 6.7 版本的超融合 HCI 用户及部署手册,最容易看错的地方
多数人翻开它的第一反应是“这就是一本装机说明书”,照着目录从安装组网翻到虚拟机配置,觉得步骤走完就完事。反直觉的地方在于:真正决定这套超融合平台稳不稳的,不是安装步骤有没有漏,而是你有没有搞懂它把虚拟化、分布式存储、虚拟网络这三套东西压进同一批物理节点之后,故障域是怎么互相渗透的。省掉独立存储阵列的代价,是所有边界都变成了软件配置项,配错一个副本数或者一根网线的 MTU,现场表现就是玄学级卡顿。搞懂这套机制,手册才不是黑匣子。
2. aSAN 分布式存储:一条写请求要走完哪四段路
虚拟化层的一次写操作,在传统架构里出了网卡就交给阵列了,超融合里没有这个“外面”,写请求必须在本集群内部自己找到归宿。这条路径大致分四段:虚拟磁盘 → 卷 → 存储池与磁盘组 → 物理介质。每一段都维护自己的元数据,任何一段对不上,上层看到的就是虚拟机莫名 I/O error 或者磁盘变成只读。手册里“配置存储通信网络”“创建卷”这两节之所以被排在集群初始化中间,是因为它们决定了这条链路的底座。
2.1 写缓存、日志区与副本确认:为什么写完不等于落盘
同类分布式存储实现里,写请求基本都遵循“先日志、后同步、再下沉”的节奏。节点收到写请求后不会直接怼到容量盘上,而是先追加到本机 SSD 承担的日志/缓存区,因为 SSD 的随机写和顺序写差距小,能把一个随机小 IO 快速固化成顺序记录;随后把这份数据同步给副本节点,凑够多数派就向虚拟机返回成功;真正的容量层下沉是后台异步做的。
这个设计换来的是写入延迟可预测,代价是缓存盘一旦成为瓶颈,整集群的写放大都会堆在这里。所以手册在“超融合集群配置要求”里对 SSD 容量和数量有下限要求,不是凑数。
# 示意:分布式存储层一条写请求的处理顺序(按同类实现归纳,非厂商源码) def handle_write(volume_id, offset, data, replicas=2): vdisk = lookup_vdisk(volume_id) # 1. 元数据定位:卷 -> 虚拟磁盘 -> 条带映射 chunk = map_to_chunk(vdisk, offset, len(data)) # 2. 按固定块大小切分,算出目标 chunk targets = place_replicas(chunk, replicas) # 3. 副本放置:跨主机、跨故障域挑节点 for node in targets: node.append_journal(chunk.id, data) # 4. 先落本地 SSD 日志区,保证顺序固化 if ack_count(targets) >= majority(replicas): # 5. 多数派确认即返回,不等全部下沉 async_flush_to_capacity_layer(chunk) # 6. 后台异步下沉到容量层 return OK rollback(targets) # 7. 未达多数派则回滚,避免半写状态replicas决定冗余度,二副本要求至少三台主机才有意义(一台故障后仍有地方重建);majority()是写成功的判定门槛,二副本下需要两份都确认,三副本下两份即可返回。async_flush_to_capacity_layer是延迟的真正来源之一,缓存区水位高的时候它会反压前端写入,这就是现场看到“磁盘 IO 突然掉到几百”的常见原因。
2.2 副本放置与故障重建:重建流量才是真正的压力测试
副本放置不是随机撒,而是按故障域分层挑节点:先保证同一份数据的多个副本不在同一台主机,再尽量不在同一个机柜,延伸集群场景下还要跨站点。这个约束在手册的“超融合集群配置要求”和“创建延伸卷”里体现得很直白——节点数量、机柜分布、站点间时延,都是放置算法的输入参数。
副本放置的元数据一般长这样,理解它的字段就能理解重建行为:
{ "volume_id": "vol-prod-01", "replica_count": 2, "chunk_size_mb": 4, "placement_policy": { "host_anti_affinity": true, "rack_anti_affinity": true, "site_anti_affinity": false }, "chunks": [ {"chunk_id": "c-0001", "replicas": ["node-a", "node-c"], "state": "healthy"}, {"chunk_id": "c-0002", "replicas": ["node-b", "node-a"], "state": "degraded"} ] }state变成degraded就意味着某个副本丢了,系统会启动重建。重建的本质是把存活副本按 chunk 逐个复制到新目标节点,一般会限速,因为重建流量和业务流量抢的是同一张存储网。现场最典型的翻车是:白天拔了一根线没管,夜里重建把存储网打满,第二天早上业务全线超时。所以重建限速和存储网独立,是这个架构里最值得提前规划的兩件事。
2.3 卷、快照、克隆:同一套写时复制的三种外壳
手册把“创建卷”“虚拟机克隆”“虚拟机快照”分散在三个章节,看起来是三件事,底层其实是同一套东西:写时复制加元数据指针切换。理解这一点,就不会在“为什么链接克隆删了父虚拟机子机就废了”这种问题上卡住。
三种克隆的差别不在“复制得快不快”,而在数据归属关系:
| 克隆方式 | 数据动作 | 依赖关系 | 适用场景 |
|---|---|---|---|
| 全量克隆 | 逐块复制全部数据 | 完全独立 | 交付给外部、需要彻底隔离 |
| 快速全量克隆 | 只复制元数据,数据块写时重定向 | 初期共享,写入后分离 | 批量部署,兼顾速度与独立 |
| 链接克隆 | 共享父卷只读数据,子卷只存增量 | 强依赖父卷 | 临时环境、测试机、桌面池 |
快照同理,一次快照本质上是给当前元数据打一个时间点标记,后续写入走新块,老块保留。快照链越长,读路径要穿越的元数据层数越多,删除中间某个快照时需要合并的数据量也越大——这就是“删一个快照删了两小时”的机制来源。一致性组快照则是在多卷之间做同一个时间点的原子标记,解决的是数据库这类跨盘应用的崩溃一致性问题;如果还要求应用一致,就得配合应用侧的静默动作,光靠存储层做不到。
3. 网络平面与仲裁:三网合一省下的那根线,代价是什么
超融合把计算、存储、网络揉在一起之后,最先出问题的往往不是磁盘,是网络。手册里“管理通信口”“数据通信口”“配置存储通信网络”分散在不同小节,还有“三网合一方案”“四网合一方案”两个可选项,这些选项背后是一组明确的取舍:省交换机端口和网卡,还是保故障隔离和带宽确定性。
3.1 管理网、数据网、存储网:三张网各自在扛什么
管理网承载集群管理、Web 控制台、告警上报和补丁分发,特点是流量小但要求持续可用,断了不影响业务但会让你瞎掉;数据网承载虚拟机对外的业务流量,是真正的大头;存储网承载副本同步、故障重建、迁移时的磁盘搬运,特点是突发性极强,重建时能瞬间吃满万兆。
三网合一就是一根物理链路加 VLAN 隔离,把三类流量塞进同一个管道。好处很实在:每节点省两块网卡、交换机端口减半、布线清爽。代价是三类流量开始抢同一个队列——重建时存储流量把业务流量挤到超时,是这类方案最常见的投诉。更隐蔽的问题是 MTU:存储网通常配巨帧,业务网不配,合并之后只要有一处 MTU 不一致,表现就是“小包正常、大包丢”,ping 通但传文件卡死,排查起来相当折磨。
四网合一再加一张通常是迁移或隧道类流量,本质上没有改变“共享管道”的事实,只是把更多类型的流量纳入了同一个 QoS 域。手册把这两个方案标成“可选”,潜台词是:节点规模小、业务压力可控时才建议合并。
3.2 物理出口与虚拟路由器:虚拟网络怎么接回物理世界
虚拟网络不是凭空存在的,它必须通过物理出口落到真实交换机上。物理出口的本质是把主机上的物理网卡做绑定(聚合),再以端口组的形式暴露给虚拟网络;端口组上挂 VLAN ID,决定这个出口能跑哪几个网段。多网段端口组的物理出口和单网段端口组,差别在于一次绑定能承载多少个 VLAN 标签,规模大的环境用前者可以减少出口数量。
虚拟路由器承担的是三层转发和南北向出口,DHCP、NAT、静态路由这些能力都在它身上。一个容易忽略的点是:虚拟路由器的转发性能取决于它所在主机的 CPU 和网卡队列,把它和重负载业务虚拟机放在同一台主机上,路由转发会先抖。手册在“物理出口典型拓扑”里给的建议拓扑,本质上是在说这件事——出口相关组件应该和业务负载分开考虑。
3.3 仲裁节点:两主机防脑裂为什么要请一个裁判
两主机集群有个无解的物理问题:两台机器之间的心跳断了,A 认为 B 死了,B 认为 A 死了,两边都觉得自己是唯一存活的,各自把虚拟机拉起来对外提供服务,同一份数据被双写——这种状态叫脑裂,结果通常是数据不可恢复。
解决思路不是让心跳更可靠(心跳总会断),而是引入第三票。仲裁节点就是这个第三票,它不存业务数据,只负责在心跳异常时回答一个问题:“谁还活着,谁该停”。判定逻辑大致是租约模型:
# 示意:仲裁侧的租约判定逻辑(按同类实现归纳) def arbitrate(claim_a, claim_b, lease_ttl): if claim_a.lease_valid and not claim_b.lease_valid: return GRANT_A # A 持有有效租约,B 必须自 fencing if claim_b.lease_valid and not claim_a.lease_valid: return GRANT_B if claim_a.lease_valid and claim_b.lease_valid: return DENY_BOTH # 双主风险,宁可全停也不让双写 return GRANT_FIRST_RENEWED # 租约都过期,先续约者拿票lease_ttl是租约有效期,续约要在这个窗口内完成;fencing是失败一侧的自我隔离动作,通常包括停掉存储服务、强制关机或断网,保证它不再写数据。注意DENY_BOTH这条分支——宁可两边都停、业务短暂中断,也不能让双写发生,这个取舍是整套机制的底线。
延伸集群场景下,仲裁节点一般放在第三个站点,两站点之间靠跨站点心跳加仲裁裁决;仲裁盒子形态则是把这一票做成独立硬件,放在两站点之外的第三方机房。手册里“仲裁节点配置要求”单独成节,就是因为这个角色的网络可达性和时延要求比普通节点更严——它慢一拍,整个集群的故障切换就慢一拍。
注意:仲裁节点不参与业务数据读写,但它一旦不可达,集群会退化成“无裁判”状态,此时任何一侧的心跳抖动都可能触发保护性停机。它的稳定性优先级高于普通业务节点。
4. 部署与集群初始化:一条不能乱序的状态链
手册的第二章到第三章,从“安装组网”一路写到“一键检测集群状态”,中间隔着几十个小节。把它当成一串可以按心情挑着做的步骤,是现场翻车的高发区——这些步骤之间存在硬依赖,顺序错了不会立刻报错,但会在几天后以奇怪的方式爆出来。
4.1 安装前的硬约束:那些看起来像建议、其实是门槛的配置
“超融合集群配置要求”这一节的措辞很克制,用的是“要求”而不是“建议”。实际执行时至少要盯住几项:每节点的 CPU 核心数与内存下限(要扣掉虚拟化层和存储服务的常驻开销,剩下的才是可售资源)、系统盘与缓存盘的介质类型、网卡数量和速率、交换机是否支持所需 VLAN 与巨帧。
BIOS 层面的开关同样在门槛里:虚拟化扩展必须打开,超线程策略、电源策略要调到性能模式,否则会出现“配置看着够,跑起来就是慢半拍”的情况。磁盘一致性也常被忽略——同一节点内混插不同型号、不同容量的盘,会让存储池的条带和重建策略按最慢的那块盘走,整池性能被一块盘拖住。
时间同步是另一个隐形门槛。集群时间不同步时,快照时间戳、日志关联、证书校验全都会错位,而这种错误往往要等到真出事做溯源时才被发现。
4.2 集群初始化的顺序依赖:为什么授权必须排在组建集群前面
初始化这条链的依赖关系,可以按“前置条件 → 动作 → 产出”整理成下面这样,顺序基本不能调:
| 步骤 | 前置依赖 | 产出 |
|---|---|---|
| 授权激活 | 授权文件、集群唯一标识 | 解锁副本数、迁移、快照等能力 |
| 配置集群 IP 与时间 | 管理网可达、NTP 源可用 | 集群管理入口、一致的时间基线 |
| 配置告警通知 | 邮件/短信网关可达 | 后续所有异常可观测 |
| 添加主机 | 各节点版本一致、时间偏差在阈值内 | 形成可调度的资源池 |
| 设置控制节点资源池 | 主机已加入 | 管理组件有独立资源,不与业务争抢 |
| 管理/数据/存储通信口 | 网络平面已规划 | 三类流量各走各的路径 |
| 创建卷 | 存储通信网络已就绪 | 可分配给虚拟机的存储容器 |
| 物理出口配置 | 交换机侧 VLAN 已放通 | 虚拟机可访问外部网络 |
| 一键检测 | 以上全部完成 | 集群健康基线 |
授权排在最前,是因为未授权状态下很多能力是灰的,你配了也不生效;时间排在加主机之前,是因为加入主机时会校验时间偏差,偏差超阈值直接拒绝;存储通信网络排在创建卷之前,是因为卷的副本要按网络拓扑做放置。这套依赖不是设计者的强迫症,是分布式系统“先有约束、后有数据”的一般规律。
4.3 热迁移与跨集群迁移:停机时间的真实边界
“虚拟机热迁移”这一节给人的印象是“业务无感”,但边界条件写得很技术:共享存储下迁移只搬内存页和 CPU 状态,停机时间在毫秒级;非共享存储下要连磁盘一起搬,时间取决于磁盘大小和链路带宽,业务会有明显可感知的卡顿。
更值得关注的是迁移能否收敛。迁移过程中虚拟机的内存一直在变脏,如果脏页产生速率高于迁移链路的传输速率,迁移就永远追不上,最后只能强制切换或者放弃。现场表现是“进度条卡在 90% 十几分钟”,本质是带宽和负载不匹配,不是功能坏了。批量迁移时这个问题会被放大,因为多台虚拟机会同时抢同一条迁移链路。
跨集群迁移本质是一次数据搬运加配置重建,链路带宽和源端磁盘读性能共同决定时长。手册建议在业务低峰做,原因就在这里——它不是元数据操作,是实打实的数据流。
4.4 补丁升级与一键检测:把“看起来正常”变成“验证过正常”
补丁升级的顺序一般是先管理组件、后主机节点,主机之间滚动进行,保证任意时刻集群里都有足够的副本和计算资源。升级窗口要留够,因为滚动过程中如果某台主机升级失败,回退也需要时间。
一键检测工具的价值不在于它报了多少项,而在于它给了一个统一基线:网络连通性、时间偏差、存储健康、副本状态、授权状态一次过一遍。手册把它放在初始化流程末尾,意思是“配完别急着上业务,先让工具替你走一遍”。这套检查在后期变更后同样该跑,比如加完主机、扩完卷、改完网络之后——变更后的验证比变更本身更容易被跳过。
5. 常见问题与排查:几个看起来像玄学、其实有明确机制的问题
这些问题的共同点是:现象和根因隔了好几层,不顺着机制往下捋,很容易在错误的方向上耗掉一整天。下列现象与处置,按“现象 → 原因 → 解决”整理,供对照。
现象一:集群能正常用,但所有快照的时间戳都是乱的,日志也对不上号。原因:集群时间没有统一到同一个 NTP 源,或者某台主机加入集群后时间被改过。分布式系统里时间戳是排序依据,时间一乱,快照链的父子关系和日志的先后顺序就失去意义。 解决:在初始化阶段就把时间同步作为硬步骤,所有节点指向同一组内网时间源;加主机前先核对时间偏差,超阈值不入集群。已经乱了的,先修时间再重建快照策略,不要试图修补历史快照。
现象二:三网合一部署,白天业务正常,一到夜间批量任务时段就整集群卡顿。原因:夜间批量任务触发大量写操作,存储副本同步和重建流量与业务流量共用同一条物理链路,缓存区水位被顶高后反压前端写入。 解决:短期给存储类流量加限速和 QoS 优先级;长期把存储通信网络拆到独立物理口。判断依据很简单:看卡顿时间点是否和批量任务窗口重合,重合基本就是这个原因。
现象三:集群只有两台主机,副本数配了二副本,觉得冗余够了。原因:二副本要求数据落在两台不同主机上,两台主机的集群里,任意一台故障都意味着有一份副本彻底丢失,此时集群会进入降级甚至只读状态,重建也无处可建。 解决:二副本至少三台主机起步;确实只有两台主机时,必须引入仲裁节点解决脑裂,并且明确接受“单机故障即降级”的风险,提前准备好恢复流程。
现象四:控制台上把虚拟机磁盘从 100G 扩到 200G,系统里看还是 100G。原因:控制台的扩容只改了虚拟磁盘这一层的容量,操作系统内部的分区和文件系统没有感知。这是分层设计的必然结果,不是 bug。 解决:扩容后进系统做分区扩展和文件系统扩容,Windows 和 Linux 的步骤不同,手册里分开写就是因为这个。顺序不能反——先扩虚拟磁盘,再扩分区,最后扩文件系统。
现象五:一个快照策略跑了半年,某天想删掉一批老快照,删除任务挂了好几个小时。原因:快照链太长,删除中间节点需要把该节点的增量数据合并到相邻层,合并量随链长线性增长,同时业务写入还在继续产生新数据。 解决:给快照链长度设上限,配合保留策略做轮转;删除安排在业务低峰;对长期保留需求改用独立的全量副本而不是依赖长链。快照是后悔药,但不是无限续杯的后悔药。
现象六:给虚拟机挂了裸磁盘映射做数据库盘,顺手加了快照,结果备份任务全部失败。原因:裸磁盘映射把物理盘直接透给虚拟机,存储层拿不到这块盘的数据视图,快照和备份都无从下手。 解决:需要快照和备份保护的数据,走虚拟磁盘而不是裸盘映射;裸盘映射只用于那些明确不需要存储层保护的场景。
6. 设计取舍:复杂度被搬到了哪里
超融合这套架构最容易被误解的一点,是以为它“简化”了数据中心。它没有简化,它只是把复杂度从硬件采购清单搬到了软件配置项和运维纪律上。传统三层架构里,存储阵列是独立设备,它的故障域天然隔离,性能上限由硬件决定,扩容就是买柜子;超融合把存储做进计算节点,故障域靠副本策略隔离,性能上限由网络和缓存盘决定,扩容就是加节点。
这个交换带来的收益是弹性和成本,代价是每一个原本由硬件保证的边界,现在都需要你用配置去重新画一遍。副本数画的是冗余边界,故障域策略画的是物理隔离边界,三网合一还是分开画的是带宽隔离边界,仲裁节点画的是脑裂边界。画错了不会立刻报错,只会在某个平常的夜里集中爆发。
| 维度 | 传统三层架构 | 超融合 |
|---|---|---|
| 故障隔离 | 硬件天然隔离 | 靠副本与故障域策略 |
| 扩容粒度 | 按阵列扩容,颗粒粗 | 按节点扩容,颗粒细 |
| 性能上限 | 取决于阵列控制器 | 取决于网络与缓存介质 |
| 运维重点 | 设备巡检与容量规划 | 配置一致性与变更验证 |
所以这类手册真正的读法,不是当操作步骤清单从头点到尾,而是把每一节当成一个“边界声明”:它在告诉你这条边界由谁负责、配错了会以什么形式表现出来。我自己的习惯是,任何一次集群变更——加主机、改网络、扩卷、调副本数——做完之后都强制跑一遍一键检测,把检查结果留档,再对比变更前的基线。有几次就是靠这个对比发现时间偏差和副本降级,赶在业务感知之前处理掉了。血泪经验是:变更本身很少出事,出事的是变更后那句“应该没问题吧”。
那份 6.7 版本的部署手册,价值不在于它有多少页步骤,而在于它把上面这些边界一条条写成了可执行的配置项。想少踩坑,把它对着自己的环境过一遍,比背命令有用得多。希望帮到你。
本文还有配套的精品资源,点击获取