Linux磁盘空间不足?一文掌握LVM在线扩容
创始人
2026-07-16 13:26:40
0

作为一名Linux运维人员,你一定遇到过这种场景:

① 数据库突然报警磁盘空间不足,业务随时可能中断;

② 日志文件把/var分区撑爆,想扩容却发现当初分区时没留余地;

③ 虚拟机磁盘不够用了,但业务不能停机,加磁盘之后又不知道怎么无缝对接上去……

这些都是传统分区方案的典型痛点——分区大小固定、扩容需要卸载、甚至需要重启系统。而在生产环境中,停机意味着损失。

好在Linux提供了一个“后悔药”——LVM(Logical Volume Manager,逻辑卷管理器)。借助LVM,你可以在不停机、不卸载的前提下,像搭积木一样灵活地扩展磁盘空间。新加一块硬盘?几行命令就能把它的容量“喂”给任意一个分区。

本文就带你从零理解LVM的核心原理,通过实操,展示一次完整的线上扩容。你会发现,LVM并没有想象中那么复杂——核心就三步。

无论你是刚入门的Linux新手,还是需要快速查阅操作步骤的老手,希望这篇文章都能成为你的案头参考。

什么是LVM?

传统分区的困境

在传统磁盘管理中,我们直接在物理磁盘上划分分区(如 /dev/sda1, /dev/sda2),每个分区的大小一经创建就固化下来。想要扩容,通常意味着:备份数据→卸载分区→删除重建→恢复数据。这不仅繁琐,更“要命”的是:业务必须中断。

LVM是如何解决这个问题的

LVM的精妙之处在于:它在物理磁盘和文件系统之间,增加了一个逻辑抽象层。这个抽象层将底层的物理存储资源“池化”,让你可以像管理一个巨大的存储池一样灵活分配空间。

LVM架构:PV→VG→LV三层模型

  • PV(Physical Volume,物理卷):最底层,就是实实在在的物理磁盘或磁盘分区(如/dev/sdb1)。它是LVM管理的“原材料”。
  • PE(Physical Extent,物理扩展块):PV被切分成固定大小的最小存储单元(默认 4MB)。你可以把PE理解为LVM世界的“原子”——所有空间分配都以PE为单位。
  • VG(Volume Group,卷组):由一个或多个PV组成的存储池。VG把所有PV的PE汇集在一起,形成一个巨大的、统一的可用空间池。
  • LV(Logical Volume,逻辑卷):从VG中按需取出若干PE组成,最终被格式化为文件系统并挂载使用。对上层应用来说,LV就是一个普通的分区,但它的大小可以动态调整。

LVM就是把多块物理盘“揉”成一个池子(VG),再从池子里按需“舀”出空间做成逻辑盘(LV)。扩容时,往池子里加物理盘,再把空间分配给需要的LV即可。M的核心优势

扩容前必须确认的事项

在扩容之前,做好充分的准备工作,能避免90%的翻车事故。以下五项,请逐条确认:

1确认当前分区是否为LVM逻辑卷

这是最关键的确认项。LVM只能管理LVM逻辑卷,传统分区无法直接使用LVM扩容。

#查看逻辑卷信息

lvdisplay

#或者用df查看挂载来源,如果路径包含/dev/mapper/或/dev/vg名/lv名,就是LVM

df -h

如果输出中看不到LVM相关的卷组和逻辑卷信息,说明当前系统未使用LVM,需要先迁移或重建。

2确认文件系统类型

不同文件系统在线扩容的命令不同,搞错了可能导致数据损坏:

# 查看文件系统类型

df -T

特别注意:XFS文件系统只能扩容不能缩容!如果你将来可能需要缩小分区,请选择ext4。CentOS 7+默认使用xfs,操作前务必确认。

3备份重要数据

虽然LVM扩容本身风险不高,但涉及到磁盘操作,任何情况下都建议先做好备份。如果条件允许,在测试环境先完整演练一遍。

4确认磁盘容量与分区工具

关键限制:fdisk仅支持2TB以下的硬盘分区。如果新增磁盘容量超过2TB,必须使用parted工具进行GPT分区。这个坑踩过的人不在少数!

# 查看新磁盘容量

fdisk -l | grep "Disk /dev"

# 如果超过 2TB,使用 parted

parted /dev/sdb mklabel gpt

parted /dev/sdb mkpart primary 0% 100%

