前言

linux下组软raid用mdadm命令,multiple devices admin,多设备管理。

本文内容有二:

  1. 用mdadm创建raid
  2. 用mdadm创建raid时的一个大坑

大坑

先把大坑写前面。

用来创建raid的硬盘,不管是新盘还是旧盘,在linux中挂载以后,请先用wipefs命令清理硬盘上的分区表信息。

硬盘分区有两种,mbr和gpt,mbr可以直接裸盘不分区就创建raid,gpt必须要有分区才能创建raid。如果组raid的几块硬盘分区表信息不统一,虽然能成功创建raid,但是系统一重启就会掉raid,也就是raid消失了。没错,系统一重启raid就没了。如果你已经在这个raid上导入数据,这个坑肯定能惊出你一头汗。

所以拿到硬盘以后,最好是用wipefs直接清空分区表。也有人说用fdisk,但实际fdisk只能处理mbr分区表,需要用升级版gdisk才能处理gpt分区表。

假定磁盘是/dev/sdb

# 查看分区表
wipefs /dev/sdb

删除分区表所有信息

wipefs -a -f /dev/sdb

分区注意事项

创建raid之前,要简单了解一下mbr和gpt分区,避免后续再踩雷。

mbr:

  • 不支持2TB以上容量的硬盘
  • 可以不分区,以裸盘为单位创建raid
  • fdisk处理分区

gpt:

  • 支持2TB以上容量的硬盘
  • 必须先分区,以分区为单位创建raid
  • gdisk处理分区

创建磁盘阵列

我没有那么大容量的硬盘,而且系统也是legacy bios引导,所以这里选择mbr裸盘创建阵列。

第一步:查看分区表

先确认前面已经用wipefs清空了旧硬盘上的分区表信息。

# 查看分区表
wipefs /dev/sdb

# 删除分区表
wipefs -a -f /dev/sdb

注意:如果是gpt分区,注意要用gdisk先分区,/dev/sdb1和/dev/sdc1,下面创建raid的时候也是用/dev/sdb1和/dev/sdc1。

第二步:创建raid0

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
  • /dev/md0 : 指创建的磁盘阵列的名称,如果有多个raid,可以按顺序往下编,比如/dev/md1
  • level=0 :指raid0,还有1、5、10等等,对应raid1、raid5、raid10
  • raid-devices=2 :指阵列的磁盘数量,2块盘就是2

创建完成后,可以用下面的命令查看raid信息。

mdadm --detail /dev/md0

第三步:创建文件系统(格式化)

raid创建成功以后,需要格式化

mkfs.ext4 /dev/md0

注意ext4文件格式下,系统会预留5%的冗余空间,简单换算就是1TB就会保留50GB空间。

第四步:保存raid信息

注意不同linux版本mdadm的配置文件路径可能不同,debian是/etc/mdadm/mdadm.conf

mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

第五步:挂载raid

创建挂载点

mkdir /mnt/raid0

挂载

mount /dev/md0 /mnt/raid0

第六步:开机自动挂载

blkid查看/dev/md0的uuid编号,然后添加到/etc/fstab中即可。

或者用命令自动添加

echo `blkid /dev/md0 | awk '{print $2}' | sed 's/\"//g'` /media/raid0 ext4 defaults 0 0 >> /etc/fstab

参考文章

  1. 创建RAID阵列(Linux)https://help.aliyun.com/zh/ecs/use-cases/create-a-raid-array-for-a-linux-instance
  2. 如何在 Linux 中清除/删除磁盘或者分区中的所有分区表 https://www.onitroad.com/jc/linux/faq/how-to-delete-all-the-partition-table-from-a-disk-in-linux.html
  3. 记一次采坑经历, mdadm 创建 raid0,重启后自动消失 https://www.idczone.net/news/5766.html/
  4. linux中Raid0磁盘阵列的搭建 https://www.cnblogs.com/liuhui-xzz/p/9653123.html