生产环境下案例 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的时候,定时任务就会把上述目录就会存在大量小文件
环境模拟
创建定时任务不加>/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的文件,分别可以写多少个?为什么?
解答:
- 默认分区常规情况下,对大文件来讲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使用满的情况)的更多相关文章
- 四步法分析定位生产环境下MySQL上千条SQL中的问题所在
第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...
- Python开发程序:生产环境下实时统计网站访问日志信息
日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...
- 生产环境下一定要开启mysqlbinlog
在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...
- mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...
- Mysql迁移工具在生产环境下的使用
在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...
- [原]生产环境下的nginx.conf配置文件(多虚拟主机)
[原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...
- 生产环境下JAVA进程高CPU占用故障排查
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...
- 一次生产环境下MongoDB备份还原数据
最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...
- centos7生产环境下openssh升级
由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞.推荐通过升级ssh版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ...
随机推荐
- bootstrap简单的过一遍
注:.xxxx 表示类(class=xxxx) <h1>到<h6>均可使用.另外还提供了.h1到.h6的class .lead可以让段落突出显示 <small> ...
- 通过url 下载文件
1.问题简介 通过文件的url,将文件下载到本地.文件存储的位置为:tomcat服务器的文件夹(通过读取properties文件:可看:http://www.cnblogs.com/0201zcr/p ...
- ARC的原理详解
1,ARC的本质 ARC本质是NSAutoreleasePool的直接应用, @autorelease{ return UIApplicationMain(argc, argv, nil, NSStr ...
- stanford coursera 机器学习编程作业 exercise 5(正则化线性回归及偏差和方差)
本文根据水库中蓄水标线(water level) 使用正则化的线性回归模型预 水流量(water flowing out of dam),然后 debug 学习算法 以及 讨论偏差和方差对 该线性回归 ...
- AngularJS Filters
过滤器可以使用一个管道字符(|)添加到表达式和指令中. AngularJS 过滤器 AngularJS 过滤器可用于转换数据: 过滤器 描述 currency 格式化数字为货币格式. filter 从 ...
- 学生管理系统<分层开发>
一:分层架构 搭建DAL层(数据访问层).UI层(表示层).BLL层(业务逻辑层)以及Model层(实体层) 各层的引用关系: DAL.UI.BLL层引用Model层 UI层引用BLL层 BLL层引用 ...
- AC日记——与7无关的数 openjudge 1.5 39
39:与7无关的数 总时间限制: 1000ms 内存限制: 65536kB 描述 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n( ...
- Unity自动构建
Jenkins/Hudson Jenkins的前身是Hudson(Sun开发),2010年从Hudson分支出来.由于Sun被Oracle收购,Oracle声称拥有Hudson的商标所有权,Hudso ...
- OAuth2授权原理
最近在做第三方接入的,初步定下使用OAuth2协议,花了些时间对OAuth2的授权方式做了些了解. 我还记得一两年前,跟一位同事聊起互联网时,当时我说过一个想法: 目前不少较为稀有的资源,很多都是论坛 ...
- u3d_Shader_effects笔记3 half diffuse 和 ramp texture
1.前面的心情 每次写博客,先写心情也好,就当是小日记了吧.现在已经懒到不想动笔和纸来写日记了.近两天公司的活较少,晚上直接回来了,没有留公司.在公司看代码,不做工,就困... 哎,小辉哥家的老房子后 ...