以AlmaLinux10为例,虚拟机已经添加了4块10G的SATA硬盘,如下图:

下面演示的是在RAID上部署LVM。
一、RAID
1、RAID介绍
RAID:Redundant Array of Independent Disks,独立磁盘冗余阵列。常见的有RAID 0、RAID 1、RAID 5、RAID 10等方案。
RAID 0: 把多块物理磁盘设备(至少两块)通过硬件或软件方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理磁盘中,能够有效地提升磁盘数据的吞吐速率,但是不具备数据备份和错误修复能力。
RAID 0示意图:

RAID1:是把两块(多块)物理磁盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(这里可以看作数据的备份或者时镜像),虽然保证了数据的安全性,但是也有不足的地方,因为在多块设备中写入了相同的数据,因此硬盘的利用率下降了一半。
示意图:

RAID5:把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。raid5磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一个磁盘设备中,而是存储到除自身以外的其他每一块对应设备上,这样的好处是其中任何一个设备损坏后不至于出现致命缺陷。Raid5技术实际上没有备份磁盘中的真实数据,而是当硬盘设备出现问题后,通过奇偶校验技术来尝试重建损坏的数据
示意图:

Parity 部分存放的就是数据的奇偶校验信息
RAID10:RAID 10 技术是 RAID 1+RAID 0 技术的一个“组合体” 。RAID 10技术需要至少 4 块磁盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高磁盘设备的读写速率。
示意图:

