在 Linux 系统下通过 LVM (Logical Volume Manager, 逻辑卷管理器) 扩展磁盘空间, 适用于常见的云服务器和虚拟机环境。
LVM 是一种灵活的磁盘管理机制, 允许用户动态调整分区大小、合并或拆分存储空间, 极大提升了磁盘管理的灵活性。
查看当前磁盘与分区信息
说明:
- Vultr 等 VPS 常用 virtio 驱动, 磁盘设备为
/dev/vda
- 如果是 IDE 驱动, 则为
/dev/sda
DD 完的 Rocky 9 磁盘使用空间。硬盘总空间为 50 GiB, 但系统初始仅能用 3.0G
[root@server ~]# fdisk -l
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xac55217a
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 1050623 1048576 512M 83 Linux
/dev/vda2 1050624 7340031 6289408 3G 8e Linux LVM
[root@server ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 982M 0 982M 0% /dev/shm
tmpfs 393M 5.4M 388M 2% /run
/dev/mapper/rl_server-root 3.0G 1.7G 1.3G 57% /
/dev/vda1 448M 231M 218M 52% /boot
tmpfs 197M 0 197M 0% /run/user/0
扩展 LVM 磁盘
操作步骤:
- 使用 fdisk 创建新分区 (
vda3
), 重启系统使分区表生效 - 将新分区初始化为物理卷 (
pvcreate
) - 将其加入现有卷组 (
vgextend
), 实现卷组空间扩展。 - 扩展逻辑卷 (
lvextend
) - 扩容文件系统 (
resize2fs
或xfs_growfs
)
使用 fdisk 创建新分区
使用 fdisk
在已有磁盘上创建一个新的主分区 vda3
, 并占用磁盘所有剩余空间, 为后续 LVM 扩容做准备。
完成分区操作后, 建议重启系统以使新分区表生效。重启后再继续进行 LVM 的后续操作。
查看逻辑卷与卷组信息
查看系统中的逻辑卷 (LV) 和卷组 (VG) 信息, 便于确认扩容目标。
lvdisplay
记下根目录的逻辑卷名。这里是 root
[root@server ~]# lvdisplay
--- Logical volume ---
LV Path /dev/rl_server/root
LV Name root
VG Name rl_server
LV UUID oi22tV-mRCx-3HAD-GLQI-HzjU-wH8Z-86Gnl3
LV Write Access read/write
LV Creation host, time server, 2025-09-24 00:01:11 +0800
LV Status available
# open 1
LV Size <3.00 GiB
Current LE 767
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
查看卷组 (VG) 信息
vgdisplay
记下 root
所使用的卷组名, 这里使用的是 rl_server
[root@server ~]# vgdisplay
--- Volume group ---
VG Name rl_server
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <3.00 GiB
PE Size 4.00 MiB
Total PE 767
Alloc PE / Size 767 / <3.00 GiB
Free PE / Size 0 / 0
VG UUID IqoFnK-lWT3-jLmP-4a0j-iRbS-6sRj-eRRAsr
创建物理卷
将 vda3
分区初始化为 LVM 可用的物理卷。
[root@server ~]# pvcreate /dev/vda3
Physical volume "/dev/vda3" successfully created.
扩展卷组
将新建的物理卷 vda3
加入到目标卷组 rl_server
中, 扩展卷组容量。
[root@server ~]# vgextend rl_server /dev/vda3
Volume group "rl_server" successfully extended
查看卷组剩余空间
确认卷组扩容后剩余的可用空间。
[root@server ~]# vgdisplay
--- Volume group ---
VG Name rl_server
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 49.49 GiB
PE Size 4.00 MiB
Total PE 12670
Alloc PE / Size 767 / <3.00 GiB
Free PE / Size 11903 / <46.50 GiB
VG UUID IqoFnK-lWT3-jLmP-4a0j-iRbS-6sRj-eRRAsr
可以看到现在 rl_server
多出了 46.50 GiB 的可使用空间
此时卷组已拥有全部新空间, 可以选择全部分配给根分区, 也可以预留部分空间用于新建 swap 分区等。
扩展逻辑卷与文件系统
扩展逻辑卷 (LV) 并扩容文件系统, 使新增空间可被操作系统使用。
扩展逻辑卷
将卷组中的空闲空间分配给目标逻辑卷。
# lvextend -L 扩展后逻辑卷该有的大小 /dev/卷组名/逻辑卷名 [-r]
[root@server ~]# lvextend -l +100%FREE /dev/rl_server/root
Size of logical volume rl_server/root changed from <3.00 GiB (767 extents) to 49.49 GiB (12670 extents).
Logical volume rl_server/root successfully resized.
扩展文件系统
扩展文件系统以识别并使用逻辑卷新增的空间。
提示: 部分发行版支持在 lvextend
时直接加 -r
参数自动扩容文件系统。
ext4 文件系统
resize2fs -p /dev/rl_server/root
xfs 文件系统
xfs 文件系统, 扩容命令如下:
xfs_growfs /dev/rl_server/root
本镜像使用 xfs 文件系统, 扩容命令如下
[root@server ~]# xfs_growfs /dev/rl_server/root
meta-data=/dev/mapper/rl_server-root isize=512 agcount=4, agsize=196352 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=785408, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 785408 to 12974080
至此, 系统分区已成功扩容
验证扩容结果
你可以通过 df -h 命令确认根分区已成功扩容。
[root@server ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 982M 0 982M 0% /dev/shm
tmpfs 393M 5.4M 388M 2% /run
/dev/mapper/rl_server-root 50G 2.0G 48G 5% /
/dev/vda1 448M 231M 218M 52% /boot
tmpfs 197M 0 197M 0% /run/user/0
一键自动扩容脚本
如需自动化操作, 可直接使用如下脚本一键扩展, 无需手动执行上述所有步骤。
# 扩展系统磁盘
bash <(curl -sL shell.puka.cc/lvm-disk-extend)
原文