一、前期准备
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
删除逻辑卷
先梳理一下流程:
- 先卸载系统上的LVM文件系统
- 使用 lvremove 移除 LV
- 使用 vgchange -a n VGname 让VGname这个VG不具有Active的标志
- 使用 vgremove 移除VG
- 使用 pvremove 移除PV6
- 删除 /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 中添加的自动挂载信息