📌 转载说明:本文首发于微信公众号《闫工的算力工具箱》 原文链接:https://mp.weixin.qq.com/s/ZtKF6rjKzzWZvzGgt0sZnw
【闫工的工具箱 · 第 5 弹】 #
我是闫工,数据中心搬砖的 CCIE。
这是「闫工的工具箱」第 5 篇。前 4 弹分别是:SN 剪贴速记(录 SN 提速)、硬盘擦除工具(下架清数据)、BMC 故障排查(GPU 起不来)、再到上一篇的批量装系统 MAAS 镜像打包(自己造 Rocky 种子)。
上一篇讲了 MAAS 镜像打包,从零造了个 Rocky 的"种子"。这篇回到排障线——硬盘状态标了 UBad(RAID 卡误报的「疑似坏盘」标记,盘往往根本没坏),监控群里喊换盘,但我没换。
— — —
下午 4 点 17 分,群里炸了 #
下午 4 点 17 分,监控告警群里弹出一条告警:「存储节点 /dev/sdb 状态异常,UBad」。
紧接着群里跟了一句:「UBad 了,换盘吧。」

图:硬件监控面板——告警触发时的磁盘状态
换一块企业级硬盘,钱不是大头——业务重建、数据同步、阵列降级期间的服务影响,这些才是。而且机器还在跑业务,动一块盘牵一发而动全身。
我没急着拔。因为我见过太多次 UBad 被当成了"盘坏了",换下来的盘插到另一台机器上一测,SMART 干干净净,啥事没有。
UBad 这仨字母,第一次见的人容易慌,但干过几年存储的都知道:UBad 不等于物理损坏。
这次我没换盘,先开了个终端。
— — —
UBad 到底是个啥 #
UBad = Unconfigured Bad,直译"未配置的不良盘"。它和 Onln(在线)、UGood(未配置但健康)不是一回事。简单记:
- 盘在线干活 →
Onln - 盘没进阵列但本身没问题 →
UGood - 盘被 RAID 卡判成"状态存疑" →
UBad

图:RAID 卡视角——同一端口两块盘:一块 Unconfigured Bad,一块 Online
为啥会出现 UBad?三种最常见的原因:
- 逻辑 / 元数据对不上:异常断电、误插拔,导致硬盘上的 RAID 配置信息和控制器的记录不匹配——盘没坏,是"账对不上"。最常见。
- 物理介质故障:盘真有坏道、SMART 已经报警了。这种才是真坏。
- 临时通信故障:背板接触不良、线缆松了、供电不稳,盘短暂失联,RAID 卡一慌就给它标了 UBad。
核心原则就一句:UBad ≠ 坏了。先诊断,别急着换盘。
换一块好盘容易,但要是盘根本没坏、只是被误判,你换掉的可是还能再战三年的盘,还白搭一次重建的风险。
— — —
先看全局,别动 #
盘挂着 UBad,第一反应不是 set good、不是拔盘,而是先把真实状态看清楚。RAID 卡记的东西比你看一眼 LED 灯准得多。
登录机器,按这个顺序过五步,盘到底坏没坏、坏在哪,基本就清楚了。
准备工作:确认 StorCLI 已安装
如果系统里还没有 storcli64 命令,需要先安装。安装包到 Broadcom 官网搜索 “StorCLI” 下载,Ubuntu 系统用 .deb 包安装:
sudo dpkg -i storcli_*.deb
sudo ln -s /opt/MegaRAID/storcli/storcli64 /usr/local/sbin/storcli64安装完成后,storcli64(64 位版本)位于 /opt/MegaRAID/storcli/ 目录下。Ubuntu 22.04 是 64 位系统,全文统一使用 storcli64。

