一、前期准备
1.创建RAID5至少需要3块同样容量的硬盘
2.Linux下需要安装mdadm软件包
可以使用
rpm -qa | grep mdadm
命令确认mdadm软件是否安装
二、对磁盘进行分区
1.使用fdisk -l命令查看分区情况;
fdisk -l
2.使用fdisk对磁盘进行分区,RAID组需要每一个分区大小一致,分区默认ID为83,使用fd命令修改。
fdisk
三、创建RAID5组

1>创建RAID5至少需少3块同样容量的硬盘,建议使用了4个一样大的硬盘,其中3个硬盘做RAID5,一个硬盘空闲做为热备。
mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sdb[1-4]
注:-l RAID级别,这里为5,即RAID5 -n RAID组中硬盘数量,这里有3块 -x 热备盘数量,这量设置为1块 /dev/sdb[1-4] 使用的是哪些硬盘,这里使用/dev/sdb1~/dev/sdb4一共四个硬盘(3块建RAID5,1块用于热备)。

2>将RAID配置信息写入到配置文件
mdadm -D -s >/etc/mdadm.conf
注:Linux启动时会自动读取/etc/mdadm.conf,对raid组进行配置。mdadm配置文件的目的是使每次重启后系统能够重新识别到raid

3>查看RAID信息

a.查看RAID组的详细信息
mdadm --detail /dev/md0

b.查看RAID组的状态信息
cat /proc/mdstat

四、格式化
mkfs.ext4 /dev/md0

五、挂载
有两种方法挂载:
vi /etc/fstab
在最后面加一行,格式与上面相同,如: /dev/md0 /mnt_array ext4 defaults 0 0 RAID盘 映射盘 格式 默认配置 表示即便挂载失败也不影响系统启动

2> 直接挂载(挂载仅对当前运行时有效,系统重启后,消失,如需要一直有效,用上面方法)
mount /dev/md0 /mnt_array

六、删除磁盘阵列
生产环境中,RAID磁盘阵列组部署后一般就不会轻易被停用了,但万一赶上了,还是要知道怎么样删除的。上面这种RAID 5+热备盘损坏的情况是比较复杂的,就以这种情形来进行讲解是再好不过的了。

首先需要将所有的磁盘都设置成停用状态: 下面是使用 -f 参数把磁盘设置成故障状态

[root@linuxprobe ~]# umount /RAID
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sde
mdadm: set /dev/sde faulty in /dev/md0

然后再逐一的移除出去:

