答案:使用mdadm工具可创建和管理Linux软件RAID阵列,以RAID 5为例,需准备至少三块硬盘,清除分区并创建类型为fd的RAID分区,通过mdadm --create命令创建阵列,格式化为ext4等文件系统后挂载使用,并将配置写入/etc/mdadm/mdadm.conf和/etc/fstab以实现开机自动挂载,其中nofail选项防止因RAID问题导致系统无法启动;RAID级别选择需根据需求权衡性能与安全,RAID 0提升性能但无冗余,RAID 1提供镜像保护但容量利用率低,RAID 5兼顾性能、冗余和容量,允许单盘故障,RAID 6支持双盘冗余但写性能较低,RAID 10结合RAID 1和RAID 0的优点,性能好且支持多盘故障但至少需四块盘且容量利用率50%;日常维护中可通过cat /proc/mdstat和mdadm --detail查看阵列状态,配置MAILADDR实现邮件告警,并通过echo "check" > /sys/block/md0/md/sync_action定期进行完整性检查;当成员盘损坏时,应先确认故障盘,使用--fail和--remove将其从阵列中移除,更换新盘并创建相同类型分区后,使用--add加入阵列,系统将自动重建

在Linux里折腾磁盘阵列,说白了,就是用
mdadm
mdadm
要配置一个基本的Linux软件RAID阵列,比如一个RAID 5,通常会经历以下几个步骤。这并非一蹴而就,需要一点耐心和细致。
首先,你得识别出那些准备用来组建阵列的裸盘。通常它们会是
/dev/sdb
/dev/sdc
/dev/sdd
fdisk
parted
sudo fdisk /dev/sdb
d
接着,为这些盘创建RAID分区。这步其实是可选的,直接用整块盘也可以,但为了管理方便,通常还是会创建类型为
fd
fdisk
n
t
fd
现在,核心来了,使用
mdadm
/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/md0
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
执行这条命令后,阵列就开始同步了。这个过程可能需要一段时间,具体取决于磁盘大小和系统负载。你可以通过
cat /proc/mdstat
阵列创建完成后,它现在只是一个“裸”的块设备,需要格式化才能使用。你可以选择你喜欢的任何文件系统,比如
ext4
XFS
sudo mkfs.ext4 /dev/md0
格式化完毕,就可以挂载它了。先创建一个挂载点:
sudo mkdir /mnt/raid5_data sudo mount /dev/md0 /mnt/raid5_data
为了让阵列在系统重启后也能自动挂载,你需要做两件事。一是把阵列的配置信息保存到
mdadm.conf
/etc/fstab
保存阵列配置:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
更新initramfs以确保系统启动时能识别RAID:
sudo update-initramfs -u
编辑
/etc/fstab
/dev/md0 /mnt/raid5_data ext4 defaults,nofail 0 0
这里的
nofail
到这里,一个基本的RAID 5阵列就算配置完成了。
这真的是个老生常谈,但又不得不深入思考的问题。我个人在选择RAID级别时,往往会先问自己几个问题:最看重什么?是极致的性能,还是绝对的数据安全?抑或是两者之间的平衡点?
比如,如果你只是想把几块小容量硬盘合并成一个大卷,或者追求纯粹的读写速度,对数据丢失几乎零容忍,那RAID 0可能听起来很诱人。它把数据条带化分布在所有磁盘上,理论上读写性能是单盘的N倍(N为磁盘数量)。但请注意,RAID 0没有冗余,任何一块盘挂掉,整个阵列的数据就全毁了,这是它的致命伤。我一般只在对性能有极端要求,且数据可以随时重建,或者有其他完善备份方案的场景下考虑它。比如,一些临时的高速缓存区。
RAID 1,也就是镜像,它把数据完整地复制到两块或多块盘上。这意味着你需要至少两块盘,且可用容量只有其中一块盘的大小。它的好处是,只要有一块盘还活着,数据就在。读性能会有提升,写性能则可能受限于最慢的那块盘。对于我来说,存放重要文档、照片,或者关键系统盘,RAID 1是首选,它提供了最直接、最可靠的数据保护。缺点是存储效率低,一半的容量都用来做冗余了。
而RAID 5,是我在兼顾性能、冗余和存储效率时最常用的一个选项。它需要至少三块盘,通过奇偶校验(parity)来实现数据冗余。这意味着即使其中一块盘损坏,数据依然可以通过剩余的盘和奇偶校验信息重建出来。它的可用容量是(N-1)块盘的总和。读写性能比RAID 0差,但比RAID 1好,尤其是在读操作上。写操作因为要计算奇偶校验,会略有开销。对于多数文件服务器、NAS或者个人数据中心,RAID 5是个非常平衡的选择。不过,当阵列中出现第二块盘损坏时(在第一块盘还没来得及替换重建完成之前),整个阵列的数据也会丢失。这也就是为什么很多人现在倾向于RAID 6,或者RAID 10。
RAID 6是RAID 5的升级版,它使用了双重奇偶校验,允许同时损坏两块盘而数据不丢失。当然,这需要更多的磁盘(至少4块),并且会牺牲更多的容量(两块盘的容量用于奇偶校验)。性能上,写性能会比RAID 5稍差,但数据安全性大大提高。对于存储极其重要,且对可用性有高要求的场景,RAID 6是个不错的选择。
RAID 10(或者RAID 1+0)则是RAID 1和RAID 0的结合体。它首先创建多个RAID 1对,然后再将这些RAID 1对组成一个RAID 0。这意味着它同时拥有RAID 0的性能和RAID 1的冗余。至少需要四块盘,并且磁盘利用率只有50%。但它的读写性能非常出色,同时可以容忍每个RAID 1对中一块盘的故障。对于数据库、虚拟机存储等对性能和可靠性都有高要求的应用,RAID 10往往是最佳实践。
所以,没有绝对“最好”的RAID级别,只有“最适合”你当前需求的。
阵列搭起来了,这只是第一步。更重要的是,你得知道它是不是健康地运行着,别等真出问题了才发现。监控和维护,其实就是日常的“体检”和“保养”。
最直接的办法,就是查看
/proc/mdstat
md
cat /proc/mdstat
你会看到每个阵列的名称、RAID级别、参与的设备、状态(如
active
recovering
resync
[U_]
[_U]
[U_]
[__]
[UUU]
mdadm
mdadm --detail /dev/md0
sudo mdadm --detail /dev/md0
输出中
State : clean
State : clean, degraded
为了实现自动化监控,
mdadm
/etc/mdadm/mdadm.conf
MAILADDR
postfix
ssmtp
# 在mdadm.conf中添加 MAILADDR your_email@example.com
mdadm
mdadm --monitor
此外,定期进行RAID阵列的完整性检查(
check
repair
echo "check" | sudo tee /sys/block/md0/md/sync_action
这个操作会在后台进行,你可以在
/proc/mdstat
[check]
mdadm
总的来说,主动查看状态、配置邮件告警,并定期进行完整性检查,是保证RAID阵列长期稳定运行的关键。
这是每个RAID使用者都可能遇到的噩梦,但有了RAID的冗余特性,它往往只是个小插曲,而不是灾难。关键在于你如何冷静且正确地处理。
假设你的RAID 5阵列
/dev/md0
/dev/sdb1
cat /proc/mdstat
mdadm --detail /dev/md0
degraded
/dev/sdb1
[F]
[U_]
第一步,确认故障盘。通常,系统日志(
dmesg
journalctl -xe
第二步,将故障盘从阵列中标记为
failed
mdadm
sudo mdadm --manage /dev/md0 --fail /dev/sdb1 sudo mdadm --manage /dev/md0 --remove /dev/sdb1
执行
remove
mdadm
degraded
第三步,更换物理硬盘。关机,拔掉坏盘,插上新盘。启动系统后,新盘可能会被识别为
/dev/sde
第四步,将新盘添加到阵列中。假设新盘是
/dev/sde
fd
/dev/sde1
sudo mdadm --manage /dev/md0 --add /dev/sde1
一旦新盘被添加进去,
mdadm
cat /proc/mdstat
[UU_]
重建完成后,
/proc/mdstat
[UUU]
clean
需要注意的是,在重建过程中,如果再有另一块盘发生故障,那么整个阵列的数据就可能彻底丢失了。这就是为什么在RAID 5中,一旦有盘损坏,应该尽快更换并重建。这也是RAID 6和RAID 10在应对多盘故障时更具优势的原因。
所以,保持警惕,及时响应,是RAID阵列健康维护的关键。
以上就是如何在Linux中配置磁盘阵列 Linux mdadm管理RAID指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号