Aching Notes

技术笔记、折腾记录和长期项目整理

RAID 和磁盘巡检自动化:从 storcli 到可读报告

目标

磁盘巡检的关键不是“把命令跑了”,而是把盘状态翻成能处理的结果:

  • 哪个控制器
  • 哪块盘异常
  • 是离线、预测失败,还是介质错误
  • 需不需要马上人工处理

采集怎么做

我会把控制器、逻辑卷、物理盘分开采,不把所有东西糊成一段输出。

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'

数据怎么落

我会把结果拆成两份:

  1. 原始文本,方便回查
  2. 结构化 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,而在于把原始输出变成能直接读的报告。只要报告可读,巡检就能变成流程,而不是一次次人工翻输出。


已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注