LVM(逻辑卷管理)是什么(新手必看)
LVM 是 Logical Volume Manager 的简称,中文译为逻辑卷管理,它是 Linux 系统对磁盘分区的一种管理机制。
我们在实际使用 Linux 服务器的时候,总会面临一个让人头疼的问题:分区到底应该分多大呢?分得太大,会浪费硬盘空间;分得太小,又会出现分区空间不足的情况。如果在安装系统时规划得不合理,此种困扰就会经常出现。
在实际工作和生活中,我们几乎不可能在进行一次分区后,分区空间就刚好能满足所有场景的使用需求,毕竟我们也无法预估今后服务器中数据的增长量。因此,建议在进行分区时注意数据增长趋势,将分区空间设置得略大于现有数据,并保证至少在一段时间内有足够的可用空间。那么,在一段时间后如果出现分区空间不足,该怎么办呢?
如果出现了分区空间不足的情况,就需要根据使用的操作系统和内核版本来选择不同的解决方式。
以往(2.4 内核版本以前)要想调整分区大小,要么先新建立一个更大的分区,然后将旧分区中的内容复制到新分区,最后使用软链接来替代旧分区;要么使用调整分区大小的工具,如 parted。parted 可以调整分区大小,但只有卸载分区之后才可以进行,也就是说在调整分区空间期间,分区中的数据是无法被访问的,如果分区中恰好运行了一些服务,那么要将服务停止后才能调整分区空间。
现在我们使用的 Rocky Linux 9.x 操作系统,其默认支持 LVM,可以选择使用 LVM 进行分区扩容。并且,LVM 的优势在于能够动态地对分区进行扩容。动态表示从扩容开始到扩容结束,我们扩容的分区都不需要卸载,在整个扩容过程中,扩容分区的原有数据是可以被正常访问的。
LVM 在硬盘分区之上建立了一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一整块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而极大地提高了分区空间的灵活性。
我们把真实的物理硬盘或分区称作物理卷;由多个物理卷组成的一块大的逻辑硬盘,叫作卷组;将卷组划分成多个可以使用的分区,叫作逻辑卷。而在 LVM 中,最小的存储单位不再是扇区或 block,而是物理扩展。
我们通过下图来了解上述概念之间的联系:

图 1 LVM 结构示意图
也就是说,我们在建立 LVM 的时候,需要按照以下步骤来进行:
其实,在安装 Linux 系统时,我们采用的图形安装界面就可以直接把硬盘配置成 LVM,但当时我们只分配了基本分区。这是因为 LVM 最主要的作用是分区扩容,所以就算在安装 Linux 系统时选择 LVM,我们还是需要先学习 LVM 的命令才能在字符界面中进行扩容。
我们在实际使用 Linux 服务器的时候,总会面临一个让人头疼的问题:分区到底应该分多大呢?分得太大,会浪费硬盘空间;分得太小,又会出现分区空间不足的情况。如果在安装系统时规划得不合理,此种困扰就会经常出现。
在实际工作和生活中,我们几乎不可能在进行一次分区后,分区空间就刚好能满足所有场景的使用需求,毕竟我们也无法预估今后服务器中数据的增长量。因此,建议在进行分区时注意数据增长趋势,将分区空间设置得略大于现有数据,并保证至少在一段时间内有足够的可用空间。那么,在一段时间后如果出现分区空间不足,该怎么办呢?
如果出现了分区空间不足的情况,就需要根据使用的操作系统和内核版本来选择不同的解决方式。
以往(2.4 内核版本以前)要想调整分区大小,要么先新建立一个更大的分区,然后将旧分区中的内容复制到新分区,最后使用软链接来替代旧分区;要么使用调整分区大小的工具,如 parted。parted 可以调整分区大小,但只有卸载分区之后才可以进行,也就是说在调整分区空间期间,分区中的数据是无法被访问的,如果分区中恰好运行了一些服务,那么要将服务停止后才能调整分区空间。
现在我们使用的 Rocky Linux 9.x 操作系统,其默认支持 LVM,可以选择使用 LVM 进行分区扩容。并且,LVM 的优势在于能够动态地对分区进行扩容。动态表示从扩容开始到扩容结束,我们扩容的分区都不需要卸载,在整个扩容过程中,扩容分区的原有数据是可以被正常访问的。
LVM 在硬盘分区之上建立了一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一整块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而极大地提高了分区空间的灵活性。
我们把真实的物理硬盘或分区称作物理卷;由多个物理卷组成的一块大的逻辑硬盘,叫作卷组;将卷组划分成多个可以使用的分区,叫作逻辑卷。而在 LVM 中,最小的存储单位不再是扇区或 block,而是物理扩展。
我们通过下图来了解上述概念之间的联系:

图 1 LVM 结构示意图
- 物理卷(Physical Volume,PV):可以把分区或整块硬盘划分为 PV,如果是将分区划分为 PV,就需要把分区的 ID 改为 8e00(LVM 的标识 ID)。而如果是将整块硬盘划分为 PV,就可以直接划分,不需要提前对硬盘进行分区。
- 卷组(Volume Group,VG):将多个 PV 合并起来就组成了 VG。组成同一个 VG 的 PV 可以是同一块硬盘的不同分区,也可以是不同硬盘的不同分区,或者是不同硬盘。我们可以把 VG 想象为一块逻辑硬盘。
- 逻辑卷(Logical Volume,LV):VG 是一块逻辑硬盘,我们并不能对这个逻辑硬盘进行格式化,而是要在这个逻辑硬盘的基础上划分出“分区”,我们把这个“分区”称作 LV。LV 可以被格式化、挂载并写入数据。
- 物理扩展(Physical Extend,PE):PE 是 VG 中的最小存储单位,PE 的大小是可以调整的,默认为 4MB。注意区分 PE 和 block(数据块)的差别,block 是格式化后文件系统中划分的最小存储单位,而 PE 是在 VG 创建时划分的,在使用 VG 划分 LV 时,可以指定从 VG 中划分多少个 PE 组成 LV。
也就是说,我们在建立 LVM 的时候,需要按照以下步骤来进行:
- 把物理硬盘分成分区,并把分区的 ID 号改为 8e00。当然也可以直接使用整块硬盘,如果使用整块硬盘,就不需要对硬盘进行分区,直接将整块硬盘创建成 PV 即可;
- 把物理分区建立为 PV,也可以直接把整块硬盘都建立为 PV;
- 把 PV 合并为 VG,建立 VG 的时候需要划分 PE,默认为 4MB。VG 可以动态地调整大小,把更多的 PV 加入 VG 就表示 VG 扩容,把 PV 从 VG 中移除就表示 VG 空间缩减;
- 在 VG 的基础上划分 LV,当然 LV 空间也是可以调整大小(扩容或缩减)的;
- 将 LV 格式化写入文件系统,之后进行挂载,接下来就可以读写数据了。
其实,在安装 Linux 系统时,我们采用的图形安装界面就可以直接把硬盘配置成 LVM,但当时我们只分配了基本分区。这是因为 LVM 最主要的作用是分区扩容,所以就算在安装 Linux 系统时选择 LVM,我们还是需要先学习 LVM 的命令才能在字符界面中进行扩容。