管理存储时,最怕听到的一句话可能就是:"根目录满了。"
面对这种报警,如果你用的是传统硬盘分区,那简直是场灾难。你看着隔壁 /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 的本质是什么?
它就是用软件层面的复杂性,换取了管理上的极致灵活性。它让你忘掉硬盘的物理边界,从此以后,你不再是守着几块死板硬盘的"看门人",而是坐拥整个存储资源池的"调度官"。