一、Lvm逻辑卷
1.Lvm简介
LVM(Logical Volume Manager)即逻辑卷管理器,是Linux系统下对磁盘分区进行管理的一种机制。LVM在硬盘分区和文件系统之间添加了一个逻辑层,为文件系统屏蔽了下层的磁盘分区布局,提供了一个 抽象的卷组,用户可以在这个卷组上创建文件系统。

2. 关系解读
PE与PV的关系:
PE是物理卷(PV)中可用于分配的最小存储单元。 每个物理卷都会被划分为多个PE,这些PE是LVM进行存储分配的基本单位。
LE与LV的关系:
LE是逻辑卷(LV)中可用于分配的最小存储单元。 每个逻辑卷都会被划分为多个LE,这些LE与卷组中的PE一一对应。
VG与PV的关系:
卷组(VG)建立在物理卷(PV)之上,一个卷组可以包含多个物理卷。 物理卷在加入卷组之前需要被初始化为LVM物理卷。
LV与VG的关系:
逻辑卷(LV)建立在卷组(VG)之上,卷组中的未分配空间可以用于创建新的逻辑卷。 逻辑卷在创建后可以动态地扩展和缩小空间,以适应不同的存储需求。
五个术语相互关联
PE和LE是LVM进行存储分配的基本单位,它们分别位于物理层和逻辑层。 PV是LVM存储管理的最底层,VG是建立在PV之上的一个逻辑层,而LV则是建立在VG之上的另一个逻辑 层。 这些层次结构共同构成了LVM存储管理的框架,使得LVM能够灵活地管理存储资源。
综上所述:
PE、LE、PV、VG和LV在LVM中扮演着不同的角色,它们之间存在密切的关系和相互作用。这些概念和层 次结构共同构成了LVM存储管理的核心,使得LVM能够高效地管理存储资源并满足不同的存储需求。
3.Lvm的优势
1.提高磁盘管理的灵活性:
通过LVM,系统管理员可以轻松管理磁盘分区,如将若干个磁盘分区连接为一个整块的卷组,形成一个存 储池。管理员可以在卷组上随意创建逻辑卷,并进一步在逻辑卷上创建文件系统。
2.动态调整存储卷组大小:
管理员通过LVM可以方便地调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分 配。例如,可以按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘 名“sda”和“sdb”。
3.充分利用存储空间:
当系统添加了新的磁盘时,通过LVM,管理员不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空 间,而是直接扩展文件系统跨越磁盘即可。
4.支持跨分区文件系统:
文件系统可以建立在LVM上,跨多个分区使用,方便数据的存储和管理。
二、创建lvm实践
1.环境部署
Rocky系统yum install -y lvm2Ubuntu系统apt install -y lvm2
2.创建命令详解
创建LVM:通常包括创建物理卷、卷组和逻辑卷等步骤。可以使用pvcreate命令创建物理卷,使用vgcreate命令 创建卷组,使用lvcreate命令创建逻辑卷。
命令解读
物理卷信息查看命令:pvs # 简要 pv 信息显示pvdisplay # 显示详细信息创建PV命令:pvcreate /dev/ 磁盘名 # 创建物理卷卷组信息查看命令:vgs # 简要 vg 信息显示vgdisplay # 显示详细信息创建VG命令:vgcreate [-s Size ] vgname pv1 [pv2.. .]# 创建 VG# -s 指定 PE 大小,数字加单位,单位为 k|K|m|M|g|G|t|T|p|P|e|E逻辑卷信息查看命令lvs # 简要 lv 信息显示Lvdisplay # 显示详细信息lvscan # 查看 lv 的具体名称路径创建LV命令:lvcreate {-L N[mMgGtT]|-l N} -n NAME VolumeGroup选项参数:- L|-- size N[mMgGtT] # 指定大小-l |-- extents N # 指定 PE 个数 , 也可用百分比- n Name # 逻辑卷名称
3.准备工作(这里以rocky为例添加 5块模拟磁盘)


echo - e 'n\np\n\n\n\nw' | fdisk / dev / sdbecho - e 'n\np\n\n\n\nw' | fdisk / dev / sdcecho - e 'n\np\n\n\n\nw' | fdisk / dev / sddecho - e 'n\np\n\n\n\nw' | fdisk / dev / sdeecho - e 'n\np\n\n\n\nw' | fdisk / dev / sdf

4.创建PV
将两个物理磁盘分区,创建四个pv 应用pvcreate命令创建 ,可以用pvs或者pvdisplay查看


5.创建vg组
用vgcreate创建vg组 可以使用-s 来指定PE的大小 也就是块的大小 默认是4M每个块的大小 这个可以根据自己存放的数据来修该块的大小,要是多量的小数据 可以默认就可以了。我这里就演示一下指定块大小。

