LVM(Logical Volume Manager)逻辑卷管理

一:LVM简介
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性

LVM的工作原理

通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

二:基本的逻辑卷管理概念

PV(Physical Volume)- 物理卷(被pv命令处理过的物理分区) 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷组(被组装到一起的物理卷) 卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷(直接使用的设备,可以增大缩减并保持原有数据不变) 逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组
pe物理扩展 lvm设备的最小存储单元,LVM默认使用4MB的PE区块,lv是pe的整数倍

用橘子来比喻的话:
LVM(Logical Volume Manager)逻辑卷管理三:逻辑盘卷管理

首先,在做实验前,我们需要建立一个lvm类型(可伸缩)磁盘

如图所示:
LVM(Logical Volume Manager)逻辑卷管理
列出磁盘信息

LVM(Logical Volume Manager)逻辑卷管理

实验如下

<1>建立lv逻辑卷,并将文件系统挂载在/data

为了实验的可观性,我们用watch命令监控

watch -n 1 'pvs;echo======;vgs;echo======;lvs;ech0=====;df  -h  /data;df  -H   /data'

LVM(Logical Volume Manager)逻辑卷管理
注意:df -h 是二进制,单位1024
df -H 是十进制,单位1000

第一步:创建pv

pvcreate /dev/vdb1

LVM(Logical Volume Manager)逻辑卷管理

第二步:创建vg

vgcreate vg0 /dev/vdb1     vg0是创建的卷组名称,可自定义

LVM(Logical Volume Manager)逻辑卷管理

LVM(Logical Volume Manager)逻辑卷管理

LVM(Logical Volume Manager)逻辑卷管理

第三步:创建lv

lvcreate -L 100M -n lv0 vg0      -L跟的lv的大小  -n跟的创建逻辑卷lv的名称

LVM(Logical Volume Manager)逻辑卷管理
当vg的默认pe修改为16的时候

LVM(Logical Volume Manager)逻辑卷管理

第四步:格式化逻辑卷,并挂载

mkfs.xfs   /dev/vg0/lv0       格式化逻辑卷lv0
mount  /dev/vg0/lv0  /mnt      将逻辑卷lv0挂载到/data目录
df -H  /data                查看/data目录大小,十进制
df -h  /data                 查看/data目录大小,二进制

LVM(Logical Volume Manager)逻辑卷管理
<2>lv的拉伸

lvm支持xfs拉伸

1.当vg中的剩余容量充足情况

lvextend -L 200M /dev/vg0/lv0 		##拉伸设备lv到200M
xfs_grow /dev/vg0/lv0		##拉伸文件系统

如图所示:

拉伸设备:
LVM(Logical Volume Manager)逻辑卷管理拉伸文件系统:
LVM(Logical Volume Manager)逻辑卷管理
2.当vg中的容量不足时
再次建立分区并修改标签8e
LVM(Logical Volume Manager)逻辑卷管理

pvcreate /dev/vdb2

LVM(Logical Volume Manager)逻辑卷管理

 vgextend vg0 /dev/vdb2		##拉伸物理卷组
 lvextend -L 600M  /dev/vg0/lv0        扩展lv0设备
 xfs_grow /dev/vg0/lv0                   扩展文件系统

LVM(Logical Volume Manager)逻辑卷管理

<3>lvm的删除

umount  /data                     卸载
lvremove  /dev/vg0/lv0       删除逻辑卷
vgremove  vg0                   删除卷组
pvremove  /dev/vdb2          删除物理卷

如图:
LVM(Logical Volume Manager)逻辑卷管理

LVM(Logical Volume Manager)逻辑卷管理
LVM(Logical Volume Manager)逻辑卷管理

<3>.针对ext文件系统的设备的拉伸和缩减

<1>拉伸

umount /mnt
mkfs.ext4 /dev/vg0/lv0                       将lv0格式化成ext4格式文件系统
mount /dev/vg0/lv0 /mnt
lvextend -L 250M /dev/vg0/lv0               #拉伸设备
resize2fs /dev/vg0/lv0                           #拉伸ext4文件系统

如图:

卸载并格式化:

LVM(Logical Volume Manager)逻辑卷管理
挂载并且拉伸设备:
LVM(Logical Volume Manager)逻辑卷管理
拉伸文件系统

LVM(Logical Volume Manager)逻辑卷管理

<2>缩减

xfs文件系统不能缩减
ext4可以缩减

umount /dev/vg0/lv0               卸载
e2fsck -f /dev/vg0/lv0                系统要先进行扫描
resize2fs /dev/vg0/lv0 100M        缩减文件系统
lvreduce -L 100M /dev/vg0/lv0       缩减设备
mount /dev/vg0/lv0 /mnt                挂载

如图所示:

卸载并且进行扫描

LVM(Logical Volume Manager)逻辑卷管理
缩减文件系统并挂载

LVM(Logical Volume Manager)逻辑卷管理
最后缩减设备
LVM(Logical Volume Manager)逻辑卷管理
<4>移除含有数据的设备

我们此时vbd1上面含有数据,vbb2为空,我们需要将vdb1这块磁盘删除,这时就要将数据移动到vdb2上,再去删除vdb1,具体操作如下:

第一步

pvmove /dev/vdb1 /dev/vdb2      将/dev/vdb1上面的数据移动到/dev/vdb2     
vgreduce vg0 /dev/vdb1              将vg0从/dev/vdb1删除

LVM(Logical Volume Manager)逻辑卷管理

 pvremove /dev/vdb1         将/dev/vdb1删除

LVM(Logical Volume Manager)逻辑卷管理

<5>llvm快照

快照就是将当时的系统信息记录下来,就好像照相一样,未来若有任何资料变动了,则原始资料会被保存在快照区,没有被改动的区域则由快照区与档案系统共享。
快照区与被快照的LV 必须要在同一个VG 里

实验如下:

前提:

第一步:在原本的被快照目录里建立文件,并卸载:
LVM(Logical Volume Manager)逻辑卷管理
第二步:此时我们想看这个data目录里面的内容,但是又不想挂载这个设备,那么我们可以给这个目录建立一个快照,挂载快照

lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0       给/lv0创建快照,快照的大小为20M,名称为lv0-backup
mount /dev/vg0/lv0-backup /data           挂载

LVM(Logical Volume Manager)逻辑卷管理
挂载快照后,可以查看到/data里的文件
LVM(Logical Volume Manager)逻辑卷管理
第三步:删除被快照目录的所有文件

rm -fr /data/*

LVM(Logical Volume Manager)逻辑卷管理

第四步
umount /data 卸载
lvremove /dev/vg0/lv0-backup 删除刚才建立的快照
LVM(Logical Volume Manager)逻辑卷管理
第五步:重新建立快照并挂载

lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0         重新建立快照区
mount /dev/vg0/lv0-backup /mnt                           挂载

LVM(Logical Volume Manager)逻辑卷管理对/data的修改量不能超过快照的大小(我们这是是删除操作不影响),由于原始数据会被搬移到快照区,如果你的快照区不够大,若原始资料被更动的实际数据量比快照区大,那么快照区当然容纳不了,这时候快照功能会失效喔