Linux 中 Swap 与 RAID 的组合实践
一、总体原则
- /boot 必须是 RAID1 镜像,且通常不做 LVM;多数安装器只允许 /boot 使用 RAID1,以确保引导可靠性。其余数据分区(如 /、/home)可按需求选择 RAID5/RAID10 或结合 LVM 做灵活扩容。
- Swap 可以使用 RAID0 提升吞吐,也可用 RAID1 提升可用性;若更看重可靠性,优先 RAID1;若更看重性能且能容忍故障,可用 RAID0。很多安装器也支持把 swap 做成 RAID。
- 不要把 /boot 放进 LVM,也不要把 swap 放进 LVM(常见做法是让 /boot 与 swap 直接使用 MD 设备),以减少启动与故障场景的复杂度。
二、常见组合与适用场景
| 组合 |
可靠性 |
性能 |
适用场景 |
要点 |
| /boot: RAID1;Swap: RAID0;/: RAID5/RAID10 |
中(swap 无冗余) |
高(RAID0 并行) |
写入密集、可容忍 swap 故障的通用服务器 |
安装器通常支持;swap 用 RAID0 提升换页吞吐 |
| /boot: RAID1;Swap: RAID1;/: RAID5/RAID10 |
高 |
中-高 |
稳定性优先的数据库/应用服务器 |
swap 镜像避免换页中断;容量减半 |
| /boot: RAID1;Swap: 单盘分区(多盘多优先级);/: RAID10 |
中(单盘 swap 风险) |
中-高 |
已有多盘,想简单并行化 swap |
多 swap 分区设相同优先级实现并行 |
| /boot: RAID1;LVM on RAID5/10;Swap: RAID1 |
高 |
中-高 |
需要后期灵活扩容的系统 |
/、/home 等放进 LVM;swap 仍用 MD 镜像 |
说明:上表的做法与限制与常见安装器行为一致(如 /boot 仅 RAID1、支持 swap 做 RAID),且社区有将 swap 做成 RAID0/RAID1 的实操示例。
三、容量与配置建议
- Swap 容量:可按容量阶梯设置——≤4GB 内存:swap≈2×内存;4–8GB:swap≈内存;8–64GB:swap≈8GB;64–256GB:swap≈16GB。内存很大(如 ≥16GB)且非内存数据库场景,可仅保留 4–8GB 的 swap 作为缓冲与安全垫。
- /boot 容量:建议 500MB–1GB,仅放内核与 initramfs,使用 RAID1 两盘镜像即可。
- 并发与优先级:多块盘做 swap 时,给每个 swap 分区相同的优先级(如 pri=1),让内核并行使用;若追求可靠性,优先使用 RAID1 而非 RAID0。
- 条带与对齐:做 RAID0/RAID10 时选择合适的条带大小(如 256KB–512KB),并对齐分区与文件系统,减少写放大与抖动。
四、安装与配置要点(简版)
- 分区规划:每块盘划分出相同大小的 100MB(/boot) 与 N GB(swap),其余空间用于 RAID5/RAID10 的数据卷;/boot 分区类型设为 raid,swap 分区类型设为 linux swap。
- 创建 MD 设备:先建 MD0(RAID1,/boot),再建 MD1(RAID0/RAID1,swap),其余空间建 MD2(RAID5/RAID10,数据);随后在 MD2 上创建 LVM 以容纳 /、/home 等。
- 格式化与挂载:/boot → ext4(或 ext3);swap → mkswap + swapon;/ 与 /home → ext4/xfs;在 /etc/fstab 中写入对应条目,swap 可设 pri=1 实现并行。
- 验证与维护:用 cat /proc/mdstat 查看阵列状态;用 free -h 检查 swap;必要时用 mdadm 进行故障演练、热移除/添加磁盘。
五、运维与风险提示
- swap 在 RAID0 下无冗余:一旦一块盘故障,swap 数据可能丢失并导致进程异常;对稳定性敏感的业务优先 RAID1。
- /boot 只做 RAID1:不要放入 LVM,避免引导链复杂度与恢复困难。
- 容量规划留有余量:RAID 会牺牲部分可用容量(如 RAID1 减半,RAID5 损失 1 块盘),并在扩容时优先考虑 加盘重建 或 LVM 动态扩展 数据卷。
- 监控与健康检查:定期用 /proc/mdstat、smartctl 等工具巡检阵列与磁盘健康,提前更换劣化盘,降低故障窗口。