前言
RAID常用来管理磁盘阵列,但是linux也有软件RAID,通过对多个分区进行RAID管理。
内核中MD模块软件 将制定的磁盘组合成RAID 例如 /dev/sdb /dev/sdc --> /dev/md0
写数据时候,操作系统到内核态时,调用 MD模块,内容写到 RAID中, MD模块再降内容分成两片 在写到 /dev/sdb /dev/sdc
注意:操作系统奔溃时候,写入的时候,操作系统默认写入了,但是MD模块没有写入
环境
建议避免使用软RAID,但是本篇通过软RAID进行练习操作
实验环境:VMware Workstation 14 Pro
系统平台:ubuntu 16.04 LTS
mdadm版本:mdadm - v3.3 - 3rd September 2013
步骤
step1 磁盘设置
在VMware 中模拟物理增加磁盘,我们将创建RAID0,RAID1,RAID5分区
RAID 0 2块硬盘
RAID 1 2块硬盘
RAID 5 4块硬盘
总共添加8块硬盘,每块5GB,上面有添加图示。
fdisk -l 查看添加磁盘
step 2 安装 mdadm
mdadm multiple devices admin 是标准的软件RAID管理工具
dpkg -l | grep mdadm 查看是否安装
未安装,则通过命令 apt-get install mdadm安装
step3 创建 RAID 0
3.1 新建分区
使用 /dev/sdb 和 /dev/sdc 创建 RAID0
#fdisk /dev/sdb //对sdb进行分区
默认新建分区的类型是Linux,代号83,我们需要将其修改为raid 类型。输入"t" ,然后输入"L" 列出所有的文件格式,这里我们选择"fd Linux raid auto", 输入"fd",然后再输入"p" 查看分区情况,这是分区格式已经变成了Linux raid autodetect。详细的步骤在上文找。
同样的方法对 /dev/sdc 进行分区
3.2同步分区情况
partprobe 命令同步分区情况
3.3 查看现在状态
fdisk -l /dev/sdb /dev/sdc
3.4 创建RAID 0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd[b,c]1
- -C --create 创建阵列;
- -a --auto 同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
- -l --level 阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
- -n --raid-devices 阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
- /dev/md0 阵列的设备名称;
- /dev/sd{b,c}1 参与创建阵列的磁盘名称;
3.5 查看raid 0状态
cat /proc/mdstat
mdadm -D /dev/md0
说明:
- Raid Level : 阵列级别;
- Array Size : 阵列容量大小;
- Raid Devices : RAID成员的个数;
- Total Devices : RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的;
- State : clean, degraded, recovering 状态,包括三个状态,clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建;
- Active Devices : 被激活的RAID成员个数;
- Working Devices : 正常的工作的RAID成员个数;
- Failed Devices : 出问题的RAID成员;
- Spare Devices : 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备;
- UUID : RAID的UUID值,在系统中是唯一的;
3.6 添加RAID 配置文件 /etc/mdadm/mdadm.conf
该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置。
需要创建这个文件,测试中发现,如果没有这个文件,则reboot 后,已经创建好的md0 会自动变成md127。
/etc/mdadm/mdadm.conf 文件内容包括:
由DEVICE 选项指定用于软RAID的所有设备,和ARRAY 选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。
3.6.1 添加信息到配置文件
#echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
3.6.2 修改配置文件
当前生成的/etc/mdadm/mdadm.conf 文件内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:
#vim /etc/mdadm.conf
将内容改为
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md/md0 metadata=1.2 name=ubpara:0 UUID=353e837f:674a11a3:29e7cb83:c77ca832
注意 /dev/md/md0 在目录中要有一一对应,不然找不到
详细配置格式查看 man 5 mdadm.conf
3.7 格式化磁盘阵列
mkfs.ext4 /dev/md0
3.8建立挂载点并挂载
mkdir /mnt/raid0
mount /dev/md0 /mnt/raid0可以看到,/dev/md0 可用大小为9.9G
3.9 写入 /etc/fstab
为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab 文件中。
然后reboot 测试开机是否自动挂载,raid0 创建完毕
step 4 创建RAID1
和创建raid0 类似,使用 /dev/sdd 和 /dev/sde 创建 RAID1
4.1创建分区并修改分区类型
4.2开始创建RAID1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[d,e]1
4.3查看raid 1 状态
cat /proc/mdstat
mdadm -D /dev/md1
说明:Used Dev Size : RAID单位成员容量大小,也就是构成RAID的成员硬盘或分区的容量的大小;
4.4添加raid1 到RAID 配置文件/etc/mdadm.conf 并修改
#echo DEVICE /dev/sd{d,e}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
4.5 格式化磁盘阵列
mkfs.ext4 /dev/md1
4.6 建立挂载点并挂载
mkdir /mnt/raid1
mount /dev/md1 /mnt/raid1
/dev/md1 的可用干空间大小为4.9G
4.7写入/etc/fstab
然后reboot 测试开机是否自动挂载,raid1 创建完毕
step5 创建RAID5
RAID至少需要三块硬盘,我们拿/dev/sdf、/dev/sdg、/dev/sdh、/dev/sdi四块硬盘来做实验,三块为活动盘,另一块为热备份盘
5.1新建分区,并修改类型
5.2创建RAID5
mdadm -C /dev/md5 -a yes -l 5 -n 3 -x 1 /dev/sd[f,g,h,i]1
说明:"-x1" 或"–spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"–spare-devices" 的值设置为相应的数目
5.3 查看raid5状态
cat /proc/mdstat
mdadm -D /dev/md5
待创建完毕,状态如下
5.4添加raid5 到RAID配置文件 /etc/mdadm/mdadm.conf
#echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm/mdadm.conf
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf
5.5格式化磁盘阵列
mkfs.ext4 /dev/md5
5.6建立挂载点并挂载
mkdir /mnt/raid5
mount /dev/md5 /mnt/raid5
raid5 的可用大小为9.9G,即(3-1)x 5G.
5.7写入/etc/fstab
然后reboot 测试开机是否自动挂载,raid5 创建完毕