LVM中物理卷、物理区块、卷组、逻辑卷的概念以及它们之间的关系

管理存储时,最怕听到的一句话可能就是:"根目录满了。"

面对这种报警,如果你用的是传统硬盘分区,那简直是场灾难。你看着隔壁 /home 还有一大半空闲空间,却只能干瞪眼,因为它们之间隔着一道物理分区的"铁墙"。要想挪空间?你得备份、删除、重新分区、再恢复数据------这折腾一圈,谁受得了?

为什么软件的需求变了,我们却还要被几年前装机时划分的硬盘边界给困死?

LVM(逻辑卷管理)就是为了砸碎这堵墙而生的。它在物理硬盘和操作系统之间加了一层"变压器",把僵硬的硬件变成了可以随意揉捏的"橡皮泥"。今天我们不背定义,就顺着数据流动的方向,看看 LVM 到底是怎么把物理硬盘"变没"的。

第一关:给硬盘穿上工装(PV 与 PE)

这就好比你去建房子,刚从采石场运来的原始石头(物理硬盘 /dev/sda)是没法直接砌墙的。你得先加工、打磨,让它符合建筑标准。

PV(物理卷) 就是这个"标准化"的过程。我们把一块普通的物理硬盘初始化,给它打上 LVM 的标签。这就相当于告诉操作系统:"这块盘现在归 LVM 管了,别的地方别来沾边。"

但光打标签还不够,为了方便搬运,LVM 还会把这块盘切得碎碎的。它把整块硬盘切分成无数个大小完全一样的小方块,这些小方块就叫 PE(物理区块)。

你可能会问,好好的硬盘为什么要切碎?

其实这才是 LVM 灵活的根源。就像乐高积木一样,只有把巨大的硬盘拆解成一个个标准的"积木颗粒",我们在后续才能随心所欲地拼装。如果没有这些 PE 小方块,所谓的"动态扩容"岂不成了天方夜谭?

第二关:汇聚成海(VG)

当你把手里的几块硬盘都变成了标准化的 PV,也就是一堆堆的 PE 积木后,神奇的事情发生了。

LVM 会把这些积木全部倒进同一个大池子里,这个池子就叫 VG(卷组)。到了这一层,操作系统的视野里已经没有了什么"第一块硬盘"、"第二块硬盘"的区别,它只看到一个容量巨大的存储池。

这时候你想想,原本受限于物理硬盘大小的存储上限,是不是瞬间就被突破了?

不管底层是两块 500G 的盘,还是一块 1T 的盘,在 VG 这个大池子看来,都是一样的 1000G 资源。VG 彻底屏蔽了底层的物理硬件差异,让分散的硬盘在逻辑上"合体"了。

第三关:按需取用(LV)

池子建好了,最后一步当然是"打水"来用。

我们在 VG 这个大池子里划出一块空间,把它格式化、挂载给系统用,这个东西就是 LV(逻辑卷)。我们在 Linux 里看到的 /dev/mapper/xxx,我们在上面存文件、跑数据库的,实际上就是它。

LV 看起来和普通分区一模一样,但骨子里完全不同。普通分区是死死钉在硬盘扇区上的,而 LV 本质上就是一串 PE 积木的清单。

当你的业务突然暴涨,原本划分的 100G 空间不够用了怎么办?

如果是传统分区,你可能得通宵加班迁移数据。但在 LVM 里,你只需要告诉系统:"嗨,再给我来 50 个 PE 积木。"系统就会自动从 VG 池子里抓取空闲的积木拼到你的 LV 屁股后面。这一切都是在线进行的,业务甚至都不用停。

到底怎么理解它们的关系?

把这套逻辑盘下来,你会发现 LVM 其实就在玩一个"障眼法":

它先把硬盘打磨成 PV,切成 PE 小块;

然后把所有 PE 扔进 VG 这个大仓库里;

最后根据你的需求,从仓库里调拨积木组成 LV 给你用。

所以,LVM 的本质是什么?

它就是用软件层面的复杂性,换取了管理上的极致灵活性。它让你忘掉硬盘的物理边界,从此以后,你不再是守着几块死板硬盘的"看门人",而是坐拥整个存储资源池的"调度官"。

相关推荐
彷徨的蜗牛1 小时前
架构进阶:微服务拆分的“生死线”
微服务·云原生·架构
egzosn2 小时前
Eureka 的介绍和使用
云原生·eureka
凯子坚持 c2 小时前
亮数据MCP结合Dify:构建自动化视频数据抓取与智能分析工作流的深度实践
运维·eureka·自动化
canjun_wen2 小时前
Nacos基础入门 03,Nacos vs Eureka vs Consul:主流服务注册中心深度对比测评
云原生·eureka·consul
liu****2 小时前
4.镜像仓库详解
c++·docker·云原生·容器·kubernetes·镜像\
程序员阿明2 小时前
docker 搭建iotdb集群2版本的
docker·容器·iotdb
人间打气筒(Ada)2 小时前
kubernetes 核心技术-调度器
容器·kubernetes·调度器·节点亲和性·污点·亲和性·污点和容忍
nxbsc_wanglc2 小时前
Linux安装redis
linux·运维·redis
@hdd2 小时前
控制平面组件详解:API Server、etcd、Scheduler 与 Controller Manager
kubernetes