LVM是Linux下的一套逻辑卷管理机制,它最大的价值是把物理磁盘和上层应用解耦。传统分区方案里,一个分区的大小在创建时就固定死了,后续想调整要么重新分区丢数据,要么借助第三方工具冒险操作。而LVM引入了一个抽象层,让你可以随时给某个逻辑卷扩容、缩容,甚至跨多块磁盘组合空间。Ubuntu从很早就内置了LVM支持,服务器版安装时甚至可以直接选择使用LVM分区方案。这篇文章从概念讲起,再到完整的手动配置流程,最后覆盖扩容等进阶操作。

一、理解LVM的三层架构
LVM的架构说起来不复杂,核心是三个概念:物理卷(Physical Volume,简称PV)、卷组(Volume Group,简称VG)和逻辑卷(Logical Volume,简称LV)。这三者是自底向上的关系,理解了它们,后面的所有命令操作都会变得顺理成章。
最底层是物理卷。一块磁盘、一个分区,甚至一个RAID阵列,只要执行过pvcreate初始化,就能成为LVM可管理的物理卷。LVM会在物理卷头部写入元数据,把它划分成一个个小的PE(Physical Extent,物理块),PE是LVM分配空间的最小单位,默认4MB。
中间层是卷组。卷组把多个物理卷的空间汇总到一起,形成一个统一的存储池。比如你有两块500GB的磁盘,创建卷组后就拥有一个1TB的存储池,上层完全感知不到底层是几块盘。这种聚合能力是LVM灵活性的基础。
最上层是逻辑卷。逻辑卷从这个存储池中划分出来,对操作系统来说就是一块普通的块设备,可以格式化、挂载、写入数据。划分时不必指定绑定哪块物理磁盘,LVM自动在底层分配。后续空间不够了,直接从卷组里再拿一部分补给逻辑卷即可,整个过程不需要停机。
二、在Ubuntu上从零搭建LVM环境
接下来用一个完整的例子演示全流程。假设Ubuntu服务器上新增了一块磁盘/dev/sdb,容量2TB,我们打算用它创建LVM并挂载到/data目录存放数据。
第一步是安装LVM工具包。桌面版Ubuntu默认可能没有安装,执行下面的命令即可:
sudo apt update sudo apt install lvm2 -y
安装完成后,先确认系统能识别到新磁盘,用lsblk或sudo fdisk -l查看。确认/dev/sdb存在且没有重要数据后,开始创建物理卷:
# 创建物理卷 sudo pvcreate /dev/sdb # 查看物理卷详细信息 sudo pvdisplay
命令执行成功后,pvdisplay会输出该物理卷的大小、PE大小、总PE数量等信息。如果你打算用分区而不是整块磁盘,可以先用fdisk或parted创建分区并把类型设为LVM(类型代码8e),再对分区执行pvcreate。
第二步,基于物理卷创建卷组,命名为datavg:
sudo vgcreate datavg /dev/sdb # 查看卷组信息 sudo vgdisplay
第三步,从卷组中划分逻辑卷。假设先划分500GB用于数据存储,命名为datalv:
# -L 指定大小,-n 指定逻辑卷名称 sudo lvcreate -L 500G -n datalv datavg # 查看逻辑卷 sudo lvdisplay
创建完成后,逻辑卷的设备路径为/dev/datavg/datalv(也可以用/dev/mapper/datavg-datalv访问,两者等价)。此时它就是一块裸设备,接下来格式化并挂载:
# 格式化为ext4文件系统 sudo mkfs.ext4 /dev/datavg/datalv # 创建挂载点并挂载 sudo mkdir /data sudo mount /dev/datavg/datalv /data # 验证挂载结果 df -h /data
最后别忘了配置开机自动挂载。编辑/etc/fstab,加入一行。建议使用设备路径/dev/datavg/datalv,比直接写UUID更直观,LVM会在系统启动早期激活卷组,不会出现挂载失败的问题:
/dev/datavg/datalv /data ext4 defaults 0 2
写入后执行sudo mount -a验证,没有报错说明配置正确。
三、逻辑卷的在线扩容操作
LVM最实用的场景就是在线扩容。假设/data的空间用完了,而卷组里还有富余空间,扩容只需要三步,且不需要卸载文件系统。
先看一下卷组的剩余空间,重点看vgdisplay输出中的Free PE / Size字段。假设还有1.5TB空闲,我们决定再给datalv扩充200GB:
# 扩展逻辑卷本身 sudo lvextend -L +200G /dev/datavg/datalv # 扩展文件系统以识别新空间(ext4支持在线扩展) sudo resize2fs /dev/datavg/datalv
注意这两步缺一不可。lvextend只是把逻辑卷的块设备边界扩大了,文件系统并不知道这件事,必须再用resize2fs扩展文件系统,否则df -h看到的容量不会变。也可以用一条命令搞定,加上-r参数让LVM自动调用文件系统扩展工具:
sudo lvextend -r -L +200G /dev/datavg/datalv
如果卷组本身也没空间了呢?这时就要先扩展卷组。比如又加了一块新磁盘/dev/sdc:
# 新盘创建物理卷 sudo pvcreate /dev/sdc # 把物理卷加入已有卷组 sudo vgextend datavg /dev/sdc
之后卷组的总容量就变大了,再回到前面的lvextend步骤给逻辑卷扩容即可。整个链路:加磁盘、扩卷组、扩逻辑卷、扩文件系统,全程在线完成,业务无感知,这正是LVM相比传统分区的核心优势。
四、日常使用注意事项
虽然LVM很好用,但也有几个坑需要留意。首先,缩容操作风险远大于扩容。ext4支持缩小,但必须先卸载文件系统、再执行resize2fs缩小文件系统、最后lvreduce缩小逻辑卷,顺序绝对不能反。如果先缩小了逻辑卷,文件系统的尾部数据会被截断,造成不可逆的数据损坏。XFS文件系统则完全不支持缩小,规划时要留够余量。
其次,快照功能很实用但别滥用。lvcreate加-s参数可以为逻辑卷创建快照,常用于备份前的临时冻结,但快照会占用卷组空间,且源卷写入越多快照膨胀越快,一旦快照空间写满,快照会失效。用完记得及时删除。
最后,建议定期用pvs、vgs、lvs这三条简短命令巡检整个LVM状态,它们分别列出物理卷、卷组、逻辑卷的概况,信息比pvdisplay系列更紧凑。多块磁盘组成的卷组如果某块盘故障,数据是否受影响取决于是否配置了镜像或RAID,普通条带化卷组挂一块盘就意味着数据丢失,重要数据请务必配合RAID或备份策略使用。
LVM逻辑卷管理Ubuntu磁盘管理LVM扩容修改时间:2026-09-06 15:52:39