一、为什么 IDC 服务器离不开 RAID
单块机械硬盘的可靠性撑不起 7x24 小时的业务:盘坏了数据就没了,性能也跟不上。RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)就是把多块盘组合成一个逻辑盘,要么提升性能,要么提升可靠性,要么两者兼得。在 IDC 场景里,除了极低配的测试机,生产服务器几乎全部要求配置 RAID。
二、常见 RAID 级别横向对比
| 级别 | 最少盘数 | 可用容量 | 容错能力 | 适用场景 |
|---|---|---|---|---|
| RAID0 | 2 | 100%(N 块盘总和) | 无,坏一块全毁 | 缓存/临时数据,追求极致性能 |
| RAID1 | 2 | 50% | 允许坏 1 块 | 系统盘、数据库日志 |
| RAID5 | 3 | (N-1)/N | 允许坏 1 块 | 文件存储、常规业务盘 |
| RAID10 | 4 | 50% | 每组镜像允许坏 1 块 | 数据库、高 IO 业务 |
选择口诀:要性能不要命选 0;要命不要性能选 1;性价比之选选 5;又要命又要性能选 10。数据库和高 IO 业务无脑 RAID10,这是被无数生产事故验证过的结论。
三、硬件 RAID 还是软 RAID?
硬件 RAID 靠独立 RAID 卡(LSI/Avago/Broadcom 芯片为主流)计算校验,不占用 CPU,带缓存电池(BBU)还能做写缓存,断电不丢数据,是生产服务器的标配。软 RAID 用操作系统(Linux mdadm / Windows 动态磁盘)实现,零成本,但占用 CPU 且重启流程更脆弱,一般只用于测试环境或预算极紧的场合。
判断服务器是否已配置硬 RAID:
# 查看是否有 RAID 卡(厂商不同命令不同) lspci | grep -i raid # 常见输出: LSI Logic / Symbios Logic MegaRAID SAS-3 3108 # 安装厂商管理工具后查看阵列状态 megacli -LDInfo -Lall -aALL perccli /c0 show storcli /c0 show
四、软 RAID 实战:mdadm 从创建到使用
虽然生产环境多用硬 RAID,但掌握 mdadm 对理解 RAID 原理、排查硬 RAID 问题都很有帮助。以三块盘做 RAID5 为例:
# 1. 安装 yum install -y mdadm # CentOS/RHEL apt install -y mdadm # Debian/Ubuntu # 2. 创建 RAID5(/dev/sdb /dev/sdc /dev/sdd 三块新盘) mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd # 3. 查看创建进度与状态 cat /proc/mdstat mdadm --detail /dev/md0 # 4. 格式化并挂载 mkfs.ext4 /dev/md0 mkdir -p /data mount /dev/md0 /data # 5. 写入配置文件,开机自动组装 echo 'DEVICE /dev/sd[b-d]' > /etc/mdadm.conf mdadm --detail --scan >> /etc/mdadm.conf echo '/dev/md0 /data ext4 defaults 0 0' >> /etc/fstab
五、热备盘与故障恢复演练
生产阵列建议配置热备盘(Hot Spare),坏盘后自动顶替重建,缩短故障窗口:
# 给 RAID5 添加一块热备盘 /dev/sde mdadm --add /dev/md0 /dev/sde # 模拟一块盘故障(生产环境千万别手滑) mdadm --fail /dev/md0 /dev/sdc mdadm --remove /dev/md0 /dev/sdc # 观察自动重建(热备盘会自动顶替) cat /proc/mdstat # 换上新盘后手动加回 mdadm --add /dev/md0 /dev/sdc
注意:RAID 不是备份。RAID5/10 只防"单块盘物理损坏",防不了误删文件、勒索加密、控制器逻辑故障。阵列之外必须另做数据备份,这条红线一定要守住。
六、硬 RAID 卡常用巡检命令
生产服务器巡检阵列状态,MegaRAID 卡最常用:
# 查看所有逻辑盘状态(State 是否为 Optimal) megacli -LDInfo -Lall -aALL | grep -E 'Virtual Drive|State|RAID Level' # 查看物理盘状态(是否为 Online/Unconfigured Good) megacli -PDList -aALL | grep -E 'Enclosure Device ID|Slot Number|Firmware state|Media Error' # 查看电池/电容状态(BBU 失效会导致写策略降级) megacli -AdpBbuCmd -GetBbuStatus -aALL # 查看重建进度 megacli -PDRbld -ShowProg -PhysDrv [252:2] -aALL
把上面命令封装成脚本配合 crontab 每日执行,状态非 Optimal 就告警,是 IDC 运维的基本功。
七、选型建议与常见坑
- 系统盘:两块盘 RAID1 足够,别浪费盘位。
- 数据盘:数据库 RAID10,文件存储 RAID5/6(大容量场景考虑 RAID6 双盘容错)。
- 坑一:SSD 组 RAID5 有"写放大"问题,消费级 SSD 还容易触发掉盘,务必选企业级盘。
- 坑二:别把 RAID 卡接的盘和主板 SATA 口直连的盘混在一个逻辑卷里,性能与故障行为完全不同。
- 坑三:硬 RAID 换卡时注意固件版本,跨代换卡可能导致阵列无法识别,先备份配置(megacli -CfgSave)。
最后再强调一遍:RAID 解决的是"盘坏了不宕机",备份解决的是"数据没了能找回",两者缺一不可。祝大家的阵列永远 Optimal。
评论