[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdd
mdadm: hot removed /dev/sdd from /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sde
mdadm: hot removed /dev/sde from /dev/md0

如果着急的同学也可以用“mdadm /dev/md0 -f /dev/sdb -r /dev/sdb”一条命令搞定。但由于这个命令在早期版本的服务器中不能一起使用,因此还是保守起见一步步的操作吧。

将所有的硬盘都移除后,再来看下磁盘阵列组的状态:

[root@linuxprobe ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jan 15 08:53:41 2021
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 0
       Persistence : Superblock is persistent

       Update Time : Fri Jan 15 09:00:57 2021
             State : clean, FAILED 
    Active Devices : 0
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       -       0        0        1      removed
       -       0        0        2      removed

继续再停用整个RAID磁盘组,工作完成了:

[root@linuxprobe ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@linuxprobe ~]# ls /dev/md0
ls: cannot access '/dev/md0': No such file or directory
[root@linuxprobe ~]# mdadm --zero-superblock /dev/sd{b..d}	   #删除硬盘的超级块
[root@linuxprobe ~]# vim /etc/fstab				  #删除自动挂载行
[root@linuxprobe ~]# vim /etc/mdadm/mdadm.conf		#删除md0相关记录
[root@linuxprobe ~]# update-initramfs -u            #更新initramfs

有一些老版本的服务器,使用完–stop参数后依然会保留设备文件,很明显是没有处理干净,这时再执行一下:“mdadm --remove /dev/md0”命令即可,可以记一下,以备不时之需。

也可以使用一下命令直接移除:

mdadm -D /dev/md0     #查看raid组信息
cat /proc/mdstat			#查看raid活动数组
umount /dev/md0
mdadm -S /dev/md0			#停止/dev/md0
mdadm -r /dev/md0			#删除/dev/md0
mdadm --zero-superblock /dev/sd{b..c}	   #删除硬盘的超级块
vim /etc/fstab				  #删除自动挂载行
vim /etc/mdadm/mdadm.conf		#删除md0相关记录
update-initramfs -u			  #更新initramfs

mdadm命令 – 管理linux软RAID

mdadm命令是multiple devices admin的简称,它是linux下的一款标准的软件 RAID管理工具,可以管理linux软RAID,比如创建、调整、监控RAID。

mdadm命令能够诊断、监控和收集详细的阵列信息,是一个单独集成化的程序而不是一些分散程序的集合,因此对不同RAID管理命令有共通的语法。

mdadm命令能够执行几乎所有的功能而不需要配置文件(也没有默认的配置文件)。

语法格式:mdadm [参数]

常用模式参数:

create	创建一个新的RAID,每个设备都具有元数据(超级块)
build	创建或组合一个没有元数据(超级块)的RAID
assemble	组装以前创建的RAID的组件集成到一个活动RAID
manage	更改一个现有的RAID,比如添加新的备用成员和删除故障设备
misc	报告或修改各种RAID相关设备,比如查询RAID或者设备的状态信息、删除旧的超级块
grow	调整/重新塑造一个活动RAID,比如改变RAID容量或阵列中的设备数目。
monitor	监控一个或多个RAID的更改
incremental	添加设备到RAID中,或从RAID中删除设备。
常用参数:

-D	显示RAID设备的详细信息
-A	加入一个以前定义的RAID
-B	创建一个没有超级块的RAID设备
-F	选项监控模式
-G	更改RAID设备的大小或形态
-I	添加设备到RAID中,或从RAID中删除设备
-z	组建RAID1、RAID4、RAID5、RAID6后从每个RAID成员获取的空间容量
-s	扫描配置文件或/proc/mdstat以搜寻丢失的信息
-C	创建RAID设备,把RAID信息写入每个RAID成员超级块中
-v	显示RAID创建过程中的详细信息
-B	创建RAID的另一种方法,不把RAID信息写入每个RAID成员的超级块中
-l	指定RAID的级别
-n	指定RAID中活动设备的数目
-f	把RAID成员列为有问题,以便移除该成员
-r	把RAID成员移出RAID设备
-a	向RAID设备中添加一个成员
--re-add	把最近移除的RAID成员重新添加到RAID设备中
-E	查看RAID成员详细信息
-c	指定chunk大小,创建一个RAID设备时默认为512kb
-R	开始部分组装RAID
-S	停用RAID设备,释放所有资源
-x	指定初始RAID设备的备用成员的数量
--zero-superblock	如果RAID设备包含一个有效的超级块,该块使用零覆盖
参考实例

使用sda1和sdb1创建RAID0,条带大小是64KB:
[root@linuxcool ~]# mdadm –create /dev/md0 –chunk=64 –level=0 –raid-devices=2 /dev/sda1 /dev/sdb1

给md0增加热备盘sdc1:
[root@linuxcool ~]# mdadm /dev/md0 -add /dev/sdc1

查看组件设备sda1中超级块的信息和状态:
[root@linuxcool ~]# mdadm –examine /dev/sda1

停止md0的运行:
[root@linuxcool ~]# mdadm –stop /dev/md0

对新加磁盘阵列”md0”进行逻辑券制作

1、新建物理券,使用”md0”

pvcreate  /dev/md0         #对/dev/md0创建物理卷(PV)
pvremove  /dev/md0        #对/dev/md0 删除物理卷(PV)
pvs  或  pvdisplay                        #查看物理卷(PV)

2、新建卷组,名称为”vg_1”

vgcreate vg_1 /dev/md0     #创建卷组vg_1
vgremove  vg_1            #删除卷组vg_1    
vgs      或  vgdisplay                    #查看卷组

3、新建逻辑券,使用券组中容量的10G,名称”lv_1”

-n 后面的逻辑卷名 ,末尾是卷组名
lvcreate -n lv_1 -L 10G vg_1               #创建逻辑卷lv_1
lvs        或  lvdisplay                               #查看逻辑卷

注意:这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。

4、格式化新添加的逻辑券并挂载

mkfs.ext4 /dev/vg_1/lv_1
mkdir /opt/data 
mount /dev/vg_1/lv_1 /opt/data

5、在线扩容
使用新增的2G硬盘,对/opt/data 进行在线扩容
注意:这里在使用中没有卸载可以成功操作

mkfs.ext4  /dev/sdf1
vgextend vg_1 /dev/sdf1
lvextend  /dev/vg_1/lv_1   /dev/sdf1
resize2fs  /dev/vg_1/lv_1    #系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
df  -h

6、使用卷组 vg_1 的剩余容量扩容
注意:这里要先卸载才可以操作

umount /opt/data
lvextend -L +1G /dev/vg_1/lv_1
e2fsck -f /dev/vg_1/lv_1   #检查硬盘的完整性
resize2fs  /dev/vg_1/lv_1   #系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
df -h

7、配置开机自动挂载硬盘

echo "/dev/vg-1/lv_1   /opt/data   ext4   defaults    0  0" >> /etc/fstab
cat /etc/fstab

删除逻辑卷

先梳理一下流程:

  1. 先卸载系统上的LVM文件系统
  2. 使用 lvremove 移除 LV
  3. 使用 vgchange -a n VGname 让VGname这个VG不具有Active的标志
  4. 使用 vgremove 移除VG
  5. 使用 pvremove 移除PV6
  6. 删除 /etc/fstab 中添加的自动挂载信息

1、查看磁盘分区情况

df -h
lsblk

2、卸载LVM文件系统

umount  /data

3、使用 lvremove 移除 LV

lvremove /dev/uos_vg/uos_lv

4、使用 vgchange -a n VGname 让VGname这个VG不具有Active的标志( 用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除。)
在实验操作中这一步好像不做也没有发现有什么影响

vgchange -a n uos_vg

5、使用 vgremove 移除VG

vgremove uos_vg

6、使用 pvremove 移除PV

pvremove /dev/md5 /dev/sdf1     #这里是根据创建使用的PV来决定的

7、删除 /etc/fstab 中添加的自动挂载信息