5确认磁盘设备名与空间

新加入主机的磁盘,务必确认设备名(/dev/sdb、/dev/sdc等),避免误操作到系统盘。

# 列出所有磁盘及其大小

lsblk

# 或者更详细信息

fdisk -l

安全提示:操作前反复确认设备名!把系统盘当成数据盘格式化是运维界的"经典惨案"。一个简单的判断标准:系统盘通常有多个分区(boot、root 等),而新盘通常只有一个未分配的空间。

LVM三步扩容

理解了原理,确认了前置条件,现在我们来看看LVM扩容的核心流程。整个扩容过程可以浓缩为三步:

01.第一步:创建PV(物理卷)

将新磁盘分区初始化为LVM可识别的物理卷。 命令:pvcreate /dev/sdb1

02.第二步:扩容 VG(卷组)

将新PV加入到现有的卷组中,扩展存储池。命令:vgextend centos /dev/sdb1

03.第三步:扩容 LV + 文件系统

从VG中分配空间给目标逻辑卷,并同步扩容文件系统。命令:lvextend -L +10G /dev/centos/root + xfs_growfs /

记忆口诀:"创物理、扩卷组、拉逻辑"——PV创、VG扩、LV拉。记住这九个字,就记住了LVM扩容的全部流程。

实战演示

下面我们以CentOS 7、XFS文件系统、新增一块2TB以下磁盘为例,完整演示一次扩容操作。每一步都附带真实的命令行截图,跟着做就行。01

创建物理卷(PV)

① 查看当前磁盘分区状况

先使用fdisk -l查看所有磁盘。确认新加入的磁盘设备名(本例中为/dev/sdb):

执行fdisk -l,确认新磁盘/dev/sdb

② 对新磁盘进行分区

使用fdisk /dev/sdb进入交互式分区界面,按照提示创建新分区:

fdisk/dev/sdb分区操作:n→p→回车(默认)→回车(默认)→w保存

  • 输入n —— 创建新分区
  • 输入p —— 选择主分区
  • 连续回车使用默认值(起始扇区和结束扇区)
  • 输入w —— 写入分区表并退出

③ 再次确认分区结果

分区后确认/dev/sdb1已出现

④ 查看系统当前文件系统类型

使用df -T确认当前系统使用的是哪种文件系统:

确认系统使用xfs文件系统

从截图可以看到,当前系统使用的是XFS文件系统。这一步非常重要,因为它决定了后续格式化命令和文件系统扩容命令的选择。

⑤ 格式化新分区

# CentOS 7及以上(xfs)

mkfs -t xfs /dev/sdb1

# CentOS 6(ext4)

mkfs -t ext4 /dev/sdb1

mkfs -t xfs /dev/sdb1格式化完成

⑥ 创建物理卷

格式化完成后,使用pvcreate将其初始化为LVM物理卷:

pvcreate /dev/sdb1

pvcreate成功创建物理卷02

扩容卷组(VG)

① 查看当前卷组信息

首先需要知道目标逻辑卷所属的卷组名称:

#查看逻辑卷及所属卷组

lvdisplay

#或者更简洁

lvs

lvdisplay查看卷组名称(VG Name: centos)

从输出中可以看到,卷组名称为centos,这是CentOS 7默认安装时的卷组名。

② 将新PV加入卷组

vgextend centos /dev/sdb1

vgextend将/dev/sdb1加入卷组centos

03

扩容逻辑卷(LV)与文件系统

① 确认需要扩容的目标目录和LV路径

#查看各挂载点的空间使用情况

df -h

df -h确认目标挂载点对应的LV Path

② 扩容逻辑卷

有两种扩容方式,根据需求选择:

# 方式一:按固定大小扩容(例如增加10G)

lvextend -L +10G /dev/centos/root

# 方式二:按百分比扩容(将卷组中所有剩余空间全部分配)

lvextend -l +100%FREE /dev/centos/root

lvextend成功扩展逻辑卷

③ 同步扩容文件系统

LV扩容后,文件系统并不会自动识别新增的空间,需要手动同步:

#XFS文件系统(CentOS 7+)

xfs_growfs /

#ext4 文件系统(CentOS 6)

resize2fs /dev/centos/root

踩坑提醒:很多人执行完lvextend就以为扩容完成了,结果df -h一看空间还是没变!漏掉文件系统扩容这一步是最常见的错误。

④ 最终验证

