问题背景
在服务器运维过程中,遇到了一个棘手的问题:向服务器插入了一块新的 1TB SAS 硬盘后,使用 lsblk 命令无法看到这块新硬盘。经过排查发现,这块硬盘虽然已经被 RAID 卡识别,但处于 Unconfigured(good) 状态,没有被配置为虚拟磁盘,因此操作系统无法访问。
本文记录了使用 MegaCli 工具排查和解决此问题的完整过程。
安装 MegaCli 工具
MegaCli 是用于管理 LSI/Broadcom RAID 卡的命令行工具,在 Ubuntu/Debian 系统上的安装步骤如下:
下载 MegaCli 软件包
|
|
解压软件包
|
|
转换 RPM 包为 DEB 包
由于下载的是 RPM 格式,需要使用 alien 工具转换为 DEB 格式:
|
|
安装 DEB 包
|
|
修复依赖库问题(如需要)
如果遇到缺少 libncurses.so.5 的错误,创建符号链接:
|
|
验证安装
|
|
查看 RAID 状态
使用以下命令查看所有物理硬盘的详细信息:
|
|
通过 MegaCli 的输出,可以清楚地看到服务器上所有硬盘的当前状态。
排查结论
服务器共有 7 块物理硬盘,新插入的硬盘位于 Slot 6,当前状态为 Unconfigured(good)(未配置,状态良好),还没有被配置成虚拟磁盘(Virtual Drive),因此 Linux 操作系统(lsblk)无法识别它。
硬盘分布详细解读
为了便于理解,将 7 块硬盘按用途分为 4 组:
系统盘(对应 /dev/sda)
- 位置:Slot 5
- 型号:Intel 120GB SSD
- 状态:Online
- 配置:单盘 RAID 0(或直通模式)
- 用途:系统启动盘
数据盘阵列(对应 /dev/sdb,容量 2.7TB)
- 位置:Slot 0, 1, 2, 3
- 型号:4 块 Seagate 1TB SAS 硬盘
- 状态:Online
- 配置:RAID 5 阵列(3块数据 + 1块校验 = 3TB 可用容量)
数据盘(对应 /dev/sdc,容量 931GB)
- 位置:Slot 7
- 型号:Seagate 1TB SAS 硬盘
- 状态:Online
- 配置:单盘 RAID 0
🔍 关键发现:新插入的硬盘(Slot 6)
- 位置:Slot 6
- 型号:Toshiba 1TB SAS 硬盘
- 状态:
Unconfigured(good)(未配置,状态良好) - Foreign State:None(无外来配置)
- Other Error Count:9(有少量历史错误计数,不影响当前识别)
- 现状:硬盘物理连接正常且被 RAID 卡识别,但由于未被加入任何 RAID 组或创建为虚拟磁盘,RAID 卡不会将其呈现给操作系统
问题分析:为什么没有自动识别?
原因一:Foreign State 为 None
输出显示 Foreign State: None,说明 RAID 卡没有检测到这块盘上有可识别的旧 RAID 配置信息(或已被清除)。
- 如果之前是 Linux 软 RAID(mdadm):硬件 RAID 卡无法识别软 RAID 元数据,会将其视为空盘
- 如果之前是硬件 RAID:可能是 RAID 元数据不兼容或已被清除
原因二:需要手动创建虚拟磁盘
在 Dell PERC 等 RAID 卡上,必须将物理磁盘配置为虚拟磁盘(Virtual Drive, VD),操作系统才能访问。
解决方案:配置硬盘上线
既然硬盘状态是 Unconfigured(good),需要将其配置为单盘 RAID 0,操作系统才能识别。
创建单盘 RAID 0
执行以下命令将 Slot 6 的硬盘配置为虚拟磁盘:
|
|
预期结果
命令执行成功后,终端会提示:
|
|
再次运行 lsblk 命令,应该就能看到新增的 /dev/sdd 设备了。
⚠️ 数据安全提示
重要:-CfgLdAdd 命令会创建 RAID 结构并重写磁盘头部元数据,可能会影响原有数据的访问。
不同场景的数据恢复方案
| 原硬盘配置 | Foreign State | 数据恢复可能性 |
|---|---|---|
| Linux 软 RAID (mdadm) | None | 配置上线后,可尝试使用 mdadm --assemble --scan 找回数据 |
| 硬件 RAID | None | RAID 卡已不识别旧配置,只能作为新盘挂载,能否恢复取决于分区表是否完整 |
| 全新硬盘 | None | 无数据丢失风险,可直接使用 |
刷新系统设备列表
配置完成后,如果系统仍未自动识别新设备,可以手动刷新 SCSI 总线:
|
|
执行后使用 lsblk 或 fdisk -l 验证新硬盘是否已经可见。
总结
本次排查过程的关键步骤:
- ✅ 安装 MegaCli 工具进行 RAID 卡管理
- ✅ 使用
-PDList命令查看所有物理硬盘状态 - ✅ 定位问题:新硬盘处于
Unconfigured(good)状态 - ✅ 使用
-CfgLdAdd命令创建单盘 RAID 0 - ✅ 刷新系统设备列表,验证硬盘上线
通过这次排查,深刻理解了硬件 RAID 卡的工作机制:物理硬盘必须先配置为虚拟磁盘,操作系统才能访问。在日常运维中,遇到硬盘无法识别的问题时,应首先检查 RAID 卡层面的配置状态,而不是仅在操作系统层面排查。