LVM可以使硬盘无限扩容:

PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,
一个逻辑卷管理系统工程中可有多个卷组。
LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态
扩展和缩小空间。
PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定
不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。
LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理
区域的大小。
卷组描述区域:卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中逻辑卷、
逻辑卷中物理区域的分配等所有信息,它是在使用pvcreate建立物理卷时建立的。

LVM原理图:

还原环境:

[root@localhost ~]# umount /mnt/   解除挂载
[root@localhost ~]# vim /etc/fstab 删除开机自动挂载
[root@localhost ~]# cat /etc/fstab 查看文件内容已经被删除
[root@localhost ~]# fdisk /dev/vdb 删除分区
[root@localhost ~]# partprobe 同步
[root@localhost ~]# fdisk -l 查看硬件信息

解除挂载删除分区:

基于linux下的lvm逻辑卷管理_文件系统


查看硬件信息:

基于linux下的lvm逻辑卷管理_sed_02

常用的LVM部署命令:

基于linux下的lvm逻辑卷管理_sed_03

LVM逻辑卷的管理:

打开两个shell,同时连接server虚拟机将其中一台A进行监控,在另外一台B查看命令效果
A:

[root@localhost ~]# watch -n 1 'pvs;vgs;lvs;df -h /mnt'

B:

[root@localhost ~]# fdisk /dev/vdb   建立三个1G分区并更改类型为8e

Command (m for help): t
Partition number (1-3, default 3): 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): wq
[root@localhost ~]# partprobe 同步
[root@localhost ~]# pvcreate /dev/vdb1 将分区做成物理卷
[root@localhost ~]# vgcreate vg0 /dev/vdb1 创建卷组
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0 创建逻辑卷并指定逻辑卷的大小为300M
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 将逻辑卷格式化
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/ linux下的文件系统需要挂载才可以使用,将逻辑卷挂载
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3804420 6669480 37% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12788 472144 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 303788 15520 288268 6% /mnt
[root@localhost ~]# ll /dev/vg0/lv0 两个文件内容一样
lrwxrwxrwx. 1 root root 7 May 4 22:54 /dev/vg0/lv0 -> ../dm-0
[root@localhost ~]# ll /dev/mapper/vg0-lv0 lv
ls: cannot access lv: No such file or directory
lrwxrwxrwx. 1 root root 7 May 4 22:54 /dev/mapper/vg0-lv0 -> ../dm-0

B虚拟机中操作,A虚拟机中操作:

建立分区同步建立物理卷:

基于linux下的lvm逻辑卷管理_文件系统_04


格式化进行挂载

基于linux下的lvm逻辑卷管理_文件系统_05


我们可以看一下A虚拟机监控的最终情况:

如下图所示已经建立了物理卷,物理卷组,逻辑卷。

基于linux下的lvm逻辑卷管理_文件系统_06

LVM逻辑卷的扩容:

[root@localhost ~]# df  查看挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3804380 6669520 37% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12816 472116 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 303788 15520 288268 6% /mnt
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0 扩展,但是文件系统不会更改
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 将文件系统扩展
[root@localhost ~]# pvcreate /dev/vdb2 将分区做成物理卷
Physical volume "/dev/vdb2" successfully created
[root@localhost ~]# vgextend vg0 /dev/vdb2 创建卷组
Volume group "vg0" successfully extended
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 因为1.5G不够我们扩容,所以要另外增加vdb2,扩容。
Extending logical volume lv0 to 1.46 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 从监控来看文件系统依旧没有扩展所以需要这个命令扩展文件系统

B虚拟机,对逻辑卷和文件系统进行扩容:

基于linux下的lvm逻辑卷管理_逻辑卷_07


不够扩容了,所以需要建立物理卷2来进行扩容。

基于linux下的lvm逻辑卷管理_sed_08


A虚拟机的监控来看效果已经扩容成功:

基于linux下的lvm逻辑卷管理_逻辑卷_09

xfs文件系统不支持缩容操作,LVM逻辑卷的扩容(逻辑卷格式为ext4)

[root@localhost ~]# umount /mnt/  解除挂载
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 将逻辑卷格式化成ext4格式
[root@localhost ~]# mount /dev/vg0/lv0 /mnt 将逻辑卷挂载到/mnt下
[root@localhost ~]# ls /mnt 查看/mnt
lost+found
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0 扩展逻辑卷
Extending logical volume lv0 to 1.76 GiB
Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0 更新逻辑卷信息
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv0 is now 460800 blocks long.

B虚拟机进行扩容操作,A虚拟机查看效果:

1,格式化成ext4格式

基于linux下的lvm逻辑卷管理_逻辑卷_10


2,将文件系统和逻辑卷均进行扩容:

基于linux下的lvm逻辑卷管理_文件系统_11


A虚拟机查看效果,已经成功扩容:;

基于linux下的lvm逻辑卷管理_文件系统_12

LVM缩容操作:(很少使用,xfs文件系统不支持,ext文件系统支持)

