hello大家好😊
什么是LVM ❓
逻辑卷管理器(Logical Volume Manager,简称LVM)是将多个物理卷抽象成一个卷组,并在卷组的基础上进一步划分逻辑卷的一种磁盘管理方法。
🚩 也就是说,我们不再将存储设备直接呈现给上层应用,而是以逻辑卷的方式呈现给上层应用。如果我们增加了一个物理硬盘,上层应用是感觉不到的,除非通过LVM将该硬盘以逻辑卷的方式呈现
通过LVM,我们可以创建逻辑卷组(Volume Group,简称VG),将物理卷(Physical Volume,简称PV)添加到卷组中,并在其中创建逻辑卷(Logical Volume,简称为LV)。逻辑卷可以像普通磁盘分区一样被格式化并挂载到文件系统上使用
LVM有三个主要组件:PV、VG、LV
-
物理卷(PV)
物理卷是LVM所使用的基础“物理”存储。在LVM 系统中使用存储设备(它们是块设备,可以是磁盘分区,也可以是整个磁盘)之前,必须将设备初始化为物理卷。LVM 工具会将物理卷划分为物理区块(PE),它们是充当物理卷上最小存储块的小块数 -
卷组(VG)
卷组是由一个或多个物理卷组成的存储池。它在功能上与基本存储中的整个磁盘相当。一个 PV只能分配给一个VG。VG可以包含未使用的空间和任意数目的逻辑卷 -
逻辑卷(LV)
逻辑卷根据卷组中的空闲物理区块创建。LV是逻辑区块(LE)的集合,LE 映射到物理区块 (PV的最小存储块)
使用LVM❓
创建逻辑卷 💡
- 准备物理设备。
只有当没有已准备好的物理设备并且需要新物理卷来创建和扩展卷组时,才需要准备物理设备。物理设备可以是磁盘分区,也可以是完整的磁盘
使用parted
、gdisk
或fdisk
创建新分区,并且在LVM分区上,始终将类型设置为Linux LVM
如下所示:
parted -s /dev/vdb mkpart primary 1MiB 769MiB # 在 /dev/vdb 这个设备上创建一个大小为 768MiB 的主分区
parted -s /dev/vdb set 1 lvm on # 把/dev/vdb的第一个分区(分区编号为1)设置为LVM类型,并开启LVM功能
- 创建物理卷
仅当没有空闲的 PV可以创建或扩展VG时,才需要创建 PV。
使用pvcreate
将分区(或其他物理设备)标记为物理卷。pvcreate 命令会将物理卷分成若干固定大小的物理区块(PE),如4 MiB 块。
如下所示:
pvcreate /dev/vdb2 /dev/vdb1 # 将设备 /dev/vdb2和/dev/vdb1标记为 PV,准备好分配到卷组中。
- 创建卷组
仅当VG 尚不存在时,才需要创建VG
使用vgcreate
将一个或多个物理卷结合为一个卷组。卷组在功能上与硬盘相当;利用卷组中的可用物理区块池可以创建逻辑卷
vgcreate命令行由卷组名后跟一个或多个要分配给此卷组的物理卷组成
如下所示:
vgcreate vg01 /dev/vdb2 /dev/vdb1 # 创建名为vg01的VG,它的大小是/dev/vdb2和/dev/vdb1这两个PV的大小之和(以PE单位计)。
- 创建逻辑卷
使用lvcreate
可根据卷组中的可用物理区块创建新的逻辑卷。lvcreate命令中至少包含用于设置LV名称的 -n 选项、用于设置大小的 -L(以字节为单位)选项或用于设置大小的 -l(以区块数为单位)选项,以及托管此逻辑卷的卷组的名称。
如下所示:
lvcreate -n lv01 -L 700M vg01 # 在VGvg01中创建一个名为1v01、大小为700 MiB 的LV。
- 添加文件系统
在新的逻辑卷上创建文件系统。比如使用mkfs
在新逻辑卷上创建 XFS 文件系统
如下所示:
mkfs -t xfs /dev/vg01/1v01 # 将lv01逻辑卷格式化为xfs文件系统
- 持久化挂载
mkdir /mnt/data # 使用mkdir创建挂载点
vim /etc/fstab
# 然后向 /etc/fstab 文件添加条目:
# /dev/vg01/lv01 /mnt/data xfs defaults 1 2
mount /mnt/data # 挂载刚刚在/etc/fstab 中添加的文件系统
删除逻辑卷
- 准备文件系统
删除逻辑卷将会破坏该逻辑卷上存储的所有数据 ❗。所以删除逻辑卷之前,我们要先备份或移动数据。
将必须保留的所有数据移动到另一个文件系统。使用umount
命令卸载文件系统,然后删除与该文件系统关联的所有/etc/fstab
条目
如下所示:
umount /mnt/data # 卸载位于/mnt/data目录下的文件系统
vim /etc/fstab # 删除与该文件系统关联的所有 /etc/fstab 条目
- 删除逻辑卷
使用lvremove DEVICE_NAME
删除不再需要的逻辑卷。删除后LV的物理区块会释放,可用于分配给卷组中现有的LV或新LV
如下所示:
lvremove /dev/vg01/1v01
删除卷组
使用vgremove VG_NAME
删除不再需要的卷组。删除后VG的物理卷会被释放,并可用于分配给系统中的现有VG或新VG。
如下所示:
vgremove vg01
删除物理卷
使用 pvremove
删除不再需要的物理卷。使用空格分隔的 PV设备列表同时删除多个 PV。此命令从分区(或磁盘) 中删除 PV元数据。删除后分区就会空闲,可重新分配或重新格式化
如下所示:
pvremove /dev/vdb2 /dev/vdb1
查看LVM状态信息 💡
- 物理卷
使用pvdisplay
显示有关物理卷的信息。比如 PV Name (映射到的设备名称)、VG Name(将PV分配到的卷组)、PV Size(PV的物理大小,包括任何不可用的空间)等等
如下所示:
pvdisplay /dev/vdb1
- 卷组
使用vgdisplay
显示有关卷组的信息。比如VG Name(卷组名称)、VG Size(存储池可用于逻辑卷分配的总大小)、Free PE / Size(VG中有多少空闲空间可用于分配给新的LV或扩展现有LV)等等
如下所示:
vgdisplay vg01
- 逻辑卷
使用lvdisplay
显示有关卷组的信息。 与前面两个命令类似,这里就不再做过多说明了
扩展和缩减卷组 💡
扩展卷组
有时我们想要扩展逻辑卷,但是逻辑卷所在的卷组的剩余空间并不多了,此时就要先扩展卷组。
我们可以通过添加额外的物理卷来为卷组增加更多磁盘空间
- 准备物理设备并创建物理卷
当没有空闲的PV可以扩展VG时,我们需要先创建PV。
如下所示:
#创建新分区
parted -s /dev/vdb mkpart primary 1027MiB 1539MiB
parted -s /dev/vdb set 3 lvm on
#将创建好的新分区用作物理卷
pvcreate /dev/vdb3
- 扩展卷组
使用vgextend
向卷组中添加新物理卷。使用VG名称和PV设备名称作为 vgextend的参数
如下所示:
# 对vg01卷组进行扩展,扩展幅度为 /dev/vdb3 物理卷的大小
vgextend vg01 /dev/vdb3
缩减卷组
- 移动物理区块
使用pvmove PV_DEVICE_NAME
将要删除的物理卷中的所有物理区块都重新放置到卷组中的其他物理卷上。其他物理卷中必须有足够数量的空闲区块来容纳这些移动内容
如下所示:
# 将PE从/dev/vdb3移动到同一VG中具有空闲PE的PV
pvmove /dev/vdb3
注意:使用pvmove前,先备份卷组中所有逻辑卷上存储的数据
- 缩减卷组
使用vgreduce VG_NAME PV_DEVICE_NAME
从卷组中删除已经清空的物理卷
如下所示:
vgreduce vg01 /dev/vdb3
扩展逻辑卷和文件系统 💡
逻辑卷的一个优势在于能够在不停机的情况下增加其大小。可将卷组中的空闲物理区块添加到逻辑卷以扩展其容量,然后可使用逻辑卷扩展所包含的文件系统
- 验证卷组是否具有可用的空间
使用vgdisplay
验证是否有足够的物理区块可供使用。然后检查输出中的Free PE /Size。确认卷组中是否有足够的空闲空间可用于LV扩展。如果可用间不足,则相应地扩展卷组 - 扩展逻辑卷
使用lvextendLV_DEVICE_NAME
将逻辑卷扩展为新的大小。
和lvcreate一样,这里有不同的选项来指定大小: -l选项预期以物理区块数作为参数。-L选项则预期以大小(单位为字节、兆字节、千兆字节等等) 作为参数
扩展LV的示例:
命令 | 结果 |
---|---|
lvextend -l 128 | 将逻辑卷的大小调整为正好 128 个区块 |
lvextend -l +128 | 向逻辑卷的当前大小添加 128 个区块 |
lvextend -L 128M | 将逻辑卷的大小调整为正好128 MiB |
lvextend -L +128M | 向逻辑卷的当前大小添加128MiB。 |
lvextend -l +50%FREE | 向LV添加VG中当前可用空间的 50% |
示例:
# 将逻辑卷lv01的大小增加300MIB
lvextend -L +300M /dev/vg01/lv01
-
扩展xfs文件系统
使用xfs_growfs mountpoint
可以扩展文件系统以占用已扩展的LV。 -
扩展ext4文件系统
使用resize2fs /dev/vgname/lvname
可以扩展文件系统以占用已扩展的LV。
注意:xfs_growfs 与 resize2fs 之间的主要区别是为识别文件系统而传递的参数。xfs_growfs
采用挂载点,而resize2fs 采用逻辑卷名称。
总结 💯
综上,我们学习到了:
- LVM 可以让我们更灵活的管理存储,LVM的存储空间可以通过新增磁盘的方式扩容
- 物理卷、卷组和逻辑卷可由各种工具 (如pvcreate、vgreduce和Ivextend) 进行管理。
- 逻辑卷可以格式化为文件系统或交换空间,并可以持久挂载
- 可以为卷组增加存储空间,也可以动态扩展逻辑卷
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