文档首页/ 弹性云服务器 ECS/ 常见问题/ ECS卡顿(Linux)/ Linux云服务器磁盘inode高怎么办?
更新时间:2025-07-28 GMT+08:00
分享

Linux云服务器磁盘inode高怎么办?

问题描述

在使用ECS实例过程中,如果出现了以下的问题,表示遇到了实例磁盘文件系统空间满的情况:

  • 系统命令df -i显示磁盘Use%超过90%。
  • 收到磁盘inode使用率高的告警或者诊断结果显示磁盘使用率高。

排查方法

检查磁盘的当前使用率,并识别高占用的文件:

  1. 登录节点
  2. 执行以下命令,查看磁盘使用率。

    df -i

    回显信息如下所示。示例中分区/dev/vdb的使用率达到92%。

    图1 回显信息

常见磁盘I/O负载高问题原因及解决方案

  1. 确认inode占用量高的文件或者目录。

    执行以下命令,分析根目录下的每个二级目录有多少个文件。

    for i in /*; do echo $i; sudo find $i | wc -l; done

    图2 操作结果

    以此类推,最终定位inode使用率过高的文件或目录。

    图3 操作结果
    • 如果文件数据重要需要保留,建议临时进行磁盘扩容,恢复业务。
    • 否则进行相应的清理操作,删除部分文件或目录释放inode。
  2. 如果在清理可清理文件后inode使用率仍然较高,则建议通过备份数据、重新格式化磁盘以增加inode数量、再将数据拷回的方式,完成数据的保留并增加文件系统的inode数量。

    下面提供新建格式化文件系统时扩大inode数量的指导。

    重新格式化磁盘时磁盘内的数据将被删除,请确保数据已经得到有效备份后,再进行以下操作。您可以自行拷贝文件,也可以通过快照方式进行数据备份,创建快照的具体操作请参见创建快照

    • ext4文件系统:
      1. 执行以下命令,以重新建立文件系统并增加Inode节点的数量。

        本示例以磁盘分区为/dev/vdb、文件系统类型为ext4、Inode节点数为163,840为例,请您根据实际情况进行操作。

        mkfs.ext4 /dev/vdb -N 2621440

        在Linux系统中,对于ext*分区格式的Inode数量通常是根据磁盘容量大小生成的,通常采用1:16KB的比例。例如,以40GB云盘为例,其Inode节点数通常为2,621,440,而其支持的最大值为2^32(约为43亿)。您可以根据实际的云盘容量大小乘以一定的放大系数(例如1.2)来选择适合您业务需求的Inode值。

      1. 将新格式化好的磁盘挂载到临时目录。

        本示例以将/dev/vdb设备挂载至/mnt/data_new /目录为例。

        mount /dev/vdb /mnt/data_new

      2. 执行以下命令,查看并确认修改后的Inode节点数。

        df -i /mnt/data_new

        显示如下信息,表明Inode数量调整成功,您可以继续拷贝备份数据,以恢复相关数据或应用。

        图4 操作结果
    • xfs文件系统
      1. 执行以下命令,以重新建立文件系统并增加Inode节点的数量。

        本示例以磁盘分区为/dev/vdb、文件系统类型为xfs、将默认maxpct=25改为40为例,请您根据实际情况进行操作。

        mkfs.xfs -f -i maxpct=40 /dev/vdb

        在Linux系统中,xfs分区格式的Inode数量通常是根据磁盘容量大小生成的,受磁盘容量和maxpct参数的共同影响。默认情况下,容量在1TB以下的文件系统Inode比例为25%,容量在50TB以下的文件系统比例为5%,而超过50TB的文件系统比例则为1%。您可以根据实际需求选择适合您业务的Inode值。

      2. 将新格式化好的磁盘挂载到临时目录。

        本示例以将/dev/vdb设备挂载至/mnt/data_new /目录为例。

        mount /dev/vdb /mnt/data_new

      3. 执行以下命令,查看并确认修改后的Inode节点数。

        df -i /mnt/data_new

        显示如下信息,表明Inode数量调整成功,您可以继续拷贝备份数据,以恢复相关数据或应用。

        图5 操作结果

相关文档