RAID 10 是先对信息进行分割,然后再两两一组制作镜像,即先将 RAID 1 作为最低级别的组合,然后再使用RAID 0 技术将 RAID 1 磁盘阵列组合到一起,将它们视为“一整块”磁盘。
2、部署磁盘阵列
使用mdadm命令可以创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为“mdadm 参数 硬盘名称”。
在实际生成环境中,物理服务器一般配有RAID阵列卡。这里演示的是虚拟机。
mdadm命令参数:
-a:自动检查设备
-n:指定磁盘数量
-l:指定RAID级别,0、1、5、10等
-C:创建RAID阵列
-v:显示创建过程
-f:模拟磁盘损坏
-r:移除磁盘
-Q:查看信息
-D:查看详细信息
-S:停止RAID磁盘阵列
mdadm命令安装:yum install mdadm -y (红帽系统)、apt install mdadm -y (Ubuntu系统)
下面演示的是创建RAID10,名称为/dev/md0,前面已经添加了4块硬盘:
[root@localhost ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd[b-e]
To optimize recovery speed, it is recommended to enable write-intent bitmap, do you want to enable it now? [y/N]? y
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]#
查看详细的创建信息命令:mdadm -Q /dev/md0
等待2、3分钟即可。
创建成功后,如果需要使用,必须格式化。这里先不格式化。
格式化命令:mkfs.文件系统格式 设备名称
二、LVM
1、lvm介绍
LVM:Logical Volume Manager,逻辑卷管理器。LVM 允许用户对磁盘资源进行动态调整。
LVM 技术是在磁盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块磁盘进行卷组合并,用户不必关心物理磁盘设备的底层架构和布局,就能够实现对磁盘分区的动态调整。
涉及的几个概念:物理卷(Physical Volume,PV)、卷组(Volume Group,VG)、逻辑卷(Logical Volume,LV)、基本单元(Physical Extent,PE)。
比如小明家想吃馒头,但是面粉不够,于是从隔壁老王家、老李家、老张家分别借来一些面粉,准备蒸馒头吃。首先需要把这些面粉(物理卷[Physical Volume,PV])揉成一个大面团(卷组[Volume Group],VG),然后再把这个大面团分割成一个个小馒头(逻辑卷[Logical Volume,LV]),而且每个小馒头的重量必须是每勺面粉(基本单元[Physical Extent,PE])的倍数。
2、部署逻辑卷
相关命令:
| 功能/命令 | 物理卷(PV) | 卷组(VG) | 逻辑卷(LV) |
|---|---|---|---|
| 扫描 | pvscan | vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示 | pvdisplay | vgdisplay | lvdisplay |
| 删除 | pvremove | vgremove | lvremove |
| 扩展 | vgextend | lvextend | |
| 缩小 | vgreduce | lvreduce |
第1步:创建物理卷(PV)
前面已经创建了RAID 10磁盘阵列(/dev/md0)
[root@localhost ~]# pvcreate /dev/md0
WARNING: ext4 signature detected on /dev/md0 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/md0.
Physical volume "/dev/md0" successfully created.
[root@localhost ~]#
第2步:创建卷组(VG)
卷组名称:vgtest
[root@localhost ~]# vgcreate vgtest /dev/md0
Volume group "vgtest" successfully created
[root@localhost ~]#
查看卷组信息:
[root@localhost ~]# vgdisplay
第3步:切割一个约150M的逻辑卷(LV)
切割逻辑卷有两种计量单位:第一种是以容量为单位,使用的参数为-L。例如,使用-L 150M 生成一个大小为 150MB 的逻辑卷。
另外一种是以基本单元(PE)的个数为单位,使用的参数为-l。每个基本单元的大小默认为 4MB。例如, 使用-l 37可以生成一个大小为 37×4MB=148MB 的逻辑卷。
-n :指定逻辑卷的名称,这里是lv01
-l:指定基本单元个数
[root@localhost ~]# lvcreate -n lv01 -l 37 vgtest
Logical volume "lv01" created.
[root@localhost ~]#
-L:指定逻辑卷大小,例如:
[root@localhost ~]# lvcreate -n lv02 -L 100M vgtest
Logical volume "lv02" created.
[root@localhost ~]#
第4步:格式化逻辑卷
Linux 系统会把 LVM 中的逻辑卷设备存放在/dev 设备目录中(实际上就是个快捷方式),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。
将lv01逻辑卷格式为ext4格式:
[root@localhost ~]# mkfs.ext4 /dev/vgtest/lv01
XFS 与 LVM 的兼容性并不好,所以逻辑卷格式化不建议使用xfs格式。
第5步:挂载使用
把lv01逻辑卷挂载到/lvtest目录:
[root@localhost ~]# mkdir /lvtest
[root@localhost ~]# mount /dev/vgtest/lv01 /lvtest
如果要永久挂载,必须在/etc/fstab文件中添加配置:
[root@localhost ~]# echo "/dev/vgtest/lv01 /lvtest ext4 defaults 0 0" >> /etc/fstab
然后执行命令:systemctl daemon-reload
再执行挂载:mount -a
3、扩展逻辑卷
上面已经创建了一个150M左右的逻辑卷lv01,现在把它扩展到200M
扩展前先卸载:
[root@localhost ~]# umount /lvtest
第1步:扩展到200M
[root@localhost ~]# lvextend -L 200M /dev/vgtest/lv01
第2步:检查磁盘完整性
[root@localhost ~]# e2fsck -f /dev/vgtest/lv01
第3步:重置设备在系统中的容量
刚刚是对 LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步
[root@localhost ~]# resize2fs /dev/vgtest/lv01
第4步:挂载使用
参照前面的第5步挂载使用即可。这里不再演示。
4、缩小逻辑卷
缩小前必须先卸载逻辑卷:umount /lvtest
第1步:检查文件系统的完整性
[root@localhost ~]# e2fsck -f /dev/vgtest/lv01
第2步:通知系统内容将逻辑卷减小到100M
[root@localhost ~]# resize2fs /dev/vgtest/lv01 100M
第3步:将逻辑卷修改为100M
[root@localhost ~]# lvreduce -L 100M /dev/vgtest/lv01
第4步:挂载使用即可
挂载使用参照前面的步骤,这里不再演示。
5、逻辑卷快照
LVM 还具备有“逻辑卷快照”功能,该功能类似于虚拟机软件的还原时间点功能
生成逻辑卷快照:
[root@localhost ~]# lvcreate -L 100M -s -n SNAP /dev/vgtest/lv01
Logical volume "SNAP" created.
[root@localhost ~]#
-n:指定快照名称,这里设为SNAP
还原快照:lvconvert –mergesnapshot 逻辑卷快照名称
[root@localhost ~]# lvconvert --merge /dev/vgtest/SNAP
6、删除逻辑卷
删除逻辑卷,先要卸载,如配置了永久挂载,还有在/etc/fstab文件中删除相关配置,依次删除逻辑卷、卷组、物理卷设备。
第1步:卸载逻辑卷
[root@localhost ~]# umount /lvtest/
检查/etc/fstab文件中是否配置了永久挂载,如有,则删除。
第2步:删除逻辑卷
[root@localhost ~]# lvremove /dev/vgtest/lv01
第3步:删除卷组
[root@localhost ~]# vgremove vgtest
第4步:删除物理卷
[root@localhost ~]# pvremove /dev/md0