不删除数据调整分区:如何将Ubuntu服务器的LVM逻辑卷扩容至SSD全部可用空间
我在家中运行一台小型Ubuntu服务器,使用一块500GB SSD。今天发现磁盘空间几乎已满,不符合预期,于是用命令lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL查看磁盘状态,得到如下结果:
NAME FSTYPE SIZE MOUNTPOINT LABEL nvme0n1 465,8G ├─nvme0n1p1 vfat 1G /boot/efi ├─nvme0n1p2 ext4 2G /boot └─nvme0n1p3 LVM2_member 462,7G └─ubuntu--vg-ubuntu--lv ext4 100G /
可以看到分区nvme0n1p3的实际容量为462.7GB,但Ubuntu仅使用了其中的100GB空间。请问是否有办法在不删除数据的前提下,调整磁盘配置使Ubuntu能够使用全部463GB空间?
当然可以!你的服务器用了LVM(逻辑卷管理),这正好方便我们在线扩容,全程不需要删除数据,甚至不用重启系统(除非极端特殊情况,一般都能直接操作)。跟着下面的步骤一步步来:
步骤1:确认卷组的空闲空间
首先用vgdisplay命令查看你的卷组(这里是ubuntu-vg)的可用空闲空间:
sudo vgdisplay ubuntu-vg
在输出里找到Free PE / Size这一行,你应该能看到接近362.7G的空闲空间,和你之前观察到的容量差值一致。
步骤2:扩容逻辑卷
接下来把卷组里的所有空闲空间全部分配给现有的逻辑卷ubuntu--vg-ubuntu--lv,用lvextend命令:
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
这里-l +100%FREE表示把卷组里所有空闲的物理扩展(PE)都分配给这个逻辑卷。如果你不想一次性用满所有空间,比如只想加200G,可以换成-L +200G参数。
步骤3:扩容文件系统
逻辑卷扩容后,还需要让ext4文件系统识别到新增的空间,执行resize2fs命令:
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
这个命令会自动把文件系统扩展到逻辑卷的最大容量,全程不需要卸载分区。
验证结果
最后用df -h /或者lsblk查看根分区的容量,应该已经变成460G左右(减去boot和efi分区占用的空间):
df -h /
小提醒
- 操作前最好备份重要数据(虽然LVM扩容的安全性很高,但谨慎点总没坏处)
- 确保你的Ubuntu版本是18.04及以上,这些命令默认都已预装
- 如果你的文件系统是XFS(不过你的是ext4,所以不用管这条),扩容命令是
xfs_growfs /
这样就能在不删除任何数据的情况下,让Ubuntu用上SSD的全部空间啦!
内容的提问来源于stack exchange,提问作者Junkpilepunk




