Debian服务器根目录LVM扩容记录

Debian服务器根目录LVM扩容记录

mohuangNPC
2026-01-08 / 0 评论 / 1 阅读 / 正在检测是否收录...

最近用PVE和VM创建的虚拟机根目录总是不够用,但是我又不想一次性分多,现在导致根目录容量告急,这里记录一下稳妥的根目录扩容方案,应该也适用于别的目录

先判断你的 服务器/虚拟机 用的是什么结构

本教程暂时先记录LVM的流程

LVM

lsblk

sda
├─sda1   boot
├─sda2   LVM PV
  ├─pve-root
  ├─pve-swap
  └─pve-data

你会看到类似LVM的字眼,即是LVM

给虚拟机扩容

首先我们使用首先使用PVE/VM给虚拟机增加磁盘容量

增加容量前

sda                     8:0    0   40G  0 disk 
├─sda1                  8:1    0  976M  0 part /boot
├─sda2                  8:2    0    1K  0 part 
└─sda5                  8:5    0   39G  0 part 
  ├─node01--vg-root   254:0    0  8.5G  0 lvm  /
  ├─node01--vg-swap_1 254:1    0    2G  0 lvm  [SWAP]
  └─node01--vg-home   254:2    0 28.4G  0 lvm  /home
sr0                    11:0    1  754M  0 rom

我们可以看到sda只有40G

增加容量后

sda                     8:0    0   80G  0 disk 
├─sda1                  8:1    0  976M  0 part /boot
├─sda2                  8:2    0    1K  0 part 
└─sda5                  8:5    0   39G  0 part 
  ├─node01--vg-root   254:0    0  8.5G  0 lvm  /
  ├─node01--vg-swap_1 254:1    0    2G  0 lvm  [SWAP]
  └─node01--vg-home   254:2    0 28.4G  0 lvm  /home
sr0                    11:0    1  754M  0 rom

现在sda已经80G了,但是这80G还不能使用,我们需要分给根目录

分配空间给根目录

进入 parted

parted /dev/sda

partend未安装

apt install parted

运行命令

我们在parted中依次输入

print

Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  1024MB  1023MB  primary   ext4         boot
 2      1026MB  42.9GB  41.9GB  extended               lba
 5      1026MB  42.9GB  41.9GB  logical 
 
resizepart 5 100%
quit

注意

当我们输入 resizepart 5 100% 的时候,可能会提示如下

Error: Can't have overlapping partitions.

为什么会提示

是 MBR + 扩展分区(extended)结构的限制,咱们现在的结构是这样的

sda1  primary   /boot
sda2  extended  ← 外壳
└─sda5 logical  ← LVM 用的
  • sda5 是“逻辑分区”
  • 它 必须完全位于 sda2(扩展分区)内部
  • 你现在只尝试扩 sda5
  • 但 sda2 本身没有扩到 100%
咱们不能让 sda5 超出 sda2 的范围(否则就“重叠”了)

正确顺序

先扩 sda2(extended)
→ 再扩 sda5(logical)
→ 再 pvresize
→ 再 lvextend

所以如果提示这个错误,先退出parted, 然后重新 parted /dev/sda 进入,然后先执行

resizepart 2 100%

如果提示分区正在使用:

Is this partition in use?

输入Yes即可

然后我们继续依次输入:

resizepart 5 100%
quit

查看空间

sda                     8:0    0   80G  0 disk 
├─sda1                  8:1    0  976M  0 part /boot
├─sda2                  8:2    0    1K  0 part 
└─sda5                  8:5    0   79G  0 part 
  ├─node01--vg-root   254:0    0  8.5G  0 lvm  /
  ├─node01--vg-swap_1 254:1    0    2G  0 lvm  [SWAP]
  └─node01--vg-home   254:2    0 28.4G  0 lvm  /home
sr0                    11:0    1  754M  0 rom  

现在我们sda5已经79G了,下一步继续把空间分给具体的跟目录(/)

分配容量到跟目录

让 LVM 认识新空间

pvresize /dev/sda5

确认 VG 里有空闲空间(强烈建议看一眼)

vgdisplay node01-vg

应该能看到类似:

Free  PE / Size   40.00 GiB

把空闲空间给根目录 /

全部给根目录

lvextend -l +100%FREE /dev/node01-vg/root

只给一部分

lvextend -L +30G /dev/node01-vg/root

扩展文件系统(ext4 必须做)

resize2fs /dev/node01-vg/root
如果是 xfs(你大概率不是),那是 xfs_growfs /

最后验证

df -h /

已经增加上了

Filesystem                   Size  Used Avail Use% Mounted on
udev                         7.8G     0  7.8G   0% /dev
tmpfs                        1.6G  1.2M  1.6G   1% /run
/dev/mapper/node01--vg-root   48G  6.8G   39G  15% /
tmpfs                        7.8G     0  7.8G   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs                        7.8G     0  7.8G   0% /tmp
/dev/sda1                    943M  111M  768M  13% /boot
/dev/mapper/node01--vg-home   28G   21G  5.9G  78% /home
overlay                       48G  6.8G   39G  15% /var/lib/docker/rootfs/overlayfs/368311adf1778f75225d00392c20a82e0c8785b6bde1badc75844b8f6a556d38
tmpfs                        1.0M     0  1.0M   0% /run/credentials/getty@tty1.service
tmpfs                        1.6G   12K  1.6G   1% /run/user/0
root@node01:~# 
0

评论 (0)

取消

Warning: file_put_contents(/var/www/html/rss.xml): failed to open stream: Permission denied in /var/www/html/usr/plugins/CustomRSS/Plugin.php on line 149