1、什么是LVM
传统的分区都是一次性分区,即分区后其大小就是固定的,不能后期因为空间不足进行大小调整,如果要改变,唯一的操作办法就是重新分区,这对于需要高可用的服务器环境是非常糟糕的,所以此时引入了LVM逻辑卷管理模式,LVM就是一个建立在物理存储驱动器上的逻辑驱动机制,它的作用主要是使存储设备的空间调整处于一种弹性的工作状态,不在是固定的,可以根据环境的需求,动态的调整空间的使用量,不但可以扩容,也可以缩减,而且调整存储空间的时候不需要重启系统,它还有一个最大的优点就是可以跨硬盘调整分区大小,完全不影响系统的运行。
2、LVM逻辑卷的体系结构
3、LVM体系思路
首先将一个或者多个物理存储空间,初始化配置,将它们都配置成为LVM系统识别的物理卷,即将它们的磁盘标签设置成为Linux LVM类型,这里的物理存储空间可以是基本磁盘分区,也可以是整个物理磁盘,或者创建的RAID卷
当初始化完成后,都变成物理卷PV,接下来要他们组成一个队伍,即分成一个组,因为他们此前都是单兵作战,不能同一队形,这样对于操作系统而言,还是认为这是各自独立的存储磁盘,所以我们要让操作系统知道这些都是一个存储空间,至少在形式上让它这样以为,这就为我们后面调整存储空间解放*,不在受限,任意而为。
在上述之后,我们就可以在这个组之上,任意划分逻辑卷LV,并且建立文件系统,存储我们的数据。
4、完整的配置实践
这里我们以centos7系统的根目录为例
操作平台:VMware workstation
操作环境:centos7计算机一台,添加一块硬盘空间为20G
这里需要注意一点:操作之前,如果你是用磁盘分区的形式来做,记得将分区类型设置为Linux LVM
5、命令操作
创建之前我们先看一下,我们当前根目录的空间使用情况,可用空间为12G
创建物理卷
[root@lab-235 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
查看物理卷信息可以用到以下几个命令
pvscan:扫描物理卷
[root@lab-235 ~]# pvscan
PV /dev/sda2 VG centos lvm2 [19.80 GiB / 0 free]
PV /dev/sdb lvm2 [20.00 GiB]
Total: 2 [39.80 GiB] / in use: 1 [19.80 GiB] / in no VG: 1 [20.00 GiB]
我们可以看到现在有两个物理卷,一个是我们系统的根分区,还有一个是我们刚刚创建的/dev/sdb
pvs:显示物理卷的基本信息
[root@lab-235 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.80g 0
/dev/sdb lvm2 --- 20.00g 20.00g
pvdisplay:显示物理卷的详细信息
[root@lab-235 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size 19.80 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5069
Free PE 0
Allocated PE 5069
PV UUID t9BxDY-n5nR-rkvF-V5zc-J3kU-3GML-27X82p
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Sv5VLs-ITKr-q0wj-z187-cbrW-cOUU-8gfySV
接下来我们要将新创建的物理卷添加到我们根分区所在的逻辑组,此处我们可以通过以下几个命令首先获取根分区所在组的名称(VG name):
1、可以用上述pvscan、pvs、pvdisplay,我们都可以看到VG的名字是centos
2、也可以使用vgscan、vgs、vgdisplay,逻辑组专用命令查看
扩展根分区的逻辑组centos,此处因为我们是扩展根分区,如果要创建可以使用vgcreate命令
[root@lab-235 ~]# vgextend centos /dev/sdb
Volume group "centos" successfully extended
查看扩展后VG的情况
[root@lab-235 ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <39.80 GiB
PE Size 4.00 MiB
Total PE 10188
Alloc PE / Size 5069 / 19.80 GiB
Free PE / Size 5119 / <20.00 GiB
VG UUID RI64Bu-s1Gr-V1Jh-JcWr-EpSS-Z8zr-uwaKmp
此时我们看到VG Size明显的变大了,从原来的19.8G,变成了39.8G
接下来我们将19G空间分配到根分区上去
[root@lab-235 ~]# lvresize -L +19G /dev/centos/root
Size of logical volume centos/root changed from 16.07 GiB (4115 extents) to 35.07 GiB (8979 extents).
Logical volume centos/root successfully resized.
此时逻辑卷已经增加,但是文件系统的容量是没有增加的,此时我们还需要调整文件系统容量,这里需要注意当前被扩展分区的系统类型,如果是xfs,就使用xfs_growfs,如果是ext系列的,就使用resize2f
查看文件系统类型我们可以使用blkid
[root@lab-235 ~]# blkid
/dev/sda1: UUID="a4afdc45-11ae-4ea5-afd4-394e94d3b2da" TYPE="xfs"
/dev/sda2: UUID="t9BxDY-n5nR-rkvF-V5zc-J3kU-3GML-27X82p" TYPE="LVM2_member"
/dev/sdb: UUID="Sv5VLs-ITKr-q0wj-z187-cbrW-cOUU-8gfySV" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="c33942b5-fd49-47e1-8d55-ea7dda4afc34" TYPE="xfs"
/dev/mapper/centos-swap: UUID="42ef240a-ebdf-4ef8-94ad-04a7a03b8915" TYPE="swap"
调整文件系统容量
[root@lab-235 ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1053440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4213760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4213760 to 9194496
此时查看文件系统容量,发生如下改变,从原来的12G变成31G
至此完成扩容
总结:
1、如果是新创建的LVM,操作如下
pvcreate /dev/sdb /dev/sdc
vgcreate -s 24M vgname /dev/sdb /dev/sdc
说明:在创建卷组时需要注意一点,因为卷组相当于的存放很多物理卷的池子,我们可以在这个池子中添加物理卷,也可以移除,但是在卷组中,它会把这些物理卷的空间全部重新分配为大小相同的容量区域,称之为PE,所以在实际工作需要中根据自身需求可以指定这个PE的大小,默认是4MB,可以通过-s选项指定大小
lvcreate -L +20G -n lvname vgname
也可以使用小L指定PE数创建逻辑卷,此时路基卷大小N*单个PE大小,N表示PE个数
接下来就是文件系统的创建,和上面扩容后操作一样,根据需求选在文件系统格式
2、LVM减容操作时,如果从有数据的逻辑卷上操作,一定要先备份数据(当我们在做磁盘管理时,无论做何种操作,尤其是有危害到数据的动作,一定要先备份),因为减容前,我们要先卸载目录,然后操作,完成后,因为存储空间元数据发生改变,此时在挂载时,会提示找不到文件系统的超级块,会要求重新建立文件系统,相当于格式化操作。具体操作如下
备份数据
cp -R /test /back
卸载目录
mount /test
如果无法卸载,查看当前目录有哪些用户使用,可以使用kill命令直接杀死进程号,也可以使用fuser命令的选项-k,直接杀死指定文件的所有进程
fuser /test
fuser命令可以通过安装psmisc软件包获取
压缩空间
resize2fs /dev/vgname/lvname1 10G
减容
lvreduce -L 10G /dev/vgname/lvname1
表示将lvname1空间减少至10G
lvreduce -L -10G /dev/vgname/lvname1
表示将lvname1空间减少10G
3、查看LV逻辑卷配置信息,可使用如下命令
lvscan:扫描逻辑卷
lvs:显示基本信息
lvdisplay:显示详细信息
4、快照卷的创建,用到如下选项
-s:表示创建快照
-p r|w:指定快照读或者写权限
用法:lvcreate -L 10G -n snap-name -s -p r /dev/vgname/lvname1
针对逻辑卷lvname1创建一个10G大小的快照卷
快照卷的作用:如果遇到逻辑卷数据被删除,可从快照卷中恢复