Linux扩容数据盘:分区与ext4文件系统

套餐或虚拟磁盘容量变大后,Linux分区和文件系统不一定随之自动变大。本篇只处理你已经确认的一块独立ext4数据分区,示例为 /dev/vdb 的第1分区 /dev/vdb1。实际设备名必须根据输出确定,不能照抄。开始前需要可恢复的独立备份及维护安排。

确认扩容条件与三层容量

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
findmnt -T /实际业务目录
df -hT /实际业务目录

先确认产品确实支持并已完成对同一块数据盘的容量调整,不是新买了一块无关盘。lsblk中磁盘层应已经显示新容量;若磁盘层没变,先核对交付或扩容结果。TYPE为lvm、FSTYPE为xfs,或者目标为系统根盘时,不使用下面步骤。记录原挂载点、分区大小、文件系统大小及关键数据校验结果。

仅预览分区是否可以增长

command -v growpart
sudo growpart -N /dev/vdb 1

缺少growpart时,Debian/Ubuntu通常由发行版的cloud-guest-utils包提供,安装前按APT流程核对。-N只预览,不写分区表;参数是整块磁盘加分区编号,不能写成 growpart /dev/vdb1。预览应保持分区起始位置不变,仅把末尾扩大到紧邻的可用空间。

NOCHANGE可能表示分区已占满可用范围、空闲空间不在相邻位置或增长量不足;不要因此删除并重建分区。磁盘上有后续分区挡住时,也不能靠一条growpart跨过去。备份不可恢复、布局不清楚或工具报错时,应停止并安排存储专项处理。

扩分区后,再扩ext4文件系统

sudo growpart /dev/vdb 1
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo resize2fs /dev/vdb1
df -hT /实际业务目录

只有前两步确认分区已增加,才执行resize2fs。resize2fs操作的是ext4文件系统,不负责扩分区;不带目标大小时通常扩到所在分区可用范围。若内核仍看到旧分区大小,先按当前系统安排重读或重启维护,不能连续强制操作。正在挂载的文件系统不应为“检查一下”直接执行离线修复命令。

验证容量、数据与应用

  1. 确认磁盘、分区、文件系统均符合预期,df显示的是正确业务挂载点,而非因为挂载失败回落到根目录。
  2. 读取关键文件,按原校验值或业务验证方法确认数据;在有权限的测试目录完成一次小文件读写。
  3. 检查应用、数据库及系统日志,没有新的IO或文件系统错误;容量因单位和文件系统开销不一定等于商品标称数。
  4. 记录扩容前后输出和操作时间。磁盘扩容不是缩容,失败时不能随意把分区调小作为“回退”。

只有文件系统直接建在整块盘上、使用LVM或采用XFS时,设备层次和工具都不同,不能删掉命令中的数字就套用。本篇提供限定路径,其他布局应先取得对应官方操作方案和有效恢复手段。