软件 RAID 是什么
Linux 内核的 md 子系统直接用 CPU 做 RAID 运算,mdadm 是它的管理工具,两者合起来就是常说的软 RAID。它的元数据(superblock)写在成员盘上,换机器、换发行版后可以用 mdadm --assemble 重新组装,迁移性明显好于依赖固件与专有格式的硬件卡。代价也很清楚:档位运算和校验计算吃 CPU,没有卡上的缓存与保护电池,写性能与掉电安全性要仰仗文件系统与磁盘自身。
基本信息
| 组成 | 内核 md 模块 + mdadm 管理工具(多数发行版需单独安装) |
|---|---|
| 支持级别 | linear / 0 / 1 / 4 / 5 / 6 / 10(10 还有 near、far、offset 布局选项) |
| 元数据版本 | 0.90 / 1.0 / 1.1 / 1.2,1.2 默认写在盘头,做整盘阵列时要注意引导分区 |
| 状态入口 | /proc/mdstat、/sys/block/md0/md/、mdadm --detail |
| 典型用途 | 系统盘镜像、中小规模数据盘、无阵列卡的服务器 |
环境检查与创建
环境检查与创建
mdadm --version # 确认工具已安装
lsmod | grep -E "^md" # 确认内核模块已加载
cat /proc/mdstat # 看现有阵列与状态
mdadm --create /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 --chunk=256 /dev/sd[b-f]1
mdadm --detail /dev/md0 # 核对成员、级别、状态与 UUID常用命令速查
| 命令 | 作用 | 注意 |
|---|---|---|
| --create | 创建阵列并写入 superblock | 会覆盖目标盘,先确认盘号 |
| --detail | 查看阵列详情 | 故障排查的第一站 |
| --manage --add | 把盘加入阵列 | 容量不足时会被拒绝 |
| --fail 与 --remove | 标记故障并从阵列移除 | 先 fail 再 remove,顺序别反 |
| --assemble | 按元数据重新组装阵列 | 换机、重装系统后使用 |
| --stop | 停止阵列 | 停之前卸载文件系统 |
| --grow | 扩容或调整参数 | 改条带大小不支持,需重建 |
软 RAID 的适用与不适用
- 适用:系统盘做 RAID 1,逻辑简单、迁移方便、不依赖专有固件
- 适用:中小规模数据盘,级别与条带参数都可视需要调整
- 不适用:对写延迟极敏感的高负载数据库,缺少卡上缓存与写保护
- 不适用:需要掉电缓存保护的场景,md 自身不提供电池保护
- 混合方案:硬件卡做物理阵列、md 或逻辑卷管理器在上层做二次组织
元数据写在盘上带来一个实际好处:整机迁移或系统盘重建后,接上原盘执行 mdadm --assemble --scan 一般就能把阵列找回来,不必依赖原机器的固件配置。
软 RAID 没有卡上缓存与电池保护:突然掉电时缓存中的数据依赖文件系统的日志与屏障机制落盘,关键数据盘要确认挂载参数与日志策略,并保证有可用备份。