Linux服务器磁盘阵列配置步骤:零基础也能建RAID
为什么要先了解磁盘阵列
磁盘阵列(RAID)能让多块硬盘组合成一个逻辑盘,要么提升读写速度(RAID 0),要么提供数据冗余(RAID 1/5/10)。
对于Linux服务器,尤其是网站、文件共享或数据库场景,合理配置磁盘阵列能直接提升稳定性和性能。
本文以最常见的mdadm工具为例,带你把Linux服务器磁盘阵列配置的每一步跑通。
前置准备:确认你的环境
开始之前,确认以下条件已满足:
- 至少两块空数据盘:建议使用全新或已备份数据的硬盘,因为创建阵列会清空盘上所有数据。
- 操作系统:CentOS 7/8、Ubuntu 20.04+ 或 Debian 11+,已联网。
- root权限:需要用
sudo或直接root用户执行命令。 - 检查硬盘设备名:执行
lsblk或fdisk -l,记下你要用的盘,例如/dev/sdb和/dev/sdc。
分步操作:用mdadm创建RAID
第一步:安装mdadm
CentOS / RHEL / Rocky Linux 系:
yum install -y mdadm
Ubuntu / Debian 系:
apt update && apt install -y mdadm
第二步:创建RAID阵列
示例:RAID 1(镜像,2块盘)
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
执行后会提示是否继续,输入 y 并回车。
等待几秒,阵列就创建好了。
如果想做RAID 5(需要至少3块盘),命令改为:
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
注意:--level后跟 RAID 级别,--raid-devices后跟硬盘数量。盘名要按实际lsblk结果填写,切勿把系统盘(如/dev/sda)加进去。
第三步:查看阵列创建状态
cat /proc/mdstat
正常输出会显示类似 md0 : active raid1 sdc[1] sdb[0],并看到进度或 [UU] 表示两块盘都正常。
如果是 RAID 5,会看到多个盘符和 [UUU]。
第四步:格式化并挂载
阵列设备 /dev/md0 需要格式化文件系统,例如 ext4:
mkfs.ext4 /dev/md0
创建挂载点,例如 /mnt/raid:
mkdir -p /mnt/raid
mount /dev/md0 /mnt/raid
挂载后可用 df -h 检查,正常会显示 /dev/md0 挂载到了 /mnt/raid。
第五步:配置开机自动挂载
先获取阵列的UUID:
blkid /dev/md0
输出类似 UUID="abc123..."。
然后编辑 /etc/fstab:
echo 'UUID=abc123... /mnt/raid ext4 defaults 0 0' >> /etc/fstab
注意:UUID请替换成实际值,不要抄样例。
同时保存阵列配置,防止重启后丢失:
mdadm --detail --scan >> /etc/mdadm.conf
避坑指南:新手最容易栽跟头的地方
- 盘名认不准:
/dev/sda往往是系统盘。创建阵列时误加到系统盘会导致系统无法启动。建议用lsblk查看各盘大小,空数据盘一般没有分区表。 - 忘记保存阵列配置:不执行
mdadm --detail --scan >> /etc/mdadm.conf,重启后阵列可能无法自动组装。 - 挂载路径权限:如果挂载点用于网站文件,记得用
chown www:www /mnt/raid(根据你Web服务用户调整)。 - RAID 0 没有容错:任何一块盘损坏,所有数据都会丢失。生产环境请至少用RAID 1或5。
效果验证:确认阵列工作正常
用下面几个命令检查:
- 查看阵列详细信息:
mdadm --detail /dev/md0,输出应显示State : clean、Active Devices : 2等。 - 测试写入与读取:
dd if=/dev/zero of=/mnt/raid/testfile bs=1M count=100,写入速度正常即阵列无异常。 - 模拟磁盘故障(仅测试):
mdadm --manage /dev/md0 --fail /dev/sdb,然后cat /proc/mdstat应看到[U_]表示一块盘坏了。接着mdadm --remove /dev/md0 /dev/sdb移除坏盘,再mdadm --add /dev/md0 /dev/sdb换上新盘,等待重建完成。
高频问题解答
Q:创建阵列时提示“device is busy”怎么办?
A:该磁盘可能已挂载或有分区表。先用 swapoff /dev/sdb 关掉交换分区,再用 wipefs -a /dev/sdb 清理签名(注意清空数据)。
Q:重启后阵列没了?
A:检查 /etc/mdadm.conf 是否存在且包含正确的 ARRAY 行。手动执行 mdadm --assemble --scan 可以临时恢复,然后重新保存配置。
Q:可以给已存在的阵列扩容吗?
A:可以。例如RAID 1增加盘:mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdd,但文件系统需要额外支持扩容(如 ext4 需 resize2fs)。新手建议先按原始需求规划好盘数。
如果你正在处理Linux服务器磁盘阵列配置,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
用好 man mdadm 和社区文档,大部分问题都能自行解决。