no space left on device mysql_Linux下报错No space left on device的排查与处理方法

今天上服务器是下载文件时系统提示“No space left on device”,使用tab补全命令的时候同样会提示这个错误。

猜想一、磁盘空间占满,我们删除点文件看下效果。

# 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区域被占满的问题。

猜想三、可能有些文件在删除时占用了进程,但这些文件并没有真正的被删除,只是被标记为deleted状态,只有结束进程才会真正删除文件

我们先用lsop命令看下进程占用的文件:

# lsof | grep deleted

mysqld 1952 2982 mysql 5u REG  254,1  0 127 /tmp/ibzMEe4z (deleted)

apache2 2869  root 9u REG  254,1  0 168 /tmp/.ZendSem.2w14iv (deleted)

(显示太多此处忽略)...

python 3102  root 1w REG  254,1 22412342132 264070 /var/log/nohup.out (deleted)

发现确实是这个原因导致,有个python脚本运行。结束掉这个进程问题就解决了!

41a92cc0234125bfb606ff298d70592f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值