4. 聚合与磁盘故障诊断

在 ONTAP 中,聚合(Aggregate)是承载卷的物理存储池,它由若干磁盘组成,磁盘先被组织成 RAID 组,再由 RAID 组构成聚合。磁盘故障、RAID 组降级、热备盘接管、重建(reconstruction)这一连串事件,是存储运维中最常见也最需要快速判断的故障链。理解这条链路上每个环节的状态与参数,才能在故障发生时准确判断影响范围并选择正确的恢复动作。

磁盘类型与归属关系

ONTAP 中磁盘按用途分为几类:数据盘(data disk)用于承载用户数据;校验盘(parity disk)在 RAID-DP 中提供双校验;热备盘(spare disk)不参与任何 RAID 组,处于待命状态;分区盘(partitioned disk)被划分为多个分区,分别承担数据、校验或备盘角色;此外还有根盘(root disk)、缓存盘(Flash Cache/Flash Pool SSD)等。判断一块盘的角色,最直接的方式是查看其归属的聚合与 RAID 组。

cluster1::> storage disk show -disk 1.0.5
                    Disk: 1.0.5
             Container Type: aggregate
                  Owner: cluster1-01
              Aggregate: aggr1
                RAID Group: rg0/1
             Disk Type: SAS
              Position: 1.0.5
              ...
              Spare: false

输出中 Aggregate 与 RAID Group 表明该盘已加入 aggr1 的 rg0/1;Spare: false 说明它不是备盘。若一块盘显示 Container Type: spare,则它处于备盘池中,可被任意同类型聚合接管。

RAID 组与聚合降级

RAID-DP 组通常由 16~28 块盘组成,其中 2 块为校验盘。当组内一块盘故障时,RAID 组进入降级(degraded)状态,但数据仍可读写;若第二块盘再故障,则 RAID 组失效,聚合可能离线。因此降级状态下的首要任务是尽快让热备盘接管并完成重建。

查看聚合与 RAID 组状态:

cluster1::> storage aggregate show -aggregate aggr1
Aggregate     State     #Vols  Nodes  RAID Status
aggr1         online    12     2      raid_dp, degraded

cluster1::> storage raid-group show -aggregate aggr1
Aggregate  RAID Group  State     Disks  Reconstruction
aggr1      rg0/1       degraded  22     -

raid_dp, degraded 表示聚合在线但已降级;Reconstruction 列为空说明尚未开始重建。此时应检查是否有可用备盘:

cluster1::> storage disk show -spare
Disk     Type  Owner        Container Type  Position
1.0.30   SAS   cluster1-01  spare           1.0.30
1.0.31   SAS   cluster1-01  spare           1.0.31

热备盘接管与重建过程

ONTAP 默认启用自动备盘接管(autoassign)。当 RAID 组降级后,系统会自动从同类型备盘中选取一块,将其加入故障盘所在的 RAID 组,并启动重建。重建是把故障盘上原有的数据通过校验计算重新生成并写入新盘的过程。重建期间聚合仍处于降级状态,性能会有所下降,且此时若再坏一块盘,风险极高。

监控重建进度:

cluster1::> storage aggregate show -aggregate aggr1 -fields reconstruction
aggregate reconstruction
aggr1     45%

cluster1::> storage disk show -disk 1.0.30 -fields reconstruction
disk   reconstruction
1.0.30 45%

重建完成后,RAID 组恢复为 normal,备盘正式成为数据盘,备盘池减少一块。若备盘不足,重建不会自动开始,聚合将长期停留在降级状态,这是需要人工介入的关键点。

聚合降级 → 热备盘接管 → 重建恢复 状态链 ① 正常状态 aggr1: raid_dp, normal rg0/1: 22 盘(20数据+2校验) 备盘池: 2 块 SAS 读写正常,无重建 磁盘故障 ② 降级状态 aggr1: raid_dp, degraded rg0/1: 21 盘(缺1块) 数据可读写,性能下降 ⚠ 再坏1块即失效 自动接管 ③ 重建中 备盘 1.0.30 加入 rg0/1 reconstruction: 45% 聚合仍为 degraded 备盘池: 1 块 重建完成 ④ 恢复完成 aggr1: raid_dp, normal rg0/1: 22 盘(新盘已转正) 备盘池: 1 块(需补充) ⚠ 备盘不足分支 无同类型 spare 可用 重建不启动,长期降级 需人工更换磁盘或释放备盘 无备盘 关键排查命令: storage aggregate show -aggregate aggr1 -fields state,raid-status storage raid-group show -aggregate aggr1 | storage disk show -spare

排查与恢复的实际操作

当收到聚合降级告警时,建议按以下顺序排查。第一步,确认降级范围:

cluster1::> storage aggregate show -state degraded
Aggregate  State   #Vols  Nodes  RAID Status
aggr1      online  12     2      raid_dp, degraded

第二步,定位故障盘与 RAID 组:

cluster1::> storage disk show -broken
Disk     Type  Owner        Container Type  Aggregate  Position
1.0.5    SAS   cluster1-01  aggregate       aggr1      1.0.5

-broken 列出已失效磁盘。第三步,检查备盘是否充足:storage disk show -spare。若备盘存在但未自动接管,可手动触发:

cluster1::> storage disk assign -disk 1.0.30 -owner cluster1-01
cluster1::> storage aggregate add-disks -aggregate aggr1 -disk 1.0.30

第四步,监控重建进度直至完成。重建速率受磁盘类型、负载和聚合繁忙程度影响,一块 4TB SAS 盘在中等负载下通常需要数小时。重建期间应避免对聚合执行大规模写入或卷迁移,以免延长重建时间、增加二次故障风险。

重建期间聚合处于降级状态,若此时再有一块盘故障,RAID-DP 组将失效,聚合可能离线。务必在重建完成前避免计划外维护操作,并确保备盘池始终有冗余。

常见判断依据与恢复动作

现象判断恢复动作
聚合 degraded,有 spare自动接管应已触发监控 reconstruction 百分比
聚合 degraded,无 spare备盘池耗尽更换故障盘或释放备盘,手动 assign
reconstruction 长时间 0%重建未启动或受阻检查磁盘健康、聚合负载、节点状态
RAID 组状态 failed校验盘不足,数据风险立即联系支持,评估数据可恢复性
重建完成后 spare 减少备盘已转正补充备盘,恢复冗余

最后需要强调的是,热备盘的数量与分布直接决定降级后能否自动恢复。建议每个节点、每种磁盘类型至少保留 1~2 块备盘,并定期用 storage disk show -spare 核查。对于 RAID-DP 组,重建完成并不等于风险解除——备盘池被消耗后,下一次故障可能无盘可接。因此,把“补充备盘”作为恢复流程的收尾动作,才是完整的闭环。