关于LVM的概念及相关操作

本文主要介绍LVM是什么及相关的操作,文末会介绍如何删除Ceph环境上的vg,pv(至于什么是vg和pv,阅读完本文你自然会知道^_^)。

LVM 是什么

LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。

LVM就是通过将底层的物理硬盘封装,然后以逻辑卷的方式呈现给上层应用。当我们对底层的物理硬盘进行操作时,不再是针对分区进行操作,而是通过逻辑卷对底层硬盘进行管理操作。

LVM中的一些基本概念

通过 LVM 技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。下面是 LVM 中主要涉及的一些概念。

  • 物理存储介质(The physical media):LVM存储介质,可以是硬盘分区、整个硬盘、raid阵列或SAN硬盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。

  • 物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。

  • 卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。

  • 逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。

  • 物理块PE(physical Extent):物理卷PV中可以分配的最小存储单元,PE的大小可以指定,默认为4MB

  • 逻辑块LE(Logical Extent):逻辑卷LV中可以分配的最小存储单元,在同一卷组VG中LE的大小和PE是相同的,并且一一对应。

可以这么理解,LVM 是把硬盘的分区分成了更小的单位(PE),再用这些单元拼成更大的看上去像分区的东西(PV),进而用 PV 拼成看上去像硬盘的东西(VG),最后在这个新的硬盘上创建分区(LV)。文件系统则建立在 LV 之上,这样就在物理硬盘和文件系统中间添加了一层抽象(LVM)。下图大致描述了这些概念之间的关系:

对上图中的结构做个简单的介绍:两块物理硬盘 A 和 B 组成了 LVM 的底层结构,这两块硬盘的大小、型号可以不同。PV 可以看做是硬盘上的分区,因此可以说物理硬盘 A 划分了两个分区,物理硬盘 B 划分了三个分区。然后将前三个 PV 组成一个卷组 VG1,后两个 PV 组成一个卷组 VG2。接着在卷组 VG1 上划分了两个逻辑 LV1 和 LV2,在卷组 VG2 上划分了一个逻辑卷 LV3。最后,在逻辑卷 LV1、LV2 和 LV3 上创建文件系统,分别挂载在 /usr、/home 和 /var 目录。

下图展示从pv到lv,然后到我们能看见的目录文件,需要经过的过程(由下到上)示意:

删除LVM:

1. 删除逻辑卷

1
2
3
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
osd-block-dde657b7-88c6-4cc6-8e04-fae98b1f5472 ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398 -wi-a----- <7.28t
1
2
# lvdisplay
LV Path /dev/ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398/osd-block-dde657b7-88c6-4cc6-8e04-fae98b1f5472
1
2
3
# lvremove /dev/ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398/osd-block-dde657b7-88c6-4cc6-8e04-fae98b1f5472
Do you really want to remove and DISCARD active logical volume ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398/osd-block-dde657b7-88c6-4cc6-8e04-fae98b1f5472? [y/n]: y
Logical volume "osd-block-dde657b7-88c6-4cc6-8e04-fae98b1f5472" successfully removed

2. 删除卷组vg

1
2
3
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398 lvm2 a-- <7.28t 0
1
2
# vgremove ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398
Volume group "ceph-03bdcf51-248a-4f09-a131-fcdc4a9a7398" successfully removed

3.删除物理卷

1
2
# pvremove /dev/sda
Labels on physical volume "/dev/sda" successfully wiped.

清理Ceph环境上的LVM的方法

其实跟上面清理LVM的方法一致,不过可以写简单的语句,方便快速清理:

  • 删除卷组vg:
1
for i in `pvs | grep ceph | awk '{ print $2 }'`; do vgremove -y $i; done
  • 删除物理卷pv:
1
for i in `pvs | grep dev | awk '{ print $1 }'`; do pvremove -y $i; done

其他操作

做磁盘分区,创建pv,创建vg,创建lv等等操作,请看下面的参考资料,本文就不赘述了。

参考资料

Linux LVM简明教程
LVM简介
LVM管理

如果你觉得本文对你有帮助,欢迎打赏