mdadm配置软件RAID5实现过程详解

冷数据备份
    最近搞了3块16T 3.5寸机械盘,企业级HDD,还俩品牌。主机上其实还插着3块U.2 NVME SSD,那HDD就拿来做冷数据备份吧。既然是冷数据要长期保存,那给这三个大块头做个数据冗余。
    
    手头没有硬件RAID卡,其实主要是主板拥挤没地方插了。只能软件RAID方案,3块HDD弄个RAID 5可行。
    RAID创建
    系统是debian12,安装mdadm,配置RAID5。这些都简单,几条命令的事情,有很多教程。
    
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

    就是这么简单,可以监控一下状态
    
watch cat /proc/mdstat

    RAID同步
    到这里就要歇一歇了,RAID虽然已经创建了,但是系统要做数据同步。1300分钟?21.6个小时,要疯。
    
    RAID同步过程,它会将所有选定的驱动器中的数据同步并创建冗余信息,以确保数据的一致性和冗余备份。这个过程会对每个驱动器的所有扇区进行读取和写入,即使驱动器中没有实际数据。
    同步时间的长短取决于多个因素,包括驱动器的容量大小、速度、RAID 级别和控制器性能等。RAID 5 和 RAID 6 类型的同步通常比 RAID 1 和 RAID 0 要慢,因为它们需要更多的计算来创建校验信息。
    如果你看到是速度实在太慢,我这里是200M左右,可以尝试用这个命令
    
echo 200000 > /proc/sys/dev/raid/speed_limit_min

    这里面还有个问题,就是同步过程中,万一机器意外掉电,或者需要关机,会发生什么情况?如果真发生了,开机后运行lsblk,大概率会看到md127。这时候的操作是这样的。先运行下面几个,清除md127,然后重头再来,哈。
    
mdadm -S /dev/md127
mdadm --misc --zero-superblock /dev/sda
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc

    经历过曲折,才明白要RAID同步中,如果要关机,需要保存RAID配置。创建完RAID后,就需要生成mdadm.conf,并检查设备名是否正确。这一步要在mdadm create之后就要执行。
    
mdadm -Ds > /etc/mdadm/mdadm.conf 
##检查ARRAY之后的设备名,修改为/dev/md0

    RAID挂载
    漫长的同步终于到达了100%,希望你没经历21个小时的等待。下面的事情就是大家熟悉的了,创建文件系统,挂载目录
    
mkfs.ext4 /dev/md0
mkdir /myraid
mount /dev/md0 /myraid

    以及修改fstab,添加md0 挂载信息,实现开机自动挂载。完成!
    
vim /etc/fstab

    RAID停止及启动
    这里不多讲了。禁用RAID阵列之前,先要卸载对应的挂载点
    
umount /dev/md0 /myraid
##RAID停止
mdadm -S /dev/md0
##RAID开启
mdadm -A /dev/md0

    RAID删除
    不想要RAID了,铲掉它,OK
    
mdadm -S /dev/md0
mdadm --misc --zero-superblock /dev/sda
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc

    然后看下状态,就没有了
    
cat/proc/mdstat

    体验总结及问题
  • 企业级HDD噪音明显大,设计初衷应该是放机房里的,个人使用稍嫌打扰。
  • RAID5同步完成后,查看磁盘和RAID设备情况,一直忙碌并且IO还比较多。个人强迫症,感觉没有实际业务在使用它们,硬盘却不间断咯吱咯吱,很不喜欢这种状态。后来我干脆也铲掉了RAID。弄了个寂寞:-(

    最后性能测试,忘记了。有机会再做一下,不过实在不想再来一次21小时同步。大家有空可以试试.
    
##写性能
dd if=/dev/zero of=/myraid/test.log bs=1M count=8096
##读性能
dd if=/myraid/test.log of=/dev/null