Ubuntu磁盘空间爆满后输入命令报No space left on device

本文讲述了如何处理Ubuntu服务器磁盘空间不足的问题,特别是当tmp目录被独立并导致系统错误。在扩容磁盘后,通过umount-l/tmp命令解决了tmp占用1MB空间的问题。此外,由于MySQL在修复MyISAM表时使用了tmp目录,导致修复过程缓慢,直到tmp问题解决后,修复速度显著提升。文章强调了避免使用MyISAM引擎,推荐使用Innodb以防止数据表损坏。
摘要由CSDN通过智能技术生成

最近线上一台ubuntu服务器磁盘空间爆满了,扩容完毕后,发现在命令行界面敲tab键补全命令的时候,Linux会提示:

cannot create temp file for here-document: No space left on device

使用df -h命令查看磁盘使用情况,发现多了一个overflow的文件系统,挂载目录是/tmp,而这个目录只有1MB,使用率100%。
在这里插入图片描述
tmp目录原本是挂在/dev/xvda1下的,但因为磁盘爆满的缘故,ubuntu为了系统的正常运行,把tmp独立了出来,并分配了1MB的空间,如果这1MB的空间也使用完了,就会出现上面的No space left on device的报错。在磁盘空间问题解决后,如果不重启系统的话,这个目录并不会自动消失,需要我们自己使用sudo umount -l /tmp命令去卸载,卸载后tmp会重新挂回到/dev/xvda1,至此没有报错了,问题解决。

途中还有一个小插曲:

因为磁盘爆满的服务器是一台MySQL数据库,处理问题期间有停止重启过MySQL,可能因为这个原因导致一个MyISAM数据表损坏了,于是磁盘扩容完毕后,用REPAIR TABLE命令修复这个表,但奇怪的是修复的时间非常长,几个小时都没有修复完,而这个表本身并不大。

查看MySQL的错误日志,发现有出现报错信息:

[Warning] Disk is full writing ‘/tmp/STe9Gfus’ (Errcode: 28). Waiting for someone to free space… (Expect up to 60 secs delay for server to continue after freeing disk space)

看来MySQL在修复表的时候会用到tmp目录,而这个目录刚好爆满了(见前文截图)。于是tmp的问题解决后,重新修复数据表,这时候速度快了很多,大约几分钟就完成了。

注:使用MySQL的时候,表引擎要选择Innodb,不要选MyISAM,因为MyISAM崩溃后无法安全恢复,因此才导致上面数据表损坏的情况出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值