加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

Linux中呈现“No space left on device”错误的排查与办理要领

发布时间:2020-12-28 19:21:36 所属栏目:创业 来源:网络整理
导读:媒介 最近这两天登岸处事器,发明用 wget 下载文件的时辰提醒“No space left on device”,并且连行使 tab 键举办补全时也会提醒该错误。 之前碰着过一次这种题目,是因为磁盘空间被占满了,导致无法建设新文件。正常环境下,删除一些文件来开释空间,即可

媒介

最近这两天登岸处事器,发明用 wget 下载文件的时辰提醒“No space left on device”,并且连行使 tab 键举办补全时也会提醒该错误。

之前碰着过一次这种题目,是因为磁盘空间被占满了,导致无法建设新文件。正常环境下,删除一些文件来开释空间,即可办理该题目。

当我行使 df 呼吁查察分区环境时,功效如下:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 29G 29G 0 100% /
udev  10M 0 10M 0% /dev
tmpfs  101M 232K 100M 1% /run
tmpfs  5.0M 0 5.0M 0% /run/lock
tmpfs  405M 0 405M 0% /run/shm

看到这里,我觉得磁盘真的被 100% 占用了,于是就查察了各目次的占用环境:

# du -sh /*
8.8M /bin
30M /boot
0 /dev
5.3M /etc
24K /home
0 /initrd.img
205M /lib
4.0K /lib64
16K /lost+found
8.0K /media
4.0K /mnt
4.0K /opt
0 /proc
2.5G /root
232K /run
5.2M /sbin
8.0K /srv
0 /sys
4.0K /tmp
2.6G /usr
1.8G /var
0 /vmlinuz

很明明,总共的磁盘占用完全不到 10G,磁盘理论上并未被占满。

这种环境下,很也许是小文件过多,导致 inode 急剧增进,耗损完 inode 地区的空间。

假如然是云云,那么纵然磁盘空间有剩余,但因为无法建设新的 inode 来存储文件的元信息,也就无法建设新文件。

因此,我用 df 呼吁举办验证:

# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 1.9M 299K 1.6M 17% /
udev  123K 299 123K 1% /dev
tmpfs  126K 249 125K 1% /run
tmpfs  126K 4 126K 1% /run/lock
tmpfs  126K 2 126K 1% /run/shm

可以看到,inode 地区只被占用了一小部门,尚有大量的空间未行使,以是也不是 inode 地区被占满的题目。

到了这里,我的心田长短常忧郁的。这个题目直接导致了Apache、MySql以及其余的一些处事均无法启动,处事器已经根基没法行使了,然而缘故起因却空中楼阁。

最后,处事器提供商汇报我另一种也许的环境,就是有些文件删除时还被其余历程占用,此时文件并未真正删除,只是标志为 deleted,只有历程竣事后才会将文件真正从磁盘中破除。

于是我通过 lsop 呼吁查察了被历程占用中的文件:

# lsof | grep deleted
mysqld 1952 2982 mysql 5u REG  254,1  0 127 /tmp/ibzMEe4z (deleted)
mysqld 1952 2982 mysql 6u REG  254,1  0 146 /tmp/ibq6ZFge (deleted)
mysqld 1952 2982 mysql 10u REG  254,1  0 150 /tmp/ibyNHH8y (deleted)
apache2 2869  root 9u REG  254,1  0 168 /tmp/.ZendSem.2w14iv (deleted)
apache2 2869  root 10w REG  0,16  0 11077 /run/lock/apache2/rewrite-map.2869 (deleted)
...
python 3102  root 1w REG  254,1 22412342132 264070 /var/log/nohup.out (deleted)

终于找到了祸首罪魁,原本是在靠山运行的 Python 剧本,绵绵不断地将输出生涯到 /var/log/nohup.out 文件中,文件巨细居然到达了20G+!

前阶段在靠山运行剧本之后,就没再管过它。预计是我在 Python 运行进程中删掉了 nothup.out 文件,因为该文件被占用,以是只能先标志为 deleted,而未真正删除,最后导致磁盘爆满。

这次的教导提示了我,不能将使命简朴放到靠山就放任不管,出格是行使 nohup 呼吁时,全部的输出城市被不绝地添加到统一个文件中,假如该历程不会本身终止,就也许导致输出文件占满整个磁盘。

总结

以上就是这篇文章的所有内容了,但愿本文的内容对各人的进修可能事变能带来必然的辅佐,假若有疑问各人可以留言交换,感谢各人对编程小能力的支持。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读