同样可以用vgs来查看创建好的vg组,也可以用vgdisplay来查看vg组的详细信息。

6.创建lv
1.用lvcreate命令来创建lv 从 vg_1 中创建lv1,大小为 100个PE

2.从 vg_1 中创建 10G 的lv2 直接指定大小 -L 10G
![]()

3.使用百分比来创建 lv3 以剩余PE的vg_1 的空闲空间百分之十来创建

4.也可以直接指定 vg的 百分比来创建lv4

7. 格式化lv并挂载在目录上
可以创建一个挂载的目录文件 mkdir /lvm 格式化创建好的lv任选其中一个即可 我这里选择lv2

挂载

三、扩容
1.VG扩容
之前创建五个磁盘 还有sde还没用 这个时候假如逻辑卷组的内存不够用 我们要对vg组进行扩容
首先将sde1创建到pv

查看

用vgextend 将新创建好的pv假如到vg_1组中

2.Vg缩容
首先用pvdisplay 来查看单个pv的详细信息 一定确认好 没有数据

用vgreduce 来对vg_1组的缩容

3.lv在线扩容
直接已将lv2挂载在目录上了 lv扩容可以在线扩容 首先对挂载的lv2进行扩容

原始的lv2是10G 现在lvs查看lv2大小

但是我么的文件系统的空间是没有增大的

对文件系统进行扩容

可以检查一下

4.lv缩容
取消挂载

检验完整性(这个步骤是必须要做的)

先对文件进行缩容

对lv2进行缩容 先查看lv2的大小

缩容-L 直接指定大小

重新挂载

四、创建快照
1.简介
逻辑卷快照是逻辑卷管理(LVM)中的一种功能,它允许用户对逻辑卷(LV)进行备份或创建数据的时间点副本。也就是说,它在生成时是对原逻辑卷数据的准确拷贝,但并非实时复制所有数据,而是基于写时复制(Copy-On-Write, COW)机制。
2.特点
节省空间:由于快照仅存储变化的数据,因此相对于完全备份,快照可以大大节省存储空间。
快速创建:快照创建过程迅速,不会对系统性能产生显著影响。
数据恢复:通过快照,可以轻松地将数据恢复到创建快照时的状态,这对于数据恢复和灾难恢复非常重要。
一次性使用:快照通常是一次性使用的,一旦还原,快照就会失效并被删除。
3.流程
1 创建快照:
使用lvcreate命令并添加-s参数来创建一个快照。同时,可以使用-L参数指定快照的大小,以及-n参数指定快照的名称。
2 挂载快照:
将快照挂载到一个空目录上,以便访问快照中的数据。快照通常以只读方式挂载。
3 备份数据:
在快照挂载后,可以使用常规的备份工具(如rsync、tar等)对快照中的数据进行备份。
4 恢复数据(可选):
如果需要从快照恢复数据,可以先卸载原始逻辑卷,然后使用lvconvert --merge命令将快照合并到主逻辑卷中。这将把快照时的数据状态应用到主逻辑卷上。
恢复快照的时候,快照就没有了
5 删除快照:
完成备份或数据恢复后,可以使用lvremove命令删除快照。
4.准备工作
在原来挂载的lvm的文件上 创建几个文件
在lvm的挂载目录下,添加几个文件
[root@rocky9 ~]# cp /etc/fstab /mount/lvm/
[root@rocky9 ~]# ls /mount/lvm
fstab lost+found test .file
创建专属的快照目录
[root@rocky9 ~]# mkdir /mount/lvm_snapshot
[root@rocky9 ~]# ls -d /mount/lvm
/mount/lvm /mount/lvm_snapshot
前期工作准备完成,开始创建快照

将创建的快照挂载到快照的文件目录 lvm_snapshot下

查看一下lvm和快照的文件目录

现在直接删除lvm目录下的new.txt和fstab的文件 然后用我们的快照直接恢复我们删除的文件

恢复删除的文件
取消挂载
umount /mount/lvm
umount /mount/lvm_snapshot
恢复快照
lvconvert --merge /dev/vg_1/lvm_snapshot
挂载
mount /dev/vg_1/lv2 /mount/lvm

注意一个快照只能使用一次 如果还想使用就在创建一个快照在挂载
五、实战
查看PV存储过滤出想要的数据
pvdisplay | egrep 'volume|PV Name|Total PE|Free PE'

用pvmove /dev/sad1 将数据转移到其他存储PV上

在执行 vgreduce vg_1 /dev/sdb1 就移除指定的PV存储了


