第一种情况:

问题:

如果想磁盘写入数据提示如下错误:

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的时候,定时任务就会把上述目录就会存在大量小文件

环境模拟

创建定时任务不加>/dev/null 2>&1

 [root@-tab scripts]# crontab -e

 no crontab for root - using an empty one

 * * * * * /bin/sh /server/scripts/backupservice.sh

 * * * * * /bin/sh /server/scripts/backupservice.sh

 * * * * * /bin/sh /server/scripts/backupservice.sh

 * * * * * /bin/sh /server/scripts/backupservice.sh

 * * * * * /bin/sh /server/scripts/backupservice.sh

查看postfix服务是否开启

root@-tab scripts]# lsof -i :

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

master   root   12u  IPv4        0t0  TCP localhost:smtp (LISTEN)

master   root   13u  IPv6        0t0  TCP localhost:smtp (LISTEN)

postfix服务是否开启状态下查看/var/spool/postfix/maildrop/目录

[root@-tab scripts]# ls /var/spool/postfix/maildrop/

停止postfix查看/var/spool/postfix/maildrop/目录

 [root@-tab scripts]# /etc/init.d/postfix stop

 Shutting down postfix:                                     [  OK  ]

 You have new mail in /var/spool/mail/root

 [root@-tab scripts]# lsof -i :

 [root@-tab scripts]# ls /var/spool/postfix/maildrop/
1C8D040005B 2DCF5400488 4F7D440048C 68B1B4004B3 80EC34004D2 A043B4004E2 C1AC84004F5 D4EA8400504
1D602400462 2F4A3400489 563A4400498 69FEE4004BC 854444004D3 AB8984004E7 C32434004F6 E61E2400506
22C4F40047D 331E740048A 58D0A4004A2 759A94004BD 85BA04004D4 ABC024004F0 C48944004F7 E6252400507
2742040047E 3C7D040048B 5AF094004A3 75C614004BE 8689B4004D5 B17FB4004E3 C9A164004FC E62E6400508
277C640047F 409C940048D 5C5AD4004AA 75F914004BF 8B4174004D8 B62834004F1 D26974004FD E6338400505
2906D400480 4494640048E 5C9954004AB 789CC4004C8 8E54C4004D9 BD0DB4004F2 D27204004FE E63F0400509
2B73B400485 46DDE400495 5D4604004AF 7ADD24004C9 92B494004DE BE1314004F3 D278B400500 EBB0240050B
2D3E3400486 4D385400496 5F86B4004B2 7DF3C4004CC 9C59D4004A9 BE60C4004E6 D2879400501 EBB8340050A
2D694400487 4E755400497 652644004A8 7F44E4004CD A03254004DF C04B94004F4 D46EA400503 F20AA40050

详细解决办法:/var/spool/clientmqueue 下生成太多文件处理

拓展:

一个100M(block的总大小,个数和单个block大小有关)的磁盘分区,分别写入0.5K的文件或写入1 M的文件,分别可以写多少个?为什么?

解答:

  1. 默认分区常规情况下,对大文件来讲inode是足够的。而block数量会消耗得更快,block为4K的情况,1M的文件不会有磁盘浪费情况,所以文件数量大概为100/1=100个。
  2. 对于小文件0.5K,inode会消耗得更快。默认分区的时候block数量是大于inode数量的。 每个小文件都会占用一个inode和一个block。所以最终文件的数量是inode会消耗完,文件总量是inode的数量。

知识点:

  1. inode是存放文件属性信息的(也包含指向文件实体的指针),默认大小128字节(C5),256字节(C6)。
  2. block是存放文件实际内容的,默认大小1K(boot)或4K(非系统分区)。
  3. 一个文件至少要占用一个inode及一个block。
  4. 默认分区常规情况下,inode数量是足够的。而block数量会消耗得更快。

生产环境下案例 No space left on device (inode使用满的情况)的更多相关文章

  1. 四步法分析定位生产环境下MySQL上千条SQL中的问题所在

    第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...

  2. Python开发程序:生产环境下实时统计网站访问日志信息

    日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...

  3. 生产环境下一定要开启mysqlbinlog

    在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...

  4. mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法

    mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...

  5. Mysql迁移工具在生产环境下的使用

    在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...

  6. [原]生产环境下的nginx.conf配置文件(多虚拟主机)

    [原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...

  7. 生产环境下JAVA进程高CPU占用故障排查

    问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

  8. 一次生产环境下MongoDB备份还原数据

    最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...

  9. centos7生产环境下openssh升级

    由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞.推荐通过升级ssh版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ...

随机推荐

  1. PCIe 32GT/s 含义

    如下: Jul 26 03:42:53 kernel: ixgbe 0000:01:00.1: PCI Express bandwidth of 32GT/s available Jul 26 03: ...

  2. Qt回忆录之配置开发环境

    光阴荏苒,用Qt开发已经一年多了.在Windows上开发GUI,最常用的莫过于MFC,WinForm,WPF以及Qt.MFC和Qt是基于C++,而WinForm和WPF一般是基于C#,当然在PC上基于 ...

  3. PhpSms 稳定可靠的php短信发送库

    可能是目前最聪明.优雅的PHP短信发送库了.从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供. GitHub地址:http ...

  4. AI(Adobe Illustrator)简单入门——米老鼠

    成果: 步骤如下: 一.新建文档 二.选椭圆工具,在画布中间点一下,画一个100px*100px的圆,如下 三.同上,再画两个50px*50px小圆.点左上角的选择工具,点小圆中心,放好位置. 四.全 ...

  5. [转]Oracle 分组聚合二种写法,listagg和wmsys.wm_concat

    本文转自:http://www.cnblogs.com/ycdx2001/p/3502495.html with temp as( select 'China' nation ,'Guangzhou' ...

  6. TestNG之注解的生命周期

    有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 @BeforeSuite@AfterSuite@BeforeTest@AfterTest@BeforeGroups@AfterGro ...

  7. Java面向对象:多态

    多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的实例而执行不同的操作) 实现多态的优点:为了方便统一调用! 实现多态的三种方式! 1:子类到父类的转换: 例: 1 Dog dog=new ...

  8. Nginx反向代理的配置

    Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之 ...

  9. 用ccproxy + stunnel做个加密代理

    https://www.stunnel.org/downloads.html ccproxy + stunnel做个加密http代理和socks5代理 目前国内用户无法访问某些国外网站,如http:/ ...

  10. HTML 学习笔记 CSS3 (2D转换)

    2.scaleX(<number>) : 使用 [sx,1] 缩放矢量执行缩放操作,sx为所需参数.scaleX表示元素只在X轴(水平方向)缩放元素,他的默认值是(1,1),其基点一样是在 ...