You need to enable JavaScript to run this app.
导航
Linux系统的ECS实例磁盘负载较高问题的排查及解决方案
最近更新时间:2024.10.18 17:12:43首次发布时间:2024.04.03 15:47:01

本文主要介绍如何排查和解决Linux实例在使用过程中,由于磁盘负载(使用率)较高,在创建文件或者应用时可能会出现No space left on device错误问题。

操作步骤

查看当前磁盘使用率的使用情况

  1. 登录目标实例,操作详情可参考登录Linux实例

  2. 执行如下命令,查看当前磁盘使用率情况。

    df -h
    

    回显示例

  3. 逐级查看各目录占用磁盘详情。

    本文以从根目录/开始查看为例。

    1. 执行如下命令,进入根目录。
      cd /
      
    2. 执行如下命令,查看当前目录下占用磁盘最多的文件夹。
      du -sh *
      
      回显示例
    3. 执行如下命令,进入usr目录。

      本文以usr目录存在大文件为例,请调整为实际目录路径。

      cd usr/
      
    4. 执行如下命令,查看当前目录下占用磁盘最多的文件夹。
      du -sh *
      
      回显示例
    5. 重复c、d两步,直到定位到大型文件后,确定目标文件是否为系统或业务使用的文件。
      • 文件不可清理
        若目标大文件为业务或系统必要文件,不可清理,您可以升级您的实例配置、扩容云盘或变更云盘规格,避免程序受限于云盘性能无法正常运行,操作详情可查看修改实例规格扩容云盘变更云盘规格

      • 文件可清理
        若目标大文件为非必要文件,可以清理,您可以执行如下命令,强制删除目标文件,清理磁盘空间。

        注意

        • 删除操作不可逆,请谨慎操作。
        • 请将命令中/usr/local/test_large_file替换为目标文件实际路径。
        rm -rf /usr/local/test_large_file
        

查看当前磁盘Inode使用率的使用情况

  1. 登录目标实例,操作详情可参考登录Linux实例
  2. 执行如下命令,查看Inode使用情况。
    df -i
    
    回显示例
  3. 若Inode使用率达到或者接近100%,则需要清理Inode占用量高的文件或者目录。
    1. 执行如下命令,确定根目录/下的文件数量。

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

      回显示例

    2. 执行如下命令,进入文件数量最多的目录。

      说明

      • 文件数越多说明Inode占用越高。
      • 本文以usr目录中文件数量最多为例。
      ```
      cd usr/
      ```	  
      
    3. 执行如下命令,确定当前目录下文件数量最多的目录。

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

      回显示例

    4. 重复b、c两步,逐层进入Inode占用最高(即文件数量最多)的目录,直到定位到占用过高空间的文件、目录。

      • 不可清理
        若目标文件、目录为业务或系统必要文件,不可清理,您可以扩容云盘或变更云盘规格,避免程序受限于云盘性能无法正常运行,操作详情可查看扩容云盘变更云盘规格

      • 可清理
        若目标文件、目录为非必要文件,可以清理,您可以执行如下命令,强制删除目标文件,清理磁盘空间。

        注意

        • 删除操作不可逆,请谨慎操作。
        • 请将命令中/usr/local/test_large_file替换为目标文件实际路径。
        rm -rf /usr/local/test_large_file