图:storcli64 show —— 控制器已识别
第一步:确认控制器认到了
storcli64 show预期看到 Number of Controllers = 1 且列出控制器型号(比如 AVAGO MegaRAID SAS 9460-8i)。这一步先确认工具装对了、卡认到了。
第二步:看每一块盘的真实状态
storcli64 /c0 /eall /sall show
图:storcli64 /c0 /eall /sall show —— 两块盘并列:一块 UBad,一块 Onln
这是最常用的一条。输出里每块盘一行,状态字段含义如下:
| 状态值 | 说明 |
|---|---|
Onln |
Online,硬盘在线且正常工作 |
UGood |
Unconfigured Good,未配置的好盘(可加入阵列) |
UBad |
Unconfigured Bad,未配置的不良盘(需处理) |
Offln |
Offline,硬盘离线 |
Rbld |
Rebuild,正在重建数据 |
F |
Foreign,存在外部配置信息 |
DHS |
Dedicated Hot Spare,专用热备盘 |
GHS |
Global Hotspare,全局热备盘 |
输出里,两块盘并列:一块 UBad,一块 Onln。
第三步:查 SMART,看盘有没有物理损伤
storcli64 /c0 /e252 /s0 show smart/e252 /s0 是"第 252 号 Enclosure 的第 0 号 Slot",按你实际槽位替换。重分配扇区计数是 0,pending 错误也是 0——物理层面干干净净。SMART 里如果有大量重分配扇区、pending 错误,那大概率是物理坏道;如果 SMART 干干净净,基本可以排除物理故障。
第四步:查 RAID 卡事件日志
先把日志导出到文件再过滤,别直接管道 grep——日志量大的时候容易卡住:
storcli64 /c0 show events > /tmp/raid_events.txt
grep -i "bad\|fail\|error" /tmp/raid_events.txt | tail -30⚠️ 注意:如果日志量很大,直接 show events | grep 可能会卡住。建议先导出到文件再过滤,更稳妥。
日志里有一行:PD 0x1a 状态变更:Onln → UBad,原因:写入超时。写入超时 ≠ 盘坏了。可能是背板信号抖了一下,也可能是那次写入刚好碰到了盘内部的重试。RAID 卡的事件日志会记下盘掉线、通信超时的来龙去脉。是"瞬间失联又回来",还是"持续报错",一看便知。
第五步:查有没有外部配置残留
storcli64 /c0 /fall show结果显示有 Foreign 配置。这块盘上残留着之前在别的阵列里的 RAID 元数据,RAID 卡识别到了但不知道怎么处理,索性标了个 UBad。
信息收束:盘没坏,是账对不上了。
场景判断:先定性,再动手 #
| 诊断结果 | 处理方案 |
|---|---|
| 硬盘显示 UBad,但 SMART 正常 | 按逻辑 / 通信问题处理(多半能救回) |
| 硬盘显示 UBad,且 SMART 有严重报错 | 按物理故障处理,直接换盘 |
所有硬盘显示 Onln,VD 状态 Optimal |
无需操作,阵列健康 |
| 阵列已离线或控制器都识别不到 | 立即关机,找专业数据恢复,别自己折腾 |
— — —
两行命令救回来 #
⚠️ 执行前注意:RAID 1 阵列已处于降级状态(只剩单盘在工作),操作前务必确认数据有最近可用的备份,或至少确认另一块盘的健康状态。重建期间不要重启或断电。
方案 A:逻辑 / 通信问题(硬盘本身 OK)—— 大部分情况都是它(如果业务允许也可以重启设备进到服务器BIOS里设置,我这里就不具体讲了,逻辑是一样的。)****
第一步,把盘从 UBad 改回 UGood:
storcli64 /c0 /e252 /s1 set good
图:set good —— 盘状态从 UBad 改回 UGood,“Set Drive Good Succeeded”
第二步,导入外部配置(如果上一步发现有过 Foreign):
storcli64 /c0 /fall import
图:storcli64 /c0 /fall show —— 发现 Foreign(外部残留)配置
导入成功后,RAID 卡自动触发了重建(状态变成 Rbld)。几十分钟后(SSD 重建本来就快),状态回到 Onln。群里没人再提换盘了。

图:fall import —— 外部配置导入成功,盘状态从 UBad → Rbld(重建中)

图:修复后——监控面板:HDD0 / HDD1 双盘全部正常 ✓
补充:如果 fall show 显示没有 Foreign 配置,说明盘上的 RAID 元数据已被清除,此时无法通过 import 恢复。这种情况可以尝试手动将盘加入磁盘组,或直接按方案 B 用新盘替换。具体操作需根据阵列配置判断,本文不展开。
方案 B:物理故障(真坏道)—— 该换就换
确认故障盘的 EID 和 Slot,服务器开机状态下直接拔出坏盘,插一块容量、规格完全相同的新盘。RAID 卡通常会自动开始重建;要是没自动起,手动推一把:
storcli64 /c0 /e252 /s1 start rebuild— — —
这次踩的几个坑 #
坑一:storcli64: command not found
装完 DEB 包,命令默认在 /opt/MegaRAID/storcli/storcli64,不在 PATH 里。建个软链就哪儿都能用了:
sudo ln -s /opt/MegaRAID/storcli/storcli64 /usr/local/sbin/storcli64坑二:set good 执行失败
如果 set good 直接报错、盘死活不肯回到 UGood,多半是盘真有物理坏道。这时候别硬刚,按方案 B 换盘最稳。
坑三:storcli64 show 看不到控制器
先确认 RAID 卡驱动正常:lspci -vv | grep -i raid,看不到卡就得先排查驱动 / 卡槽,别在工具层面死磕。
坑四:没备份就动手
这条不是命令坑,是心法坑。set good + import 看着无伤大雅,但任何对阵列的写操作都有风险。动手前确认有最近可用的备份——它是你最后一道防线,没有之一。
— — —
结尾 #
那块盘救回来之后,又安安静静跑了很长时间,再没出过问题。
复盘几点:
- UBad ≠ 坏了——它是 RAID 卡的保护机制,先"冻"住等你确认,不是判死刑
- 先诊断后操作——SMART 正常就按逻辑问题处理,SMART 有报错才换盘
- 操作前确认备份——最后一道防线,没有之一
- 定期巡检 SMART 和阵列状态——别等告警响了才看
存储这条线先收在这儿。上上集讲"盘擦干净地走"(回复「擦除」拿工具),上集讲"盘怎么造镜像进 MAAS",这集讲"盘被误判别误杀"。
下期是个大块头——一台裸金属从 0 到交付,10 个坑我帮你踩完了。关注本号,下期见。