记飞牛系统分区扩容

记飞牛系统分区扩容

扩容原因

  更新失败


前提条件

  开始前必须满足以下前提:

  1. 系统盘上的其他存储空间数据已经安全备份
  2. 系统盘上的其他存储空间数据已经确认删除
  3. 已确认本次操作对象是正确的系统盘,例如 /dev/vda
  4. 已具备 root 权限,或可通过 sudo 提权

说明:分区扩容属于高风险操作。虽然本教程只做“扩分区 + 扩文件系统”,不做缩容,但仍建议先完成备份后再执行。


先确认系统盘对应的 /dev

  执行扩容前,先确认根分区 / 挂在哪个设备上,再反推系统盘。

  通用命令:

findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME,TRAN,MODEL,SERIAL,HOTPLUG
df -h /

案例 1:192.168.8.36

  这台机器的系统盘在 虚拟机 virtio 磁盘 上,所以设备名是 vda

ssh test@192.168.8.36
findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME,TRAN,MODEL,SERIAL,HOTPLUG
df -h /

  关键结论:

  • 根分区:/dev/vda2
  • 系统盘:/dev/vda
  • vda 表示这是一块 虚拟机里的 virtio 磁盘

案例 2:192.168.8.13

  这台机器的系统盘在 NVMe 上。

ssh test@192.168.8.13
findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME,TRAN,MODEL,SERIAL,HOTPLUG
df -h /

  关键结论:

  • 根分区:/dev/nvme1n1p3
  • 系统盘:/dev/nvme1n1
  • TRAN=nvme

说明

  不要默认系统盘一定是:

  • /dev/vda
  • /dev/sda
  • /dev/nvme0n1

  实际环境里系统盘可能是:

  • 虚拟机 virtio 磁盘:vda
  • NVMe:nvmeXnY
  • SATA/SAS:sdX
  • USB bridge 后的盘:通常也是 sdX

操作前确认

  先查看当前磁盘、分区和挂载情况:

findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME,TRAN,MODEL,SERIAL,HOTPLUG
df -h /

操作步骤

1)备份当前分区表

  以下命令以 192.168.8.36 为例,也就是:

  • 系统盘:/dev/vda
  • 系统分区:/dev/vda2

  如果你的机器实际识别出来是别的设备名,请把命令里的设备名替换掉。

sfdisk -d /dev/vda > /root/vda-partition-backup-$(date +%Y%m%d-%H%M%S).sfdisk

  执行完成后会在 /root/ 下生成一份分区表备份文件。


2)确认目标结束扇区

  如果当前系统分区 /dev/vda2 约为 10G,要增加 10G,可以直接把结束扇区扩到新的位置。

  本次实际案例中:

  • 原结束扇区:20971519
  • 新结束扇区:41943039

  也就是把第 2 个分区额外扩大约 10G


3)扩展第 2 个分区

parted ---pretend-input-tty /dev/vda <<'EOF'
unit s
resizepart 2 41943039s
Yes
print
quit
EOF

  说明:

  • resizepart 2 41943039s:把第 2 个分区扩到新的结束扇区
  • Yes:确认“分区正在使用”时继续执行

4)通知内核重新读取分区表

partprobe /dev/vda || true
sleep 2

5)在线扩展 ext4 文件系统

resize2fs /dev/vda2

  如果根分区已经挂载,resize2fs 会执行在线扩容。


扩容后验证

  执行以下命令确认结果:

fdisk -l /dev/vda | sed -n '1,20p'
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT /dev/vda
df -h /

  本次实际结果:

  • /dev/vda29.9G -> 19.9G
  • /9.7G -> 20G
  • 可用空间从约 1.3G 提升到约 11G

风险提示

  1. 本教程只适用于:

    • 分区表结构清晰
    • 根分区为 ext4
    • 不使用 LVM
  2. 如果系统使用的是:

    • LVM
    • btrfs
    • mdadm
    • 多磁盘 RAID

    则不能直接照搬本教程。

  3. 如果目标磁盘不是 /dev/vda,命令中的设备名必须同步替换。

  4. 如果系统盘中还残留未备份的重要数据,不要继续执行。


建议的执行顺序

  建议按以下顺序执行:

  1. 备份系统盘其他存储空间数据
  2. 删除系统盘其他存储空间中的无用数据
  3. 核对目标磁盘与分区
  4. 备份分区表
  5. 扩分区
  6. 扩文件系统
  7. 做扩容后验证

本次实际使用的完整命令

findmnt /
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME,TRAN,MODEL,SERIAL,HOTPLUG
df -h /

sfdisk -d /dev/vda > /root/vda-partition-backup-$(date +%Y%m%d-%H%M%S).sfdisk

parted ---pretend-input-tty /dev/vda <<'EOF'
unit s
resizepart 2 41943039s
Yes
print
quit
EOF

partprobe /dev/vda || true
sleep 2

resize2fs /dev/vda2

fdisk -l /dev/vda | sed -n '1,20p'
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT /dev/vda
df -h /
posted @ 2026-05-06 12:16  东华喵喵喵  阅读(187)  评论(0)    收藏  举报