当实例无法启动时扩容云盘

Linux实例无法启动时,实例健康诊断工具诊断出实例云盘的inode使用率或者空间使用率过高。此时,您可以通过实例健康诊断工具进行问题修复。

前提条件

  • ECS实例已通过实例健康诊断工具诊断出云盘的inode使用率或空间使用率过高的问题。

  • ECS实例资源需要符合以下条件。

    资源

    限制条件

    实例

    • 实例为I/O优化实例。

    • 不支持以下实例规格:ecs.ebmc4.8xlarge、ecs.ebmhfg5.2xlarge、ecs.ebmg5.24xlarge。

    云盘

    • 云盘状态为使用中(In Use)。

    • 云盘类型为ESSD云盘、SSD云盘或高效云盘。

    • 包年包月ECS实例续费降配后,当前计费周期的剩余时间内,不支持扩容实例的包年包月云盘。

    • 云盘扩容后的容量不能超过云盘最高容量,具体请参见块存储使用限制

    重要

    一个已有分区采用了MBR分区格式,则不支持扩容到2 TiB及以上。如果您的MBR分区容量需要扩容到2 TiB以上,建议您先创建一块大于2 TiB的云盘并格式化为GPT分区,再将MBR分区中的数据拷贝到GPT分区中。格式化GPT分区操作,请参见分区格式化大于2 TiB数据盘

背景信息

问题描述:Linux实例中云盘的inode使用率或者空间使用率过高,导致实例无法启动。

问题原因:Linux实例的云盘容量不足,您需要对云盘进行扩容。

说明

您可以通过df -Th命令查看云盘的空间使用率,通过df -i命令查看云盘的inode使用率。

您可以通过实例健康诊断工具的修复盘进行扩容云盘,或者通过中转实例进行扩容云盘。具体操作,请参见通过修复盘扩容云盘通过中转实例扩容云盘

通过修复盘扩容云盘

您可以在实例健康诊断工具中通过修复盘扩容云盘。

  1. 在控制台为目标云盘创建快照。具体操作,请参见创建快照

  2. 在控制台扩容目标云盘。具体操作,请参见扩展云盘容量

  3. 远程连接问题实例。
    ECS实例处于正在挂载修复盘的模式下时,只能通过VNC远程连接。具体操作,请参见通过VNC连接实例
  4. 运行以下命令查看实例的云盘情况。

    fdisk -lu

    在查询结果中找到/dev/vd*(例如/dev/vda、/vdb和/vdc),这些块存储设备为故障实例的云盘。

    示例以系统盘(/dev/vda1)和数据盘(/dev/vdb1、/dev/vdc1)的三个分区为例,执行结果如下所示。查看云盘分区情况

    序号

    分区

    说明

    /dev/vda1

    系统盘,System取值Linux表示为MBR分区。

    /dev/vdb1

    数据盘,System取值Linux表示为MBR分区。

    /dev/vdc1

    数据盘,System取值GPT表示为GPT分区。

    说明

    如果您的查询结果中云盘容量还是40 GiB(Disk /dev/vda: 42.9 GB),表示扩容不成功,建议您在控制台重启下本实例。

  5. 运行以下命令确认已有分区的文件系统类型。

    df -Th

    image

  6. 运行以下命令扩容分区。

    growpart /dev/vda 1

    此示例以扩容系统盘为例,/dev/vda1之间需要空格分隔。如果需要扩容其他分区,请根据实际情况修改命令。执行结果如下所示。growpart

  7. ECS实例内部,根据查询的文件系统类型,扩容文件系统。

    • 扩容ext*(例如ext4)文件系统:运行以下命令扩容文件系统。

      扩容系统盘/dev/vda1的文件系统。

      resize2fs /dev/vda1    

      扩容数据盘/dev/vdb1的文件系统。

      resize2fs /dev/vdb1          
      说明

      /dev/vda1/dev/vdb1都是分区名称,您需要根据实际情况修改。

    • 扩容xfs文件系统:运行以下命令扩容数据盘/dev/vdc1的文件系统。

      xfs_growfs /media/vdc
      说明

      /media/vdc/dev/vdc1的挂载点,您需要根据实际情况修改。

    • 扩容btrfs文件系统:如果您的数据盘文件系统为btrfs,则需要运行以下命令扩容文件系统。

      btrfs filesystem resize max /mountpoint
      说明

      /mountpoint为数据盘对应的挂载点,您需要根据实际情况修改。

  8. 运行以下命令检查扩容后结果。

    df -Th

    执行结果如下所示。

    查看扩容结果

    扩容完成后,您需要根据实际情况检查数据是否正常。

    • 如果扩容成功,ECS实例中的业务程序能够正常运行,则完成操作。

    • 如果扩容失败,则通过备份的快照回滚数据。

  9. 修复完成后,退出修复环境,然后检查问题实例的当前状态。

    1. ECS控制台的实例健康诊断页面,卸载修复盘并恢复问题实例至正常模式。

    2. 远程连接已修复的ECS实例,检查云盘容量。

通过中转实例扩容云盘

您也可以将问题云盘卸载,然后挂载到中转实例(同地域的其他Linux实例),再进行扩容云盘操作。

  1. 从问题实例上卸载云盘。具体操作,请参见卸载系统盘卸载数据盘

  2. 将此云盘挂载到其他Linux实例。具体操作,请参见挂载数据盘

  3. Linux实例中扩容此云盘。具体操作,请参见扩展云盘容量

  4. 扩容完成后,在Linux实例上卸载此云盘。具体操作,请参见卸载数据盘

  5. 将此云盘挂载回原ECS实例。具体操作,请参见卸载或挂载系统盘挂载数据盘

  6. 远程连接已修复的ECS实例,检查云盘容量。