🛠️问题描述
最近有一台服务器操作时一直报IO错误,怀疑硬盘故障,但本人不在现场,看不到哪块磁盘故障,我们可以借助megacli工具去查看。
megacli
工具是由 Broadcom(原 LSI)提供的专有 RAID 管理工具,通常需要手动下载并安装。
LSI(现在属于 Broadcom)确实只提供 RPM 格式的 MegaCLI 安装包,而 Debian/Ubuntu(包括 Proxmox)默认不支持 RPM。所以我们需要借助 alien
工具将其转换为 .deb
格式。
下面是完整的操作流程:
🛠️ 在 Debian/Ubuntu/Proxmox 上安装 MegaCLI 的步骤
1. 安装转换工具 alien
apt update
apt install alien
2. 下载 MegaCLI 的 RPM 包
你可以从 Broadcom 官方网站下载,例如:
- https://www.broadcom.com/support/download-search
- 搜索关键词:MegaCLI 或 MegaRAID
下载后假设文件名为:MegaCLI-8.07.14-1.noarch.rpm
3. 使用 alien
转换为 .deb
包
alien -k --scripts MegaCLI-8.07.14-1.noarch.rpm
这会生成一个 .deb
文件,例如:megacli_8.07.14-1_all.deb
4. 安装 .deb
包
dpkg -i megacli_8.07.14-1_all.deb
5. 运行 MegaCLI
cd /opt/megaraid
./MegaCli64 -AdpAllInfo -aAll
你也可以将它软链接到系统路径,方便调用:
ln -s /opt/megaraid/MegaCli64 /usr/local/bin/megacli
✅ 安装成功后可以执行的常用命令
功能 | 命令 |
---|---|
查看所有 RAID 控制器信息 | megacli -AdpAllInfo -aAll |
查看所有物理磁盘状态 | megacli -PDList -aAll |
查看逻辑磁盘信息 | megacli -LDInfo -Lall -aAll |
查看阵列是否降级 | megacli -LDGetProp -Degraded -aAll |
✅遇到的问题
root@pve:/opt/MegaRAID/MegaCli# ./MegaCli64 -AdpAllInfo -aAll ./MegaCli64:
error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
root@pve:/opt/MegaRAID/MegaCli# apt install libncurses5
Error: Unable to locate package libncurses5
出现这个错误是因为在较新的 Debian 或 Proxmox 系统中,libncurses5
已被移除或替换为更新版本(如 libncurses6
),而 MegaCLI 仍然依赖旧的 libncurses.so.5
。我们可以通过以下几种方式解决这个兼容性问题:
备注:我使用下面方法二临时解决
✅ 方法一:安装兼容库 libncurses5
(来自旧版本)
你可以手动下载旧版本的 .deb
包并安装:
下载适用于你的架构的
libncurses5
包(通常是amd64
):wget http://ftp.us.debian.org/debian/pool/main/n/ncurses/libncurses5_6.1+20181013-2+deb10u2_amd64.deb
安装该包:
dpkg -i libncurses5_6.1+20181013-2+deb10u2_amd64.deb
验证是否成功:
ldconfig -p | grep libncurses.so.5
✅ 方法二:使用软链接“欺骗” MegaCLI(仅限临时解决)
如果你已经有 libncurses.so.6
,可以创建一个软链接:
ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /lib/x86_64-linux-gnu/libncurses.so.5
⚠️ 注意:这种方式不保证稳定性,但在很多情况下可以让 MegaCLI 正常运行。
🛠️实际运行结果展示
root@pve:/opt/MegaRAID/MegaCli# ./MegaCli64 -AdpAllInfo -aAll
MegaCLI 输出非常关键,它揭示了你当前 RAID 控制器(PERC 6/i Integrated)和磁盘阵列的健康状况
⚠️ RAID 状态摘要
项目 | 状态 |
---|---|
虚拟磁盘(VD)数量 | 1 |
虚拟磁盘状态 | Degraded(降级) |
物理磁盘数量 | 4 |
Critical(临界)磁盘 | 3 块 |
Failed(故障)磁盘 | 1 块 |
这意味着你的 RAID 阵列已经失去了冗余保护,处于高风险状态。如果再有一块磁盘彻底损坏,整个阵列可能会崩溃,导致数据不可恢复。
🛠️ 建议操作步骤
✅ 1. 立即备份数据
- RAID 已降级,数据安全性极低。
- 使用
rsync
、scp
或挂载外部存储进行完整备份。
✅ 2. 确认故障磁盘编号
运行以下命令查看具体哪块磁盘失败:
./MegaCli64 -PDList -aAll | grep -E 'Slot|Firmware state|Media Error Count|Predictive Failure Count'
运行以上命令后,以下是输出结果分析
🔍 磁盘状态分析
插槽 | 状态 | 媒体错误计数 | 预测故障计数 | 固件状态 |
---|---|---|---|---|
Slot 0 | 临界(Critical) | 1 | 7 | Online, Spun Up |
Slot 1 | 故障(Failed) | 0 | 0 | Failed |
Slot 2 | 临界(Critical) | 3 | 6 | Online, Spun Up |
Slot 3 | 临界(Critical) | 125 | 8 | Online, Spun Up |
⚠️ 当前 RAID 状态总结
- Slot 1 已完全故障,无法参与阵列。
- Slot 0、2、3 都处于临界状态,SMART 预测它们即将发生硬件故障。
- RAID 虚拟磁盘已处于 Degraded(降级) 状态。
- 如果再有一块磁盘彻底失败,整个阵列将崩溃,数据可能无法恢复。
✅ 3. 更换故障磁盘
- 将故障磁盘替换为相同容量和接口的硬盘(建议 SAS)。
- 插入后,RAID 控制器应自动开始重建(Auto Rebuild 已启用)。
✅ 4. 监控重建进度
./MegaCli64 -LDInfo -Lall -aAll
✅ 查看当前 RAID 类型的命令
运行以下命令可以查看虚拟磁盘(VD)的详细信息,包括 RAID 级别:
./MegaCli64 -LDInfo -Lall -aAll
在输出中你会看到类似这样的字段:
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3
这个表示的是 RAID 5。不同的组合含义如下:
显示内容 | 实际 RAID 类型 |
---|---|
Primary-0, Secondary-0 | RAID 0 |
Primary-1, Secondary-0 | RAID 1 |
Primary-5, Secondary-0 | RAID 5 |
Primary-6, Secondary-0 | RAID 6 |
Primary-1, Secondary-3 | RAID 10 |
Primary-5, Secondary-3 | RAID 50 |
🧠 RAID 类型快速判断技巧
- RAID 0:无冗余,性能高,风险高
- RAID 1:镜像,安全性高,容量减半
- RAID 5:至少 3 块盘,可容忍 1 块故障
- RAID 6:至少 4 块盘,可容忍 2 块故障
- RAID 10:镜像+条带,至少 4 块盘,性能与安全兼顾
🧾 实际环境中运行后结果如下
项目 | 值 |
---|---|
RAID 类型 | RAID 5(Primary-5, Secondary-0, Qualifier-3) |
虚拟磁盘数量 | 1 |
磁盘数量 | 4 块 |
阵列状态 | ⚠️ Degraded(降级) |
总容量 | 2.727 TB |
校验盘大小 | 931 GB(用于 RAID 5 的冗余) |
条带大小(Strip Size) | 64 KB |
缓存策略 | WriteBack(写入缓存)、ReadAheadNone(无预读) |
加密 | 未启用 |
是否缓存虚拟磁盘 | 否 |
🔍 RAID 5 简要说明
RAID 5 是一种常见的冗余方案,特点如下:
- 至少需要 3 块硬盘
- 可容忍 1 块硬盘故障
- 使用 条带 + 校验 实现冗余
- 性能适中,容量利用率较高
我的阵列使用了 4 块盘,其中 1 块已故障(Slot 1),所以当前处于 降级状态。如果再有一块盘挂掉,整个阵列将无法恢复。
🛠️最终结果
这台服务器跑的不是什么重要业务,且已采购13年之久,后续挂了就直接报废了。
我这台服务器的RAID 阵列现在就像一辆高速行驶但轮胎已经磨损严重的车——还能跑,但随时可能爆胎。我们来快速梳理一下:
📊 RAID 磁盘健康状态一览
插槽 | 媒体错误数 | 预测故障数 | 固件状态 | 状态评估 |
---|---|---|---|---|
Slot 0 | 1 | 7 | Online, Spun Up | ⚠️ 临界(高风险) |
Slot 1 | 0 | 0 | Failed | ❌ 已故障 |
Slot 2 | 3 | 6 | Online, Spun Up | ⚠️ 临界(高风险) |
Slot 3 | 125 | 8 | Online, Spun Up | 🔥 极度危险 |
🚨 关键问题
- Slot 1 已完全故障,不参与 RAID。
- Slot 0、2、3 都有明显的 SMART 故障预测,尤其是 Slot 3,媒体错误高达 125 次,几乎是“爆炸边缘”。
- 如果再有一块盘彻底挂掉,整个 RAID 阵列可能会崩溃,数据将面临不可恢复的风险。