RAID 是什么

Redundant Array of Independent Disks——用多块物理盘组合起来,提供速度 / 冗余 / 容量 中的一项或几项。

两种实现:

实现 工具 备注
硬件 RAID RAID 卡 主机看到一个大盘,BIOS 配置
软件 RAID mdadm(Linux 标准) 灵活、不依赖硬件

下面讲软件 RAID 的概念。

4 个常用级别

RAID 0(条带,Stripe)

盘 1: A B C
盘 2: D E F
读写:并行 ← 速度翻倍
  • 速度 ✓✓(读写都翻倍)
  • 冗余 ✗(一块坏 = 全完)
  • 容量 = N × 单盘

RAID 0 没有任何容错——一块坏,数据全丢。生产几乎从不单独用

RAID 1(镜像,Mirror)

盘 1: A B C
盘 2: A B C   ← 完全复制
  • 冗余 ✓(一块坏,另一块还在)
  • 读速度 ✓(可并行)
  • 写速度 = 单盘(要写两份)
  • 容量 = 单盘(用了一半)

适合:系统盘 / 数据库 / 不允许丢数据的场景

RAID 5(条带 + 奇偶校验)

盘 1: A1 B1 P3      ← P 是校验
盘 2: A2 P2 C2
盘 3: P1 B3 C3
  • 冗余 ✓(任一块坏可恢复)
  • 速度 ✓(读快、写一般)
  • 容量 = (N-1) × 单盘(一块的容量做校验)
  • 需要至少 3 块

⚠ 大盘时代 RAID 5 重建期非常长(10TB 盘可能 1-2 天)—— 重建期间再坏一块就完。

RAID 10(1 + 0 组合)

盘 1+2: 镜像 A
盘 3+4: 镜像 B
A 和 B 之间再条带
  • 冗余 ✓
  • 速度 ✓✓
  • 容量 = N/2 × 单盘
  • 至少 4 块

适合:企业数据库 / 高性能场景——综合最优,代价是浪费一半容量。

选择决策表

场景 选什么
临时大文件、纯吞吐 RAID 0(接受数据可丢
操作系统盘 / 关键应用 RAID 1(2 块够)
大容量普通存储(4-6 块) RAID 5
数据库 / 高性能 RAID 10
容忍 2 块同时坏 RAID 6

RAID ≠ 备份。RAID 抗硬盘故障,但抗不了误删 / 病毒 / 误操作 / 自然灾害还是要做备份

mdadm:Linux 软 RAID 工具

sudo apt install mdadm

建 RAID 1

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 看状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0

格式化 + 挂载

sudo mkfs.ext4 /dev/md0
sudo mkdir /raid
sudo mount /dev/md0 /raid

持久化(重启后还在)

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

加到 fstab:

/dev/md0  /raid  ext4  defaults  0  2

替换坏盘

# 1. 标记盘为坏
sudo mdadm --manage /dev/md0 --fail /dev/sdb

# 2. 移除
sudo mdadm --manage /dev/md0 --remove /dev/sdb

# 3. 加新盘(物理换好之后)
sudo mdadm --manage /dev/md0 --add /dev/sdb_new

# 4. 看重建进度
cat /proc/mdstat

云上不用自己搞 RAID

云盘(阿里云盘 / AWS EBS / GCP PD)底层已经是多副本冗余——单盘可用性高。不要在云盘上再做 RAID 1,没意义还浪费成本。

云上 RAID 0 用于临时高吞吐(如机器学习训练)—— 用 NVMe 临时盘组阵列。

监控

# 看每个 md 设备状态
cat /proc/mdstat

# 详细
sudo mdadm --detail /dev/md0

# 告警邮件
sudo mdadm --monitor --mail=admin@example.com --delay=300 /dev/md0

下一篇起进入模块八:安全与加固。