生产环境下案例 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版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ... 
随机推荐
- 二:Go编程语言规范-类型
			1.类型 布尔值,数值与字符串类型的实例的命名是预声明的. 数组,结构,指针,函数,接口,切片,映射和信道这些复合类型可由类型字面构造. 每个类型 T 都有一个 基本类型:若 T 为预声明类型或类型字 ... 
- 解决chrome在docky上的图标模糊或不能锁定的问题
			1,终端执行以下命令:sudo nautilus2,打开usr/share/application,找到chrome的图标,右键找到属性,把“命令”里的内容换成/usr/bin/google-chro ... 
- (五)适配器模式-C++实现
			将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 该模式中有三种角色: 1.目标:是一个抽象类,它是客户想使用的接口 2.被适配 ... 
- 第9章 用内核对象进行线程同步(2)_可等待计时器(WaitableTimer)
			9.4 可等待的计时器内核对象——某个指定的时间或每隔一段时间触发一次 (1)创建可等待计时器:CreateWaitableTimer(使用时应把常量_WIN32_WINNT定义为0x0400) 参数 ... 
- ADO.NET防止字符串攻击方法
			在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入班级值 --:代表后边内容都被注释掉了 防止SQL注入攻击方法: 再给命令发送SQL语句的时候分两次发送,把SQL语句拆成两块,用户输入的 ... 
- 学习ROS的基本知识,节点、话题、服务等
			之前我在电脑上安装的ROS版本为jade版的. 可是后来发现各个教程安装的是indigo版的 于是我又去看了看ROS官网,在官网上有这样的一句话. 而且又因为indigo版的资料多一些,于是我就换了r ... 
- [No000013]在Office中关闭自动拼写检查和自动语法检查
			大家知道有时候语法检查很麻烦,搞得文档里都是红线和绿线.解决办法就是关闭自动拼写检查.现在我们来介绍怎么关闭office包括Word .Outlook .PowerPoint .OneNote .Pu ... 
- svn那些错误
			一.提交.a文件 第一种方法: 1. 通常选择svn的commit后一般不会上传.a文件. 2. 选中要上传的.a文件,右击选择Add Working Copy. 3. 然后再点击commit,就可以 ... 
- ie 7/8不支持trim的属性的解决方案
			if(!('trim' in String.prototype)){ String.prototype.trim = function(){ return this.replace(/^[\s\uFE ... 
- C# 内存信息
			Process proc = Process.GetCurrentProcess(); Console.Write("专用工作集内存:"); ... 
