目标
磁盘巡检的关键不是“把命令跑了”,而是把盘状态翻成能处理的结果:
- 哪个控制器
- 哪块盘异常
- 是离线、预测失败,还是介质错误
- 需不需要马上人工处理
采集怎么做
我会把控制器、逻辑卷、物理盘分开采,不把所有东西糊成一段输出。
storcli /call show
storcli /call/vall show
storcli /call/eall/sall show all
日常巡检再补一层轻量过滤:
storcli /call/eall/sall show | grep -Ei 'offline|degraded|failed|predict|media|hotspare'
数据怎么落
我会把结果拆成两份:
- 原始文本,方便回查
- 结构化 JSON,方便生成报表
结构化结果至少包含这些字段:
{
"controller": "c0",
"slot": "12",
"drive_state": "Onln",
"media_errors": 0,
"predictive_failures": 0,
"role": "data"
}
只要字段固定,后面切 Markdown、CSV、Excel 都很容易。
报告怎么写得有用
报告不要把所有正常盘都堆出来。正常项只要汇总,异常项单独展开。
## 汇总
- 控制器 1 个
- 逻辑卷 2 个
- 物理盘 8 块
- 异常盘 1 块
## 异常
- c0 / slot 12:介质错误持续增长
这样看报告的人能第一眼知道需不需要马上处理。
定时任务怎么接
我一般会把巡检做成系统定时任务,然后把输出落到固定目录。
#!/usr/bin/env bash
set -euo pipefail
ts="$(date +%F_%H%M)"
out="/var/log/raid-audit/$ts"
mkdir -p "$out"
storcli /call show > "$out/controller.txt"
storcli /call/vall show > "$out/volume.txt"
storcli /call/eall/sall show all > "$out/drives.txt"
python3 render_raid_report.py "$out" > "$out/report.md"
常见坑
1. 不同版本输出不一致
不要依赖固定列号,尽量按关键词提取。
2. 没有 RAID 卡
如果机器没有对应硬件,报告要明确写“未检测到控制器”,不要当成空白。
3. 只看健康不看趋势
盘今天还健康,不代表明天不会涨错误。最好保留历史结果,至少能看出变化。
结论
RAID 巡检真正的价值不在于执行 storcli,而在于把原始输出变成能直接读的报告。只要报告可读,巡检就能变成流程,而不是一次次人工翻输出。
发表回复