生产环境下案例 No space left on device (inode使用满的情况)
Posted python运维自动化之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产环境下案例 No space left on device (inode使用满的情况)相关的知识,希望对你有一定的参考价值。
第一种情况:
问题:
如果想磁盘写入数据提示如下错误:
No space left on device。
通过df -h查看磁盘空间,发现没满,请问可能原因是什么?
解答:
可能是inode数量被消耗尽了。
df -i查看是否耗尽了inode数量。
企业工作中邮件临时队列/var/spool/clientmquene这里很容易被大量小文件占满导致No space left on device的错误。
clientmquene目录只有安装了sendmail服务才会有。CentOS5.X默认会装sendmial,CentOS6.5默认没有sendmail。
知识点:
CentOS5系列的系统会默认安装Sendmail服务,因此邮件临时存放地点的路径/var/spool/clientmqueue/。
CentOS6默认情况下没有安装Sendmail服务,而是安装了Postfix服务,因此邮件存放地点的路径为/var/postfix/maildrop/。
以上两个目录很容易被垃圾文件填满导致系统的inode数量不够用,从而导致无法放文件。
当定时任务执行结尾不加>/dev/null 2>&1的时候,定时任务就会把上述目录就会存在大量小文件
第二种情况:
一个100M(block的总大小,个数和单个block大小有关)的磁盘分区,分别写入0.5K的文件或写入1 M的文件,分别可以写多少个?为什么?
解答:
- 默认分区常规情况下,对大文件来讲inode是足够的。而block数量会消耗得更快,block为4K的情况,1M的文件不会有磁盘浪费情况,所以文件数量大概为100/1=100个。
- 对于小文件0.5K,inode会消耗得更快。默认分区的时候block数量是大于inode数量的。 每个小文件都会占用一个inode和一个block。所以最终文件的数量是inode会消耗完,文件总量是inode的数量。
知识点:
- inode是存放文件属性信息的(也包含指向文件实体的指针),默认大小128字节(C5),256字节(C6)。
- block是存放文件实际内容的,默认大小1K(boot)或4K(非系统分区)。
- 一个文件至少要占用一个inode及一个block。
- 默认分区常规情况下,inode数量是足够的。而block数量会消耗得更快。
以上是关于生产环境下案例 No space left on device (inode使用满的情况)的主要内容,如果未能解决你的问题,请参考以下文章
cannot create temp file for here-document: No space left on device
Linux 下打包报错:enospc (no space left on device)