编程技术分享平台

网站首页 > 技术教程 正文

使用mdadm工具创建软RAID盘

xnh888 2025-01-20 17:24:08 技术教程 145 ℃ 0 评论

mdadm 工具可以用来管理软 RAID,软 RAID 虽然性能上不如硬件 RAID,但是在性能要求不高或者对冗余性有要求的场景下,还是有其用武之地。由于成本原因,家用 NAS 不管说得有多么地天花乱坠,基本上采用的都是软 RAID 技术,谁让一块 RAID卡大几 K 呢。

本文采用 Ubuntu 作为实验环境。

首先,要确定可用于软 RAID 的磁盘设备,可以用虚拟机构建这样的环境,整坏了也不心疼,比如下面就是一个虚拟机的环境,系统安装在 vda 上,外挂了两个 iSCSI 的盘 sda 和 sdb:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
NAME     SIZE FSTYPE TYPE MOUNTPOINT
sda      100G        disk
sdb      100G        disk
vda       20G        disk 
├─vda1    20G ext4   part /
└─vda15    1M        part

sda 和 sdb 各 100G (Virtual Size)

创建 RAID 0 盘

要使用 sda 和 sdb 这两个设备创建一个 RAID 0 设备,可以使用如下命令:

$ sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

可以通过 /proc/mdstat 来查看:

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdb[1] sda[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

可见已经创建了一个使用 RAID 0 级别的软 RAID 设备,成员设备为 /dev/sda 和 /dev/sdb。

创建并挂载文件系统

接下来,可以在软 RAID 盘上创建一个文件系统并挂载:

$ sudo mkfs.ext4 -F /dev/md0
$ sudo mkdir -p /mnt/md0
$ sudo mount /dev/md0 /mnt/md0

检查文件系统是否可用:

$ df -h -x devtmpfs -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.1G   18G   6% /
/dev/md0        197G   60M  187G   1% /mnt/md0

新文件系统已挂载并可访问。

为了确保系统启动时能自动扫描到软 RAID 盘,需要配置 /etc/mdadm/mdadm.conf 文件:

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

更新 initramfs 使系统在引导阶段就可以找到根磁盘(RH系使用dracut):

$ sudo update-initramfs -u

配置 /etc/fstab 自动挂载文件系统:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' |sudo tee -a /etc/fstab

注意:boot 分区如果使用软 RAID 盘,要使用 RAID 1,因为固件是不认识软 RAID 的,找不到引导文件就无法引导系统。

创建 RAID 1 设备

RAID 1 是 1:1 冗余的配置,创建方法类似,level 指定为 1:

$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

创建 RAID 5 盘

RAID 5 至少需要三个成员设备,通过成员设备进行条带化,使单个设备故障时,从其它成员设备的数据中可以通过奇偶校验恢复出故障设备上的数据。指定 level=3 创建 RAID 5 设备:

$ sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

查看当前生效配置

$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [===>.................]  recovery = 15.6% (16362536/104792064) finish=7.3min speed=200808K/sec
      
unused devices: <none>

RAID 6 至少需要 4 个设备,这里就不赘述了:

$ sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................]  resync =  0.6% (668572/104792064) finish=10.3min speed=167143K/sec
      
unused devices: <none>

删除软 RAID 盘

先找到当前在用的软 RAID 盘

$ cat /proc/mdstat
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdc[1] sdd[0]
      209584128 blocks super 1.2 512k chunks
            
            unused devices: <none>

先要卸载文件系统:

$ sudo umount /dev/md0

在占用的设备是无法卸载的,如果无法卸载,需要先找到占用该设备的进程,释放资源。

停掉软 RAID 设备:

$ sudo mdadm --stop /dev/md0

删除软 RAID 盘:

$ sudo mdadm --remove /dev/md0

清理之前被用作软 RAID 成员盘的数据:

$ sudo mdadm --zero-superblock /dev/sdc
$ sudo mdadm --zero-superblock /dev/sdd

以上就是通过 mdadm 管理软 RAID 的基本用法了,实践是最好的老师,通过实际操作一定能有所收益。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表