在Linux系统的云服务器ECS实例内创建文件或者应用时出现No space left on device
报错提示,即表示您的磁盘空间不足。如果磁盘满不符合您的预期使用,可根据本文判断磁盘满的原因并相应解决。
可能原因
磁盘空间不足的问题通常有以下几类原因:
-
磁盘分区空间使用率达到100%。
-
磁盘分区Inode使用率达到100%。
-
磁盘存在已删除未释放的僵尸文件。
已删除文件可能因删除时文件句柄被打开,导致文件删除时文件空间未能被释放。
-
挂载点覆盖。
在原有文件系统的目录下已经存在大量文件,挂载新磁盘后挂载点(目录)被覆盖。但您系统内的应用可能仍会继续读写原有文件系统空间,这时就有可能出现您的应用报空间不足,但您使用
df
或du
命令查看磁盘文件目录的容量使用情况时却无法统计到,原因是df
或du
命令统计的是当前挂载点对应的分区使用情况。 -
inotify watches达到上限。
inotify是Linux系统的一种监控文件系统事件的机制,被广泛用于实时监控文件系统中的文件变化。该错误实际上和磁盘空间没有关联,不表示磁盘存储空间已满。本文档中对这一报错进行补充说明,以便帮助您做正确的排查。
排查方法和解决方案
请根据不同的问题原因,通过以下方式进行处理。
一、磁盘分区空间使用率达到100%
您可以通过清理占用磁盘空间较大的文件或目录、扩容或新购磁盘等方式来解决磁盘分区空间使用率达到100%的问题。
-
查看磁盘当前使用率,并定位高占用文件。
-
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
-
执行以下命令,查看磁盘使用率。
df -h
系统显示类似如下信息。例如,分区/dev/xvda1的使用率为15%。
-
执行以下命令,进入根目录,查看哪个目录占用磁盘空间较大。
cd / du -sh *
系统显示类似如下信息。图示例可以看出
/usr
目录占用空间最大,则需要继续查看/usr
目录下哪个文件或目录占用空间较大。请您根据实际环境进行操作。 -
执行以下命令,逐级查看哪个目录占用磁盘空间较大。
例如本例中进入较大的
/usr
目录,继续查看/usr
目录下哪个文件或目录较大。cd /usr du -sh *
系统显示类似如下信息。图示例可以看出
local
目录占用空间最大,则需要查看local
目录下哪个文件或目录占用空间较大,以此类推。
-
-
结合业务情况判断,进行以下处理。
二、磁盘分区Inode使用率达到100%
磁盘分区Inode是文件系统中的一个重要概念,文件系统内每个文件和目录都由一个唯一的Inode标识。每个磁盘分区在格式化时会预分配一定数量的Inodes,但是如果文件系统中存在大量小文件或目录,Inode资源也可能成为系统资源的瓶颈。当所有Inodes都被分配完毕,即使磁盘还有剩余空间,也无法再创建新的文件或目录,这就是Inode使用率达到100%现象。此时,需要清理不必要的文件以释放Inode,或者增加Inode数量来解决磁盘分区Inode使用率达到100%的问题。
-
查询Inode使用率。
-
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
-
执行以下命令,查询Inode使用率。
df -i
-
============ 欢迎各位老板打赏~ ===========
【下篇】docker定时任务Mysql脚本
与本文相关的文章
- · Amazon Linux 2023 安装Docker和Docker Compose
- · 修改Docker的默认网段
- · docker定时任务Mysql脚本
- · failed to fetch metadata: fork/exec /home/appuser/.docker/cli-plugins/docker-buildx: exec format error
- · Docker登录login报错Error saving credentials
- · docker安装mysql8注意事项
- · 黑群晖docker无法pull镜像,x509错误解决方法
- · k3s+kuboard快速搭建K8s生产环境集群
- · 解决es报错:blocked by: [FORBIDDEN/12/index read-only / allow delete (api) ]
- · filebeat按docker容器名创建不同的索引
- · traefik负载均衡/滚动升级
- · 定时备份docker中的mysql