lvdisplay确认LV Size已扩容成功

如果df -h显示的空间已经增加,那么恭喜你!说明扩容全部完成。整个过程无需重启、无需卸载、业务无感知。

避坑与急救指南

以下是实际运维中常见的问题和对应的解决方案,建议收藏备用。

01忘记扩容文件系统

问题:lvextend和lvdisplay都显示扩容成功了,但df -h还是原来的大小。

原因:LV和文件系统是两层结构,扩展了LV不等于扩展了文件系统。

解决方案:

# XFS

xfs_growfs /挂载点

# ext4

resize2fs /dev/centos/root

02fdisk无法处理2TB以上的磁盘

问题:用fdisk对大磁盘分区时报错或只能使用2TB。

原因:fdisk使用MBR分区表,最大只支持2TB。

解决方案:

换用parted做GPT分区:

parted /dev/sdb

(parted) mklabel gpt

(parted) mkpart primary 0% 100%

(parted) print

(parted) quit

03误操作系统盘

问题:把系统盘(如 /dev/sda)当数据盘格式化,系统直接崩溃。

预防:操作前用lsblk确认磁盘用途,系统盘通常有/boot分区。操作时反复核对设备名。

04xfs文件系统无法缩容

问题:想缩小xfs格式的分区,发现没有对应的命令。

原因:XFS设计上不支持缩容。

解决方案:

如果业务需要灵活调整大小,建议使用ext4;如果已经用了xfs,只能备份数据→重建→恢复。

05VG中没有剩余空间

问题:lvextend提示 "Insufficient free space"。

检查:vgdisplay | grep -i free

解决方案:

确认新PV是否已成功加入VG(vgextend是否报错);如果没有新磁盘可加,考虑清理不必要的文件释放空间。

急救工具箱

pvs # 查看所有物理卷

vgs # 查看所有卷组及剩余空间

lvs # 查看所有逻辑卷

pvdisplay # 物理卷详细信息

vgdisplay # 卷组详细信息

lvdisplay # 逻辑卷详细信息

lsblk # 树状查看磁盘和分区关系

df -hT # 查看挂载及文件系统类型

结束语

回顾全文,LVM扩容的核心逻辑其实非常简单:

新磁盘→分区→格式化→创建PV→加入VG→扩展LV→扩容文件系统

记住口诀:创物理、扩卷组、拉逻辑

LVM是Linux运维中一项非常实用的基础技能。掌握它之后,磁盘分区不再是“一次规划、长期受限”。遇到空间不足时,可以通过增加磁盘并扩展逻辑卷快速解决,整个过程通常不会影响业务运行。

除了灵活扩容,LVM还支持快照、条带化、镜像等功能。后续文章将结合实际场景,为大家介绍进阶用法。

相关内容

热门资讯

1 座二级博物馆,5 大主题展... 见过把整栋楼建成青铜鼓模样的博物馆吗?云南保山城区中心,一座圆滚滚的巨型铜鼓建筑静静立在广场中央,很...
暑期正热,洛阳乡村文化游不可错... 大象新闻·河南交通广播记者:雷静2026洛阳乡村文化旅游季,如果你渴望一场能让双手触碰历史、让脚步慢...
Linux磁盘空间不足?一文掌... 作为一名Linux运维人员,你一定遇到过这种场景: ① 数据库突然报警磁盘空间不足,业务随时可能...
Guthrie AI获Chic... 2026年7月14日,美国智能建筑科技服务提供商Guthrie AI今日宣布完成种子轮融资,本轮融资...
云南弥勒硬核防汛!“AI+低空... 云南省弥勒市借助“AI+低空”织密防汛监测网,56台无人机,24小时值守、自动作业,实现防汛关键区域...
警惕AI造谣伤企 某车企新系列产品尚未发布,“起火事故”“车主维权”等虚假标签便已形成舆情;一段AI伪造的“内部饭局”...
AI不能当作者!知网下架Dee... 7月15日,中国知网(CNKI)发布《关于人工智能(AI)署名为作者的论文处理声明》,明确表示,不接...
百利天恒涨9.69%,开源证券... 今日百利天恒(688506)涨9.69%,收盘报333.58元。 2026年4月29日,开源证券研究...
小米开源380亿参数模型Xia... 7月15日,小米正式发布Xiaomi-Robotics-U0——一个拥有380亿参数的多模态自回归具...