[root@localhost ~]# umount /mnt/  卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0 检查是否有错误
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M 进行缩容操作
[root@localhost ~]# mount /dev/vg0/lv0 /mnt 挂载
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0 更新逻辑卷信息

在B虚拟机操作,A虚拟机进行监控:

B进行缩容:

基于linux下的lvm逻辑卷管理_逻辑卷_13


A进行查看已经缩容成功:

基于linux下的lvm逻辑卷管理_文件系统_14

如何缩减卷组:

[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 将vdb1移到闲置的vdb2中
[root@localhost ~]# vgreduce vg0 /dev/vdb1 从vg中移除vdb1
[root@localhost ~]# pvremove /dev/vdb1 删除/vdb1

pvremove [选项] [参数]
pvremove指令用于删除一个存在的物理卷
主要参数:
-d 调试模式
-f 强制删除
-y 对提问回答“yes”
[root@localhost ~]# pvs 查看设备容量
PV VG Fmt Attr PSize PFree
/dev/vdb2 vg0 lvm2 a-- 1020.00m 20.00m
[root@localhost ~]# df -H 查看设备信息
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 11G 3.9G 6.9G 37% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 497M 82k 497M 1% /dev/shm
tmpfs 497M 14M 484M 3% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 999M 3.9M 933M 1% /mnt

A虚拟机中监控到将/vdb1移到/vdb2中时:

基于linux下的lvm逻辑卷管理_逻辑卷_15

B虚拟机中进行vg的缩减:

基于linux下的lvm逻辑卷管理_sed_16

A虚拟机查看最后的vg缩减查看:

基于linux下的lvm逻辑卷管理_逻辑卷_17

LVM的快照指令:

[root@localhost ~]# df   查看挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3808456 6665444 37% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12788 472144 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-lv0 975128 3764 910288 1% /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# touch westos{1..7}
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt/ 解除挂载
[root@localhost ~]# ls /mnt/
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 拍照,-s代表拍照到指定路径,-n后面接照片名字,报错是因为大小不够,-L指定大小
[root@localhost ~]# pvcreate /dev/vdb1 将分区做成物理卷
[root@localhost ~]# vgextend vg0 /dev/vdb1 创建卷组
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0拍照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt/ 挂载
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
westos1 westos2 westos3 westos4 westos5 westos6 westos7
[root@localhost mnt]# rm -fr *
[root@localhost mnt]# ls
[root@localhost mnt]# cd
[root@localhost ~]# lvremove /dev/vg0/lv0backup 删除照片报错是因为没有解除挂载
Logical volume vg0/lv0backup contains a filesystem in use.
[root@localhost ~]# umount /mnt/ 解除挂载
[root@localhost ~]# lvremove /dev/vg0/lv0backup 删除照片成功
Do you really want to remove active logical volume lv0backup? [y/n]: y
Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0拍照
Rounding up size to full physical extent 52.00 MiB
Logical volume "lv0backup" created
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt/ 挂载
[root@localhost ~]# ls /mnt/ 查看文件还在证明我们仅仅删除了快照本来文件不受影响
westos1 westos2 westos3 westos4 westos5 westos6 westos7

虚拟机的快照同样可以借助监控,然后可以更好的进行快照命令的效果查看:

可以看到只剩下20M的可用空间:

基于linux下的lvm逻辑卷管理_逻辑卷_18


首先在/mnt中建立七个文件为了让我们懂得快照的真实含义,读取的时候是读取本来的,写入时操作的是照片。

基于linux下的lvm逻辑卷管理_sed_19


将/vdb1做成物理卷解决磁盘空间不够的问题,进行快照指令然后挂载查看就可以看到我们建立的七个文件。

基于linux下的lvm逻辑卷管理_文件系统_20


A虚拟机监控看到的将/vdb1做成物理卷之后就解决了磁盘空间不够的问题,也就可以弄成快照。

基于linux下的lvm逻辑卷管理_逻辑卷_21


删除照片重新做快照进行查看文件还在,就是证明有了快照本来文件不会受到影响。

基于linux下的lvm逻辑卷管理_文件系统_22

删除逻辑卷:

[root@localhost ~]# umount /mnt/   卸载
[root@localhost ~]# lvremove /dev/vg0/lv0backup 删除快照
Do you really want to remove active logical volume lv0backup? [y/n]: y
Logical volume "lv0backup" successfully removed
[root@localhost ~]# lvremove /dev/vg0/lv0 删除逻辑卷
Do you really want to remove active logical volume lv0? [y/n]: y
Logical volume "lv0" successfully removed
[root@localhost ~]# vgremove vg0 删除卷组
Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/vdb{1..2} 删除物理卷
Labels on physical volume "/dev/vdb1" successfully wiped
Labels on physical volume "/dev/vdb2" successfully wiped

在B虚拟机操作:

分别卸载设备,删除快照,物理卷,物理卷组,逻辑卷,还原原本状态。

基于linux下的lvm逻辑卷管理_文件系统_23


A虚拟机监控情况,发现已经还原到原来:

基于linux下的lvm逻辑卷管理_文件系统_24