实战2:现有一个卷组 vg_data,其中已包含物理卷 /dev/sdb1。在该卷组中有一个名为 lv_store 的逻辑卷,采用 xfs 文件系统,挂载在 /store。由于空间爆满,需要从物理盘 /dev/sdc2 处对其进行扩容。请写出:
1. 将 /dev/sdc2 初始化为 PV 并扩展到卷组 vg_data。
2. 扩展逻辑卷 lv_store,将卷组剩余所有空间全部加给它。
3. 在线扩容其 xfs 文件系统。
查看状态
1. 将 /dev/sdc2 初始化为 PV 并扩展到卷组 vg_data。
2. 扩展逻辑卷 lv_store,将卷组剩余所有空间全部加给它。
3. 在线扩容其 xfs 文件系统。
实战三:在对新磁盘配置持久挂载时,某管理员将 /etc/fstab 中的 UUID 输错了一个字符,重启后系统直接卡在了 Emergency Mode。此时根分区变为了只读。请回答:
1. 在此终端下如果直接编辑 /etc/fstab 会遇到什么报错?(提示:只读文件系统)
2. 请给出能够解除只读限制、恢复系统挂载并修复该配置文件的完整命令步骤。
3. 在修改 /etc/fstab 之后重启前,应运行哪条命令验证配置正确性?
1. 在此终端下如果直接编辑 /etc/fstab 会遇到什么报错?(提示:只读文件系统)
系统根分区为只读模式,写入操作被内核阻止,执行
vi /etc/fstab保存时会提示:
2. 请给出能够解除只读限制、恢复系统挂载并修复该配置文件的完整命令步骤。
完整修复步骤(Emergency 救援模式操作)
步骤 1:重新以可读写模式挂载根分区
mount -o remount,rw /
这条命令在不卸载根分区的前提下,将根文件系统从只读重新挂载为读写模式,获得修改文件权限
步骤 2:编辑 /etc/fstab 修正错误 UUID
vim /etc/fstab
找到填写错误 UUID 的行,修改为磁盘真实 UUID(可新开终端执行
blkid查看正确 UUID),保存退出步骤 3:验证 fstab 无语法 / UUID 错误,重新挂载所有条目
mount -a
步骤 4:正常重启系统
reboot
3. 在修改 /etc/fstab 之后重启前,应运行哪条命令验证配置正确性?
mount -a
实战4:开发部门在清理旧分区时,要求运维将一个容量为 500GB 的 LVM 逻辑卷缩减到 200GB。该卷上挂载的是 xfs 文件系统。请回答:
1. 这个任务在 xfs 文件系统上可行吗?如果执行 lvreduce 会发生什么灾难?
2. 如果文件系统是 ext4,缩减逻辑卷的正确安全步骤是怎样的?为什么缩容必须“先缩减文件系统,再缩减逻辑卷”?
1. 这个任务在 xfs 文件系统上可行吗?如果执行 lvreduce 会发生什么灾难?
完全不可行,XFS 文件系统不支持任何缩容操作,仅支持在线扩容,官方无工具可以缩小 XFS 文件系统。
2)直接执行
lvreduce的灾难性后果
先执行
lvreduce -L 200G /dev/vg/xxx会直接截断逻辑卷后端 300GB 存储空间;XFS 文件系统的元数据、数据块有大量内容存放在被截断的空间中;
后果:
文件系统超级块、inode、数据区直接损坏;
挂载时报
bad superblock,所有数据彻底丢失;无法通过
xfs_repair修复截断后的 XFS,数据不可恢复;系统启动进入救援模式,业务完全瘫痪。
2. 如果文件系统是 ext4,缩减逻辑卷的正确安全步骤是怎样的?为什么缩容必须“先缩减文件系统,再缩减逻辑卷”?
步骤 1:备份数据(必做,防意外)
步骤 2:卸载逻辑卷(缩容不能在线操作)
步骤 3:检测 ext4 文件系统完整性
步骤 4:先缩小 ext4 文件系统至目标容量 200G
步骤 5:再缩减 LVM 逻辑卷底层存储空间
步骤 6:重新挂载验证
六、删除逻辑卷
删除顺序是和我们创建的是恰恰相反的 创建的时候 PV---VG-----LV 删除的时候 记得取消挂载再删除LV---VG---PV
记住先取消挂载再删除LV
lvremove /dev/vg_1/lv1 /dev/vg_1/lv2 /dev/vg_1/lv3 /dev/vg_1/lv4
这里是交互式删除的需要属于y确认一下

删除vg_1组和PV
删除vg组
vgremove vg_1
删除PV
pvremove /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sde1 /dev/sdd1







&spm=1001.2101.3001.5002&articleId=161662963&d=1&t=3&u=7f4c26bf3b0a4074b24ad24862fba5ae)
6739

被折叠的 条评论
为什么被折叠?



