华为云 EVS 云硬盘扩容后空间没变大?分区与文件系统扩展步骤
背景
在华为云控制台给 EVS 云硬盘扩容后,很多人登录 ECS 一看,df -h 显示的容量还是原来那么大,于是以为扩容失败了。其实控制台扩容只是把块设备变大了,分区和文件系统并不会自动跟着变大,需要在系统里再做两步:扩分区、扩文件系统。
本文整理 Linux 下最常见的几种情况和对应命令,以及容易踩的坑。
先分清三层
| 层级 | 查看命令 | 扩容后是否自动变大 |
|---|---|---|
| 块设备(云硬盘本身) | lsblk |
是(控制台扩容后即生效,个别旧系统需重新扫描) |
| 分区 | lsblk / fdisk -l / parted -l |
否,需要 growpart 或 parted |
| 文件系统 | df -Th |
否,需要 resize2fs / xfs_growfs |
判断方法:lsblk 里磁盘(如 vdb)已经是新容量,但分区(如 vdb1)还是旧容量,说明卡在第二层;分区也变大了但 df -Th 没变,说明卡在第三层。
扩容前的准备
- 先打快照或备份。扩分区是改分区表的操作,操作失误可能导致数据不可读,有快照心里不慌。
- 确认分区表类型:
parted /dev/vdb print看 Partition Table 是 msdos(MBR)还是 gpt。MBR 分区最大只支持 2 TiB,扩到 2 TiB 以上要用 GPT。 - 确认文件系统类型:
df -Th,常见是 ext4 或 xfs,两者扩展命令不同。 - 确认是不是 LVM:
lsblk里看到lvm类型的设备,就要走下面 LVM 的步骤。
情况一:普通分区 + ext4/xfs(最常见)
以数据盘 /dev/vdb,分区 /dev/vdb1 为例:
# 1. 确认磁盘已变大
lsblk
# 2. 安装 growpart(不同发行版包名不同)
# CentOS / EulerOS / openEuler: yum install -y cloud-utils-growpart
# Ubuntu / Debian: apt install -y cloud-guest-utils
# 3. 扩分区(注意磁盘和分区号之间有空格)
growpart /dev/vdb 1
# 4. 扩文件系统
# ext4:
resize2fs /dev/vdb1
# xfs(参数是挂载点):
xfs_growfs /mnt/data
# 5. 验证
df -Th
系统盘同理,通常是 growpart /dev/vda 1 加上 resize2fs /dev/vda1 或 xfs_growfs /。growpart 和 resize2fs、xfs_growfs 都支持在线执行,一般不需要卸载或重启。
情况二:LVM
LVM 多了物理卷(PV)和逻辑卷(LV)两层:
growpart /dev/vdb 1 # 分区在 PV 下面时先扩分区;整盘做 PV 则跳过
pvresize /dev/vdb1 # 让 PV 识别新容量
lvextend -l +100%FREE /dev/vg_data/lv_data
resize2fs /dev/vg_data/lv_data # ext4
# 或 xfs_growfs /挂载点 # xfs
也可以用 lvextend -r,它会顺手调用对应的文件系统扩展命令。
情况三:整盘直接做文件系统(没有分区)
有些数据盘是直接 mkfs.ext4 /dev/vdb,没有分区。这种情况跳过 growpart,直接 resize2fs /dev/vdb 或 xfs_growfs 挂载点 即可。
常见的坑
- 用 resize2fs 扩 xfs:会报错 Bad magic number。xfs 要用
xfs_growfs,而且参数是挂载点。 - growpart 写错格式:是
growpart /dev/vdb 1,不是growpart /dev/vdb1。 - growpart 提示 NOCHANGE:说明分区已经到磁盘末尾,或者系统还没感知到新容量。可以先看
lsblk里磁盘大小有没有变;个别旧内核可以尝试重新扫描设备,仍不行再考虑重启。 - MBR 超过 2 TiB:分区最多只能用到 2 TiB,多出来的部分用不上,需要规划成 GPT。
- xfs 不能缩容:xfs 只能扩不能缩,规划容量时要留意。
- 云硬盘只能扩不能缩:控制台扩容是单向的,按需逐步扩比一次扩很大更稳妥。
- 扩容后要不要改 fstab:只是扩容不用改;但如果挂载用的是 /dev/vdb1 这种设备名,建议顺便改成 UUID,避免多盘时设备名变化导致开机挂载失败。
自检清单
lsblk:磁盘容量是否已经是新值?- 分区表是 MBR 还是 GPT,目标容量是否超过 2 TiB?
- 有没有 LVM?
- 文件系统是 ext4 还是 xfs?
- 扩完后
df -Th是否显示新容量? - 快照确认无误后,按需清理。
小结
控制台扩容只是第一步,系统内还要「扩分区 + 扩文件系统」。先用 lsblk 和 df -Th 定位卡在哪一层,再按 ext4/xfs、普通分区/LVM 选对命令,基本就不会出问题。我习惯每次扩容前先打个快照,再按上面的清单一步步核对。弹性弹服弹器
- 点赞
- 收藏
- 关注作者
评论(0)