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
下一篇起进入模块八:安全与加固。