本文主要介绍如何排查和解决Linux实例在使用过程中,由于磁盘负载(使用率)较高,在创建文件或者应用时可能会出现No space left on device
错误问题。
操作步骤
查看当前磁盘使用率的使用情况
登录目标实例,操作详情可参考登录Linux实例。
执行如下命令,查看当前磁盘使用率情况。
df -h
回显示例
逐级查看各目录占用磁盘详情。
本文以从根目录/
开始查看为例。
- 执行如下命令,进入根目录。
cd /
- 执行如下命令,查看当前目录下占用磁盘最多的文件夹。
du -sh *
回显示例
- 执行如下命令,进入usr目录。
本文以usr
目录存在大文件为例,请调整为实际目录路径。
cd usr/
- 执行如下命令,查看当前目录下占用磁盘最多的文件夹。
du -sh *
回显示例
- 重复c、d两步,直到定位到大型文件后,确定目标文件是否为系统或业务使用的文件。
文件不可清理
若目标大文件为业务或系统必要文件,不可清理,您可以升级您的实例配置、扩容云盘或变更云盘规格,避免程序受限于云盘性能无法正常运行,操作详情可查看修改实例规格、扩容云盘、变更云盘规格。
文件可清理
若目标大文件为非必要文件,可以清理,您可以执行如下命令,强制删除目标文件,清理磁盘空间。
注意
- 删除操作不可逆,请谨慎操作。
- 请将命令中
/usr/local/test_large_file
替换为目标文件实际路径。
rm -rf /usr/local/test_large_file
查看当前磁盘Inode使用率的使用情况
- 登录目标实例,操作详情可参考登录Linux实例。
- 执行如下命令,查看Inode使用情况。
df -i
回显示例
- 若Inode使用率达到或者接近100%,则需要清理Inode占用量高的文件或者目录。
执行如下命令,确定根目录/
下的文件数量。
cd /
for i in ./*; do echo $i; find $i | wc -l; done
回显示例
执行如下命令,进入文件数量最多的目录。
说明
- 文件数越多说明Inode占用越高。
- 本文以
usr
目录中文件数量最多为例。
```
cd usr/
```
执行如下命令,确定当前目录下文件数量最多的目录。
for i in ./*; do echo $i; find $i | wc -l; done
回显示例
重复b、c两步,逐层进入Inode占用最高(即文件数量最多)的目录,直到定位到占用过高空间的文件、目录。
不可清理
若目标文件、目录为业务或系统必要文件,不可清理,您可以扩容云盘或变更云盘规格,避免程序受限于云盘性能无法正常运行,操作详情可查看扩容云盘、变更云盘规格。
可清理
若目标文件、目录为非必要文件,可以清理,您可以执行如下命令,强制删除目标文件,清理磁盘空间。
注意
- 删除操作不可逆,请谨慎操作。
- 请将命令中
/usr/local/test_large_file
替换为目标文件实际路径。
rm -rf /usr/local/test_large_file