linux 系统中 Centos7 的 LVM 磁盘扩容问题怎么解决?
今天给伙伴们分享一下Linux 磁盘管理-LVM逻辑卷管理器,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
1、LVM 介绍
基础以raid 10 两组 满足高可用要求,高性能 做成lvm 灵活性 分区 写入验证
LVM(Logical Volume Manager,逻辑卷管理器)的部署、扩容、缩小、快照以及卸载删除的相关知识。相信读者在学完本章内容后,可以在企业级生产环境中灵活运用RAID和LVM来满足对存储资源的高级管理需求。
动态的扩容,在线扩容,缩容下线存储后才可以操作
1、基本概念
1、 物理卷-----PV(Physical Volume) 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
2、 卷组--------VG(Volumne Group) 卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工
程中可以只有一个卷组,也可以拥有多个卷组。
3、 逻辑卷-----LV(Logical Volume) 逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个
逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。
4、 物理区域--PE(Physical Extent) 一个pv里面有至少一个以上pe 物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将
不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。
5、 逻辑区域―LE(Logical Extent) 一个lv 里面至少一个以上的le 逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。
6、 卷组描述区域-----(Volume Group Descriptor Area) 卷组描述区域存在于每个物理卷中pv,用于描述物理卷本身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的分配等所有信息,卷组描述区域是在使用pvcreate建立物理卷时建立的。
- 硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就不容易了。
- 当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了—逻辑卷管理器(Logical Volume Manager,LVM)。LVM允许用户对硬盘资源进行动态调整。
- LVM是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。LVM的技术架构如图7-8所示。
- 为了帮助大家理解,我们来看一个吃货的例子。比如小明家里想吃馒头,但是面粉不够了,于是妈妈从隔壁老王家、老李家、老张家分别借来一些面粉,准备蒸馒头吃。首先需要把这些面粉(物理卷[Physical Volume,PV])揉成一个大面团(卷组[Volume Group],VG),然后再把这个大面团分割成一个个小馒头(逻辑卷[Logical Volume,LV]),而且每个小馒头的重量必须是每勺面粉(基本单元[Physical Extent,PE])的倍数。
- 在日常的使用中,如果卷组(VG)的剩余容量不足,可以随时将新的物理卷(PV)加入到里面,进行不断地扩容。逻辑卷管理器的使用流程示意图,如图7-9所示。
图7-8 逻辑卷管理器的技术结构
图7-9 逻辑卷管理器使用流程图
- 物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列。
- 卷组建立在物理卷之上,一个卷组能够包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。
- 逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。
2、LVM 的优势
1、小系统使用LVM的益处:
- 传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:
- 不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;
- 当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更
大的分区中;或采用符号连接的方式使用其它分区的空间。 - 如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。
2、当采用LVM时,情况有所不同
- 硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
- 文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求;
- 文件系统建立在LVM上,可以跨分区,方便使用;
3、大系统使用LVM的益处
- 在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。
- 在一个有很多不同容量硬盘的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。
- 用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。
2、部署逻辑卷
- 生产环境中无法在最初时就精确地评估每个硬盘分区在日后的使用情况,因此会导致原先分配的硬盘分区不够用。比如,伴随着业务量的增加,用于存放交易记录的数据库目录的体积也随之增加;因为分析并记录用户的行为从而导致日志目录的体积不断变大,这些都会导致原有的硬盘分区在使用上捉襟见肘。而且,还存在对较大的硬盘分区进行精简缩容的情况。
- 可以通过部署LVM来解决上述问题。部署时,需要逐个配置物理卷、卷组和逻辑卷,常用的部署命令如表7-3所示。
表7-3 常用的LVM部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
- 为了避免多个实验之间相互发生冲突,请大家自行将虚拟机还原到初始状态,并重新添加两块新硬盘设备,如图7-10所示。
图7-10 在虚拟机中添加两块新的硬盘设备
- 在虚拟机中添加两块新硬盘设备的目的,是为了更好地演示LVM理念中用户无须关心底层物理硬盘设备的特性。
- 对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,
- 然后对这两块硬盘进行卷组合并,卷组的名称允许由用户自定义。
- 根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成Ext4文件系统后挂载使用。
下文将对每一个步骤做一些简单的描述。
第1步:让新添加的两块硬盘设备支持LVM技术。
[root@edenluo.com ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
注意
[root@edenluo.com ~]# pvcreate /dev/sdb /dev/sdc
Device /dev/sdb excluded by a filter.
Device /dev/sdc excluded by a filter.
导致问题的原因是添加的磁盘是在另一个虚拟机中新建的,已经有了分区表,现在的虚拟机并不能识别磁盘的分区表,运行parted命令重做分区表,中途需要输入三次命令。
[root@edenluo.com ~]# parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) quit
Information: You may need to update /etc/fstab.
再次运行pvcreate,问是否擦除dos签名,输入y,就可以将磁盘创建为PV了。
[root@edenluo.com ~]# pvcreate /dev/sdb /dev/sdc
WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y
Wiping dos signature on /dev/sdb.
WARNING: dos signature detected on /dev/sdc at offset 510. Wipe it? [y/n]: y
Wiping dos signature on /dev/sdc.
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
第2步:把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。
[root@edenluo.com ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@edenluo.com ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID HPwsm4-lOvI-8O0Q-TG54-BkyI-ONYE-owlGLd
………………省略部分输出信息………………
第3步:再切割出一个约为150MB的逻辑卷设备。
- 这里需要注意切割单位的问题。在对逻辑卷进行切割时有两种计量单位。
- 第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M生成一个大小为150MB的逻辑卷。
- 另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。
[root@edenluo.com ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created.
[root@edenluo.com ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID AsDGJj-G6Uo-HG4q-auD6-lmyn-aLY0-o36HEj
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-01-15 00:47:35 +0800
LV Status available
# open 0
LV Size 148.00 MiB
Current LE 37
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
………………省略部分输出信息………………
第4步:把生成好的逻辑卷进行格式化,然后挂载使用。
Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上就是个快捷方式),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。
[root@edenluo.com ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 151552 1k blocks and 38000 inodes
Filesystem UUID: 429cbc28-4463-4a1b-b601-02a7cf81a1b2
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[root@edenluo.com ~]# mkdir /edenluo
[root@edenluo.com ~]# mount /dev/storage/vo /edenluo
- 如果使用了逻辑卷管理器,则不建议用XFS文件系统,因为XFS文件系统自身就可以使用xfs_growfs命令进行磁盘扩容。这虽然不比LVM灵活,但起码也够用。在实测阶段我们发现,在有一些服务器上,XFS与LVM的兼容性并不好。
第5步:查看挂载状态,并写入配置文件,使其永久生效。
[root@edenluo.com ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.6M 974M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 17G 3.9G 14G 23% /
/dev/sr0 6.7G 6.7G 0 100% /media/cdrom
/dev/sda1 1014M 152M 863M 15% /boot
tmpfs 197M 16K 197M 1% /run/user/42
tmpfs 197M 3.4M 194M 2% /run/user/0
/dev/mapper/storage-vo 140M 1.6M 128M 2% /edenluo
[root@edenluo.com ~]# echo "/dev/storage/vo /edenluo ext4 defaults 0 0" >> /etc/fstab
[root@edenluo.com ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 21 05:03:40 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=2db66eb4-d9c1-4522-8fab-ac074cd3ea0b /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
/dev/storage/vo /edenluo ext4 defaults 0 0
注意:刚刚明明写的是148MB,怎么这里只有140MB了呢?这是因为硬件厂商的制造标准是1GB=1,000MB、1MB=1,000KB、1KB=1,000B,而计算机系统的算法是1GB=1,024MB、1MB=1,024KB、1KB=1,024B,因此有3%左右的“缩水”是正常情况。
2、扩容逻辑卷
从底层到上层
卷组是由两块硬盘设备共同组成的。用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。(检查磁盘完整性需要卸载)
[root@edenluo.com ~]# umount /edenluo
第1步:新添加一块块硬盘设备支持LVM技术。
[root@edenluo.com ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
第2步:将新加的pv 添加到vg中
[root@edenluo.com ~]# vgextend -v storage /dev/sdd
第3步:将逻辑卷vo扩展至290MB。
[root@edenluo.com ~]# lvextend -L 5G /dev/storage/vo
Rounding size to boundary between physical extents: 292.00 MiB.
Size of logical volume storage/vo changed from 148 MiB (37 extents) to 292 MiB (73 extents).
Logical volume storage/vo successfully resized.
[root@edenluo.com ~]# lvextend -L +5G /dev/storage/vo
第4步:检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
[root@edenluo.com ~]# e2fsck -f /dev/storage/vo
e2fsck 1.44.3 (10-July-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
第5步:重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
[root@edenluo.com ~]# resize2fs /dev/storage/vo
resize2fs 1.44.3 (10-July-2018)
Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.
The filesystem on /dev/storage/vo is now 299008 (1k) blocks long.
[root@edenluo.com ~]# resize2fs /dev/vg0/lv0 [200M] //ext文件系统
[root@edenluo.com ~]# xfs_growfs /dev/vg1/lv1 //xfs文件系统
第6步:重新挂载硬盘设备并查看挂载状态(没有卸载无需挂载)。
[root@edenluo.com ~]# mount -a
[root@edenluo.com ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 969M 0 969M 0% /dev
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 984M 9.6M 974M 1% /run
tmpfs 984M 0 984M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 17G 3.9G 14G 23% /
/dev/sr0 6.7G 6.7G 0 100% /media/cdrom
/dev/sda1 1014M 152M 863M 15% /boot
tmpfs 197M 16K 197M 1% /run/user/42
tmpfs 197M 3.4M 194M 2% /run/user/0
/dev/mapper/storage-vo 279M 2.1M 259M 1% /edenluo
3、缩小逻辑卷
- 相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外,Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证数据的安全)。在执行缩容操作前记得先把文件系统卸载掉。
[root@edenluo.com ~]# umount /edenluo
第1步:检查文件系统的完整性。
[root@edenluo.com ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage/v0: 11/1349632 files (0.0% non-contiguous), 177759/5398528 blocks
[root@student-sys ~]# resize2fs /dev/storage/vo 4G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/v0 to 4194304 (1k) blocks.
The filesystem on /dev/storage/v1 is now 4194304 blocks long.
第2步:通知系统内核将逻辑卷vo的容量减小到120MB。
[root@edenluo.com ~]# resize2fs /dev/storage/vo 4G
resize2fs 1.44.3 (10-July-2018)
Resizing the filesystem on /dev/storage/vo to 4194304 (1k) blocks.
The filesystem on /dev/storage/vo is now 4194304 (1k) blocks long.
第3步:将LV逻辑卷的容量修改为120M。
[root@edenluo.com ~]# lvreduce -L 4G /dev/storage/vo
WARNING: Reducing active logical volume to 4.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage/vO? [y/n]: y
Size of logical volume storage/v0 changed from <5.15 GiB (1318 extents) to 4.00 GiB (1024 extents).
Logical volume storage/vO successfully resized.
缩容操作为什么是先通知系统内核设备的容量要改变成120MB,然后再正式进行缩容操作呢?
先通知系统内核自己想缩小逻辑卷,如果在执行resize2fs命令后系统没有报错,再正式操作,防止系统异常。
第4步:重新挂载文件系统并查看系统状态。
[root@edenluo.com ~]# mount -a
[root@edenluo.com ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.8M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 47G 1.9G 46G 4% /
/dev/sda1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/storage-v1 ext4 3.9G 2.9M 3.8G 1% /v1
4、逻辑卷快照
LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:
- 快照卷的容量必须等同于逻辑卷的容量;
- 快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
在正式操作前,先看看VG(卷组)中的容量是否够用:
[root@edenluo.com ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 30 / 120.00 MiB
Free PE / Size 10208 / <39.88 GiB
VG UUID k3ZnaP-wGPr-TQJ5-PCtA-0RgO-jvsi-9elZ5M
………………省略部分输出信息………………
通过卷组的输出信息可以清晰看到,卷组中已经使用了120MB的容量,空闲容量还有39.88GB。接下来用重定向往逻辑卷设备所挂载的目录中写入一个文件。
[root@edenluo.com ~]# echo "Welcome to edenluo.com" > /edenluo/readme.txt
[root@edenluo.com ~]# ls -l /edenluo
total 14
drwx------. 2 root root 12288 Jan 15 01:11 lost+found
-rw-r--r--. 1 root root 26 Jan 15 07:01 readme.txt
第1步:使用-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作,稍后数据也会还原到这个相应的设备上。
[root@edenluo.com ~]# lvcreate -L 4G -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created
[root@edenluo.com ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID qd7l6w-3Iv1-6E3X-RGkC-t5xl-170r-rDZSEf
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-01-15 07:02:44 +0800
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
………………省略部分输出信息………………
第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。可以发现存储空间的占用量上升了。
[root@edenluo.com ~]# dd if=/dev/zero of=/edenluo/files count=1 bs=100M
1+0 records in
1+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.312057 s, 336 MB/s
[root@edenluo.com ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID qd7l6w-3Iv1-6E3X-RGkC-t5xl-170r-rDZSEf
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-01-15 07:02:44 +0800
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 1.41%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
………………省略部分输出信息………………
第3步:为了校验快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。
- lvconvert命令用于管理逻辑卷的快照,语法格式为“lvconvert [参数]快照卷名称”。
- 使用lvconvert命令能自动恢复逻辑卷的快照,在早期的RHEL/CentOS5版本中要写全格式:“--mergesnapshot”,而从RHEL 6到RHEL 8,已经允许用户只输入--merge参数进行操作了,系统会自动分辨设备的类型。
[root@edenluo.com ~]# umount /edenluo #必须要卸载之后恢复
[root@edenluo.com ~]# lvconvert --merge /dev/storage/SNAP
Merging of volume storage/SNAP started.
storage/vo: Merged: 36.41%
storage/vo: Merged: 100.00%
注意:如果没有umount,就直接进行合并,会告警如下
[root@localhost ~]# lvconvert --merge /dev/vg01/lv01-s
Delaying merge since origin is open.
Merging of snapshot vg01/lv01-s will occur on next activation of vg01/lv01.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <47.50g
lv01 vg01 Owi-aos--- 6.00g
lv02 vg01 -wi-a----- 5.00g
其中O代表会进行合并的一种状态,s代表休眠,所以发现没有合并,也不会合并。就需要手动激活刷新一下。
lvchange --refresh VG|LV|Tag
另外发现快照也是可以修改内容,合并后成为快照里面的内容。所以不要修改快照。
第4步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。
[root@edenluo.com ~]# mount -a
[root@edenluo.com ~]# cd /edenluo/
[root@edenluo edenluo]# ls
lost+found readme.txt
[root@edenluo edenluo]# cat readme.txt
Welcome to edenluo.com
5、 删除逻辑卷
- 当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。
第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
[root@edenluo.com ~]# umount /edenluo
[root@edenluo.com ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 21 05:03:40 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=2db66eb4-d9c1-4522-8fab-ac074cd3ea0b /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
/dev/storage/vo /edenluo ext4 defaults 0 0
第2步:删除逻辑卷设备,需要输入y来确认操作。
[root@edenluo.com ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume storage/vo? [y/n]: y
Logical volume "vo" successfully removed
第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
[root@edenluo.com ~]# vgremove storage
Volume group "storage" successfully removed
第4步:删除物理卷设备。
[root@edenluo.com ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
在上述操作执行完毕之后,再执行lvdisplay、vgdisplay、pvdisplay命令来查看LVM的信息时就不会再看到相关信息了
如果对伙伴们有帮助,感谢关注支持「想吃西红柿」「云原生运维实战派」后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。