← 返回文章列表

04 // 正文

RAID技术详解:磁盘阵列的原理与应用

数据是运维的命根子,而 RAID(独立磁盘冗余阵列)就是给磁盘数据买的"保险"——把多块物理盘组成一个逻辑单元,换来更高的性能、更大的容量或更强的可靠性。但保险也分险种:有的保速度,有的保数据,有的两者都想要。本文从 RAID 的原理讲起,逐个拆解 0/1/5/6/10 五个常见级别,再用 mdadm 实战创建一套软 RAID,最后聊聊选型和监控那些事。

RAID 到底是什么

RAID 的核心思想很简单:把多块物理磁盘组合成一个逻辑磁盘,通过条带化(striping)提升性能、通过镜像(mirroring)校验(parity)提供冗余。不同的组合方式就成了不同的"级别"。

💡 小知识

RAID 解决的是硬件故障问题——盘坏了数据还在。它解决不了误删除、病毒、程序 bug 这类问题,所以 RAID 永远替代不了备份。

五个常见级别速查

选 RAID 就是选平衡点:性能、容量、可靠性,三者通常不可兼得。

级别 最少盘数 性能 冗余 可用容量 适用场景
RAID 0 2 读写都高 100% 只求速度、数据可丢(缓存、临时数据)
RAID 1 2 读提升、写不变 镜像 50% 系统盘、关键数据
RAID 5 3 读好、写稍慢 单盘容错 (n-1)/n 兼顾性能与可靠性,中小型存储
RAID 6 4 读好、写更慢 双盘容错 (n-2)/n 大容量盘多、重建周期长
RAID 10 4 50% 既要速度又要安全,数据库

RAID 0:把速度拉满,把保险丢掉

数据分块写入多块盘,读写可以并行,性能接近线性翻倍。代价是毫无冗余——任何一块盘坏了,整个阵列直接报废。RAID 0 只适合缓存、临时数据这种"丢了无所谓、慢了会出问题"的场景。

RAID 1:镜像,双份保险

同一份数据完整写在两块盘上,一块坏了另一块顶上,恢复速度还快。缺点是容量利用率只有 50%,写入性能与单盘相当。它是最"朴实"的保险,适合系统盘和核心数据。

RAID 5:平衡大师

条带化 + 奇偶校验,校验信息分散在各块盘上,允许坏一块盘不丢数据。它是中小型企业存储的首选——但要注意,写操作要额外算校验位,有"写惩罚",而且大容量盘重建期间如果第二块盘也挂了,数据依然会丢。

RAID 6:双保险的重建焦虑解药

在 RAID 5 基础上再加一套校验,允许同时坏两块盘。盘越大、重建越慢,第二次故障的概率越高,所以大容量阵列越来越多人直接上 RAID 6,用容量换安心。

RAID 10:先镜像,再条带

先做镜像对,再把镜像对条带化。它继承了 RAID 0 的速度和 RAID 1 的可靠性,代价是容量打对折、成本最高。数据库这类既要高 IO 又要高可用的场景,RAID 10 是常客。

⚠️ 提醒:RAID 5 不是"坏一块盘不用管"。磁盘阵列不是静止的,重建期间阵列在"裸奔"边缘,一旦第二块盘出问题就全盘皆输。监控状态 + 准备热备盘,缺一不可。

实战:用 mdadm 创建软 RAID

Linux 上最常用的软 RAID 工具是 mdadm。以 RAID 5 为例走一遍完整流程:

# 1. 安装工具
sudo apt install mdadm -y

# 2. 用三块盘创建 RAID 5
sudo mdadm --create --verbose /dev/md0 --level=5 \
    --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

# 3. 等待同步完成(新阵列会先做全量同步)
cat /proc/mdstat

# 4. 查看详细状态
sudo mdadm --detail /dev/md0

# 5. 格式化并挂载
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/data

# 6. 写入配置,保证重启后阵列还在
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

看状态用 cat /proc/mdstat,重点盯 [UUU] 的 U 数量——每个 U 代表一块健康的盘,出现 _ 就是有盘掉线了。

RAID 监控与维护

阵列不会自己说话,你得主动盯:

# 监控阵列状态并邮件告警
sudo mdadm --monitor --mail=your@email.com --scan --daemonize

# 定期检查 SMART 健康信息
sudo smartctl -a /dev/sda

# 查看内核日志里的 RAID 消息
dmesg | grep -i raid

发现盘故障时,sudo mdadm --fail /dev/md0 /dev/sdb 标记故障盘,换上新盘后 --add 把它加入阵列,让它进入重建。全程不用停机,这正是 RAID 的价值所在。

硬件 RAID 还是软件 RAID

  • 硬件 RAID:专用控制器芯片处理,CPU 零负担、性能更好,但成本高,且控制器坏了可能读不出盘(尽量选带电池的靠谱型号)
  • 软件 RAID:由操作系统(mdadm)管理,成本低、配置灵活、跨机器可迁移,缺点是吃一点 CPU

对大多数中小规模场景,现代 Linux 的 mdadm 软 RAID 性能已足够好,性价比是明显优势。

最佳实践建议

  • 按场景选级别:性能优先 RAID 0,安全优先 RAID 1/10,平衡选 RAID 5,大盘选 RAID 6
  • 磁盘要同规格:容量、转速、型号尽量一致,否则按最差的盘算
  • 常备热备盘:热备盘(hot spare)能自动顶上,缩短裸奔窗口
  • 监控状态:mdadm 定时监控 + 邮件告警,别等掉盘了才知道
  • RAID 不等于备份:关键数据照常做异地备份,并定期演练恢复
  • 了解重建成本:大容量阵列重建要很久,提前做好计划
RAID 的价值不是"不会丢数据",而是"硬件坏了仍可继续服务、争取到从容恢复的时间"。它保护的是硬件故障,而不是人类的失误。所以任何时候,备份都该站在 RAID 身后。

把 RAID 级别和 mdadm 用熟之后,你的存储工具箱就算齐了大半。下一步可以试试搭建带热备盘的 RAID 6 或 RAID 10,实测一把重建过程和读写性能,比看多少篇文档都管用。

相关资源