linux机器报错: 设备上没有空间

设备上没有空间报错解决

  • 1. 原因
  • 2.解决步骤
    • 2.1 检查磁盘空间
    • 2.2 清理不必要的文件

1. 原因

这个错误通常意味着Linux系统上的磁盘空间不足,无法创建临时文件。当应用程序或系统需要创建临时文件来处理任务时,如果磁盘空间不足,就会发生这种错误。

2.解决步骤

2.1 检查磁盘空间

使用df命令查看磁盘的使用情况。这会显示每个挂载点的可用和已用空间

df -h

结果如下:

文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/VG_qdccb-root   96G   96G   20K  100% /
devtmpfs                   3.9G     0  3.9G    0% /dev
tmpfs                      3.9G     0  3.9G    0% /dev/shm
tmpfs                      3.9G  402M  3.5G   11% /run
tmpfs                      3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1                 1014M  177M  838M   18% /boot
tmpfs                      783M     0  783M    0% /run/user/1002
tmpfs                      783M   12K  783M    1% /run/user/42
tmpfs                      783M     0  783M    0% /run/user/0

通过查询结果的输出,可以看到系统的根目录(/)已经满了,没有可用空间。这可能是由于各种原因,例如大量的日志文件、临时文件、缓存文件或其他未清理的文件。此时我们需要进一步排查具体存在哪些大文件。

2.2 清理不必要的文件

我们现在需要查询具体存在哪些大文件,可以使用这个命令

# 查找特定目录下的大文件或目录 排序前10
du -h / | sort -rh | head -n 10

输出结果如下

du -h / | sort -rh | head -n 10
96G	/
51G	/data
43G	/data/app/xxl-job/apache-tomcat-9.0.37
43G	/data/app/xxl-job
43G	/data/app
42G	/data/app/xxl-job/apache-tomcat-9.0.37/logs
41G	/opt
36G	/opt/logs
26G	/opt/logs/100003171
8.5G	/data/logs/xxl-job

根据结果我们可以得知:tomcat、xxl-job、以及/opt/logs(这里输出的日志主要是部署的apollo)所在目录占用了很多内存。
到这里已经很清楚了,大概率是应用输出的日志过多造成的,我们继续来验证它。

根据上面查询结果的提示,我们主要查看几个大文件夹下面的内存占用情况

du -h /data/app/xxl-job/apache-tomcat-9.0.37/ | sort -rh | head -n 10

43G	/data/app/xxl-job/apache-tomcat-9.0.37/
42G	/data/app/xxl-job/apache-tomcat-9.0.37/logs
102M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps
54M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin
49M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin/WEB-INF
44M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin/WEB-INF/lib
9.4M	/data/app/xxl-job/apache-tomcat-9.0.37/lib
5.2M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin/WEB-INF/classes
4.5M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin/static
4.3M	/data/app/xxl-job/apache-tomcat-9.0.37/webapps/xxl-job-admin/WEB-INF/classes/static

这个结果验证了我们的猜想,确实是日志占用了很多内存。接下来就根据我们需要保留最近几天的日志,将其它的日志文件删除就可以了。

最后,我们在看一下清理之后的结果

du -h / | sort -rh | head -n 10
16G	/
7.1G	/opt
4.7G	/opt/IBM
4.6G	/data
4.1G	/data/logs/xxl-job
4.1G	/data/logs
3.5G	/usr
2.5G	/opt/logs
2.4G	/opt/logs/100003173
1.7G	/opt/IBM/WebSphere/AppServer

到此设备上没有空间的问题就解决了。