1. 为什么你的Ubuntu根目录总是不够用?LVM来救场
不知道你有没有遇到过这种尴尬:当初给Ubuntu系统分区时,觉得20G的根目录(/)怎么都够用了,结果跑着跑着,df -h命令一看,使用率99%,系统天天弹警告,连apt update都因为没空间而失败。特别是如果你在虚拟机里跑Ubuntu,当初分配磁盘时手一抖给少了,后面装了一堆开发环境、Docker镜像、日志文件后,空间告急就成了家常便饭。
这时候,传统的分区方案就让人头疼了。你总不能关机、插个U盘启动、用GParted折腾半天,冒着数据丢失的风险去调整分区大小吧?尤其是生产环境或者正在跑重要任务的开发机,这种停机操作成本太高了。我当年就吃过这个亏,为了给根目录腾点空间,备份恢复折腾了大半天。
好在,Linux世界里有个“后悔药”机制,叫做LVM(Logical Volume Manager,逻辑卷管理)。你可以把它想象成你家房子的“柔性隔断墙”。传统的砖墙分区(就像/dev/sda1、/dev/sda2)一旦砌好就很难改动。而LVM则是在物理空间(你的硬盘)之上,搭建了一个灵活的“储物空间管理系统”。物理硬盘或分区是你的“地皮”(PV),把这些“地皮”合并成一个“大仓库”(VG),然后你可以从这个“大仓库”里,随时隔出大小不一的“房间”(LV)来用,比如一个房间当根目录,一个房间放/home用户数据。
最妙的是,当“地皮”扩大了(比如给虚拟机硬盘加了容量),你可以轻松地把新增的“地皮”并入“大仓库”,然后直接把“房间”的隔断墙往后推,扩大房间面积——整个过程完全可以在系统在线运行的情况下完成,无需重启。这就是我们今天要实战的“动态扩容”。如果你的Ubuntu在安装时默认使用了LVM(像Ubuntu 20.04及以后的服务器版通常就会这么做),那恭喜你,扩容会非常顺畅。即便当初没用LVM,了解这套机制,也会让你下次安装系统时做出更明智的选择。
2. 动手前必看:理清LVM的核心三兄弟(PV、VG、LV)
在开始敲命令之前,咱们得先把LVM里最关键的三个概念掰扯清楚,不然操作起来就像不看说明书拼乐高,容易懵。我尽量用大白话解释,你对照着理解。
物理卷(Physical Volume, PV):这就是最底层的“原材料”。它可以是整块硬盘(比如/dev/sdb),也可以是硬盘上的一个普通分区(比如/dev/sda3)。但一旦我们用pvcreate命令初始化它,它就变成了LVM体系下的一个“物理卷”,被打上了LVM的标签,里面会记录一些管理数据。你可以把它看成一块已经切割好、准备用来搭建积木的“基础积木块”。
卷组(Volume Group, VG):这是LVM的“资源池”。我们把一个或多个PV(基础积木块)扔进去,它们就融合成了一个大的、统一的存储空间池。比如,你可以把一块256G的SSD和一个1T的HDD的两个PV,合并成一个名为my-vg、总容量约1.25T的VG。操作系统和应用程序看到的就是这个“大池子”,而不用关心底下是SSD还是HDD。VG是灵活性的关键,因为它打破了物理磁盘的界限。
逻辑卷(Logical Volume, LV):这才是我们最终用来创建文件系统、挂载使用的“分区”。我们从VG(资源池)里划出一部分空间,创建一个LV。这个LV在系统里看起来就像一个普通的分区设备(比如/dev/mapper/my--vg-root)。我们可以在LV上格式化(mkfs.ext4),然后挂载到/、/home等目录。动态扩容的核心,就是扩大LV的容量。
它们三者的关系,我画个简单的链条你就明白了: 硬盘/分区 -> 初始化为 PV -> 加入 VG -> 从 VG 中划分出 LV -> 格式化成文件系统 -> 挂载使用
所以,我们这次扩容的完整路径,对应这个链条就是逆向的“注入资源”:
- 源头:为虚拟机增加硬盘物理容量(扩大“地皮”面积)。
- PV层:让系统识别并利

8233

被折叠的 条评论
为什么被折叠?



