Linux中LVM逻辑卷管理

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

Linux中LVM逻辑卷管理_第1张图片

为了帮助大家理解在这里举一个吃货的例子。比如小明家里想吃馒头但是面粉不够了,于是妈妈从隔壁老王家、老李家、老张家分别皆来一些面粉,准备蒸馒头吃。首先需要把这些面粉(物理卷[PV,Pyhsical Volume])揉成一个大面团(卷组[VG,Volume Group]),然后再把这个大面团分割成一个个小馒头(逻辑卷[LV,Logical Volume]),而且每个小馒头的中向必须是每勺面粉(基本单元[PE,Physical Extent])的倍数。
物理卷处于LVM中的最底层,可以将其理解为物理硬盘,硬盘分区或者RAID磁盘阵列,这样都可以。卷组建立再物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。

LVM的相关指令:

Linux中LVM逻辑卷管理_第2张图片

部署逻辑卷

[root@localhost ~]# fdisk /dev/vdb		建立分区2个并修改分区id
Command (m for help): n
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +200M
Command (m for help): t
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 ~]# mkdir /mtf_lvm		新建一个用来挂载lvm的文目录
[root@localhost ~]# pvcreate /dev/vdb1 /dev/vdb2		建立物理卷
[root@localhost ~]# vgcreate mtf_vg /dev/vdb1 /dev/vdb2		物理卷加入物理卷组
[root@localhost ~]# lvcreate -L 150M -n mtf_lv mtf_vg	建立逻辑卷大小为150M,划分空间
[root@localhost ~]# vgdisplay		显示物理卷组
[root@localhost ~]# lvdisplay		显示逻辑卷组
[root@localhost ~]# mkfs.xfs /dev/mtf_vg/mtf_lv	格式化
[root@localhost ~]# mount /dev/mtf_vg/mtf_lv /mtf_lvm/	挂载
[root@localhost ~]# echo "/dev/mtf_vg/mtf_lv /mtf_lvm xfs defaults 0 0" >> /etc/fstab 	开机自动挂载
[root@localhost ~]# mount -a		检查有没有错误
[root@localhost ~]# reboot		重启验证

Linux中LVM逻辑卷管理_第3张图片

Linux中LVM逻辑卷管理_第4张图片

Linux中LVM逻辑卷管理_第5张图片

Linux中LVM逻辑卷管理_第6张图片

Linux中LVM逻辑卷管理_第7张图片

Linux中LVM逻辑卷管理_第8张图片

扩容逻辑卷

[root@localhost ~]# umount /mtf_lvm/		卸载
[root@localhost ~]# lvextend -L 300M /dev/mtf_vg/mtf_lv 	将逻辑卷扩展为300M
[root@localhost ~]# mount /dev/mtf_vg/mtf_lv /mtf_lvm/	挂载,挂载后再重置硬盘容量,要不然会报错,失败
[root@localhost ~]# xfs_growfs /dev/mtf_vg/mtf_lv		重置硬盘容量
[root@localhost ~]# df -h		检查

Linux中LVM逻辑卷管理_第9张图片

Linux中LVM逻辑卷管理_第10张图片

缩小逻辑卷

相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产环境中指令相应操作时,一定要提前备份好数据。另外Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了我们的数据安全)。在执行缩容操作前机的把文件系统卸载掉。

刚才说过xfs不支持缩小,ext4支持缩小
[root@localhost ~]# umount /mtf_lvm/
[root@localhost ~]# e2fsck -f /dev/mtf_vg/mtf_lv
[root@localhost ~]# resize2fs /dev/mtf_vg/mtf_lv 50M
[root@localhost ~]# lvreduce -L 50M /dev/mtf_vg/mtf_lv
Do you really want to reduce mtf_lv? [y/n]: y
[root@localhost ~]# mount /dev/mtf_vg/mtf_lv /mtf_lvm/
[root@localhost ~]# df -h

Linux中LVM逻辑卷管理_第11张图片

Linux中LVM逻辑卷管理_第12张图片

逻辑卷快照

快照的容量必须等同于逻辑卷的容量(大于也行,小于的话恢复时候数据丢失)
快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除

[root@localhost ~]# mount /dev/mtf_vg/mtf_lv /mtf_lvm/
[root@localhost ~]# df -H
[root@localhost ~]# touch /mtf_lvm/ceshiwenjian
[root@localhost ~]# lvcreate -s -L 40M -n mtf_lvmbeitai /dev/mtf_vg/mtf_lv
[root@localhost ~]# lvdisplay
[root@localhost ~]# dd if=/dev/zero of=/mtf_lvm/files count=1 bs=30M
[root@localhost ~]# lvdisplay
[root@localhost ~]# umount /mtf_lvm/
[root@localhost ~]# lvconvert --merge /dev/mtf_vg/mtf_lvmbeitai
[root@localhost ~]# mount /dev/mtf_vg/mtf_lv /mtf_lvm/
[root@localhost ~]# ls /mtf_lvm/
命令的参数及为什么要执行在图片中详细说明

Linux中LVM逻辑卷管理_第13张图片

Linux中LVM逻辑卷管理_第14张图片

Linux中LVM逻辑卷管理_第15张图片

Linux中LVM逻辑卷管理_第16张图片

在这里插入图片描述

删除逻辑卷

当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒

[root@localhost ~]# umount /mtf_lvm/
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# lvremove /dev/mtf_vg/mtf_lv 
Do you really want to remove active logical volume mtf_lv? [y/n]: y
[root@localhost ~]# vgremove mtf_vg
[root@localhost ~]# pvremove /dev/vdb1 /dev/vdb2
[root@localhost ~]# partprobe
[root@localhost ~]# fdisk /dev/vdb		删除分区或者修改分区id

Linux中LVM逻辑卷管理_第17张图片

你可能感兴趣的:(Linux中LVM逻辑卷管理)