当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远程连接。具体操作,请参见通过密码认证登录Linux实例
  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

    执行结果如下所示。其中,Mounted on列为文件系统对应的挂载点。

    查看文件系统
  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实例中扩容此云盘。具体操作,请参见在线扩容云盘(Linux系统)离线扩容云盘(Linux系统)
  4. 扩容完成后,在Linux实例上卸载此云盘。具体操作,请参见卸载数据盘
  5. 将此云盘挂载回原ECS实例。具体操作,请参见作为系统盘挂载挂载数据盘
  6. 远程连接已修复的ECS实例,检查云盘容量。