Alibaba Cloud Linux 2系统的ECS实例系统盘扩容失败,如何处理?

问题描述

符合如下条件的Alibaba Cloud Linux 2实例在系统盘配置不是默认值20 GB时,扩容磁盘失败,系统显示系统盘大小仍然为默认值20 GB。

  • 镜像:aliyun_2_1903_x64_20G_alibase_20200114.qboot.vhd镜像(以下简称qboot镜像)。

  • 内核:4.19.81-17.al7.x86_64内核版本。

例如系统盘配置为300 GB,扩容vda1分区至非20 GB后,还是显示20 GB,如下图所示:

查看对应的/var/log/cloud-init.log日志,发现磁盘resize失败。

问题原因

该问题的原因是由于qboot镜像启动优化去除了initramfs过程,导致实例启动后出现以下情况:

  1. /proc/mounts/根目录的挂载设备为/dev/root

  2. 系统没有正确创建软链接/dev/root

因此在实例启动过程中,cloud-init应用无法正确识别系统根分区信息,导致扩容失败。

解决方案

方案一:扩容系统盘的分区和文件系统

参考以下步骤,扩容系统盘的分区和文件系统。

  1. 执行以下命令,对系统盘第一个分区进行扩容。

    growpart /dev/vda 1
  2. 执行以下命令,扩容系统盘的/dev/vda1分区文件系统。

    resize2fs /dev/vda1
    说明

    以上命令是扩容EXT4格式的文件系统。如果您使用的是XFS文件系统,需执行 xfs_growfs /dev/vda1命令扩容文件系统。更多信息,请参见扩容分区和文件系统(Linux)

方案二:更换系统盘

该问题在aliyun_2_1903_x64_20G_qboot_alibase_20200904.vhd版本的qboot镜像中已修复,您使用新镜像即可。具体操作,请参见更换操作系统(系统盘)