LVM逻辑卷管理

RAID硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就麻烦了。随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了—逻辑卷管理器(Logical Volume Manager,LVM)。LVM允许用户对硬盘资源进行动态调整。

     LVM是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。LVM的技术架构如图1-1所示。

       在日常的使用中,如果卷组(VG)的剩余容量不足,可以随时将新的物理卷(PV)加入到里面,进行不断地扩容。由于担心同学们还是不理解,这里准备了一张逻辑卷管理器的使用流程示意图,如图1-2所示。

LVM逻辑卷管理器-LMLPHP                                    LVM逻辑卷管理器-LMLPHP

                                                                                  1-1图                                                                                                                                                                               1-2图

      物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列。卷组建立在物理卷之上,一个卷组能够包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。

              伴随着业务量的增加,用于存放交易记录的数据库目录的体积也随之增加;因为分析并记录用户的行为从而导致日志目录的体积不断变大,这些都会导致原有的硬盘分区在使用上捉襟见肘。而且,还存在对较大的硬盘分区进行精简缩容的情况。我们可以通过部署LVM来解决上述问题。部署时,需要逐个配置物理卷、卷组和逻辑卷,常用的部署命令如表1-3所示

LVM逻辑卷管理器-LMLPHP

                                                                                        1-3图

 一、让新添加的两块硬盘设备支持LVM技术

      在虚拟机中添加两块新硬盘设备的目的,是为了更好地演示LVM理念中用户无须关心底层物理硬盘设备的特性。我们先对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称允许由用户自定义。

pvcreate /dev/sda /dev/sdb      将sda和sdb两个设备加入到PV
pvdisplay pv具体查询
pvs PV精简查询

二、把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。

vgcreate storage /dev/sda /dev/sdb    将sda和sdb两个设备加入到storage组中
vgdisplay vg具体查询
vgs vg精简查询

三、再切割出一个约为1G的逻辑卷设备

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

lvcreate -n lv01-L 1G storage        从storage的VG组创建一个命名为lv01的1G空间
lvdisplay lv具体查询
lvs lv精简查询

四、把生成好的逻辑卷进行格式化,然后挂载使用。备注:长久挂载必须具备改vim /etc/fstab 文件,

注意:如何使用格式化使用xfs不能缩小,只能扩容。所以我们这里采用ext4格式,修改fstab配置文件一定LV的\dev\storage/lv01,而不是映射出来的/dev/mapper/storage-lv01这个路径。

mkfs.ext4 /dev/mapper/storage-lv01
mkdir /media/test
mount /dev/storage/lv01 /media/test

五、扩展逻辑卷,将逻辑卷lv01扩展至2G

     用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩容前请一定要记得卸载设备和挂载点的关联。

umount /media/test
lvextend -L 2G /dev/storage/lv01

六、检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况.

注意:如果要进行xfs磁盘扩容,则只需要输入xfs_growfs  /media/test进行同步即可(同步挂载点目录,而不磁盘),则不需进行检查硬盘的完整性。记住、、、、、、、、、、、、、、、、、、、、

 e2fsck -f /dev/storage/lv01

LVM逻辑卷管理器-LMLPHP

七、重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。

resize2fc /dev/storage/lv01
mount /dev/storage/lv01 /media/test 重新挂载

LVM逻辑卷管理器-LMLPHP

 八、缩小逻辑卷

umount /media/test                       先卸载挂载点
e2fsck -f /dev/storage/lv01              检查文件系统的完整性

resize2fs /dev/storage/lv01 2G            通知内核将lv01逻辑卷缩小到2G

lvreduce -L 2G /dev/storage/lv01          将lv01逻辑卷修改到2G

LVM逻辑卷管理器-LMLPHP

 LVM逻辑卷管理器-LMLPHP

九、扩展卷组

              当卷组和逻辑卷空间不够时,需要添加一块新的硬盘到PV,然后将他加入对storage卷组中。

pvcreate /dev/sdc                     将新的硬盘加入到PV
vgextend storage /dev/sdc 将dev/sdc磁盘扩展到storage
vgdisplay 查看VG具体的信息

通过卷组的输出信息可以清晰看到,卷组中已经使用了9.9GB的容量,空闲容量还有5GB。如果有需要可直接通过扩展LV逻辑卷。

LVM逻辑卷管理器-LMLPHP

 十、创建逻辑卷快照

      LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:

                           快照卷的容量必须等同于逻辑卷的容量;

                           快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

先看看VG(卷组)中的容量是否够用

LVM逻辑卷管理器-LMLPHP

通过卷组的输出信息可以清晰看到,卷组中已经使用了7GB的容量,空闲容量还有7.99GB。往逻辑卷里放入一些文件。

使使用-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作,稍后数据也会还原到这个相应的设备上。

lvcreate -L 7G -s -n kuaizhao /dev/storage/lv01      为lv01逻辑卷创建一个命名为kuaizhao的7个GB的快照
lvdisplay 查看LV具体的信息

LVM逻辑卷管理器-LMLPHP

当创建快照后再查看vgdisplay会发现刚刚还剩的7.99GB现在只剩1012M了。

LVM逻辑卷管理器-LMLPHP

 通过lvdisplay可以看到刚刚创建的快照的LV卷

LVM逻辑卷管理器-LMLPHP

 十一、还原快照

      为了校验快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。lvconvert命令用于管理逻辑卷的快照,语法格式为“lvconvert [参数]快照卷名称”。使用lvconvert命令能自动回复逻辑卷的快照,在早期的RHEL/CentOS 5版本中要写全格式:“--mergesnapshot”,而从RHEL 6到RHEL 8,已经允许用户只输入--merge参数进行操作了,系统会自动分辨设备的类型。

umount /media/test                            卸载挂载
lvconvert --merge /dev/storage/kuaizhao       还原快照
mount -a 自动挂载

LVM逻辑卷管理器-LMLPHP

十二、删除逻辑卷、卷组、物理卷

umount /media/test                              卸载挂载
lvremove /dev/storage/lv01 移除lv01逻辑卷

LVM逻辑卷管理器-LMLPHP

vgremove storage                               移除卷组

LVM逻辑卷管理器-LMLPHP

pvremove /dev/sda /dev/sdb /dev/sdc           移除物理卷设备

LVM逻辑卷管理器-LMLPHP

               

04-25 18:17