当前位置:首页 > 运维 > 正文内容

linux中df -i 100%解决方案

phpmianshi5年前 (2016-04-28)运维162

背景

E138: Can't write viminfo file /root/.viminfo!

Press ENTER or type command to continue

这不科学呀,明明是root,怎么可能无法写入?


后来查看磁盘inodes状态,发现/已经是100%,难怪无法写入。

df -i
Filesystem              Inodes   IUsed     IFree IUse% Mounted on
/dev/mapper/vg_db02-lv_root
                    3276800 3276800         0  100% /

inodes介绍

Linux系统下文件数据储存在"块"中,文件的元信息,例如文件的创建者、文件的创建日期、文件的大小等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode也占用硬盘空间,硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

inodes资源耗尽

inodes使用完与存储空间使用完相似,都是创建不了文件或无法正常执行一些命令。inodes使用完,存储空间可能还有,这种情况一般是生成了大量的小文件,把inode table占满。

一般情况下存储空间使用完,inodes往往才使用百分之几,所以容易忽视对inodes使用情况的监控。

解决方案

通过以下脚本进行检查,查看到底哪个目录下面的文件最多

find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

通过以下脚本进行检查,查看到底哪个目录下面的文件最多:

for i in /*; do echo $i; find $i | wc -l; done

如果确定是某个目录下面,则/转换为该目录绝对路径,如/var/log


最终发现 /var/spool/postfix/maildrop/这个目录下有大量的文件,

可能是由于该目录有大量的文件导致的inodes满了


在 网上搜索之后明白是mail没有成功的邮件。由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的 形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面。如果sendmail或者postfix正常运 行,则会在/var/mail目录下也会堆积大量的邮件。


先停止任务计划

/etc/init.d/crond stop

然后我就直接清空目录所有文件

cd /var/spool/postfix/maildrop
rm -rf ./*

提示:-bash: /bin/rm: 参数列表过长

可以用

find . -name "*"|xargs rm -rf "*"

等待20分钟清理完成

再次查看,发现终于好了。


df -i
Filesystem              Inodes   IUsed     IFree IUse% Mounted on
/dev/mapper/vg_db02-lv_root
                       3276800 2496138    780662   77% /


关闭任务计划通知

vi /etc/crontab

MAILTO=root

更改为

MAILTO=""


重启任务计划

/etc/init.d/crond restart

过了几天,发现这个目录居然还有文件

然后我在任务计划第一行添加

crontab -e

#关闭任务计划通知

MAILTO=""


任务计划里面有很多每分钟执行的计划,等待半个小时,发现目录是空的。

Ok,那就说明以后再也不会产生文件了。




版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

Nginx中对同一IP限速限流DDOS预防

作用:Nginx通过limit_conn_zone和limit_req_zone对同一个IP地址进行限速限流,可防止DDOS/CC和flood攻击limit_conn_zone是限制同一个IP的连接数...

linux中利用nethogs查看哪些进程占用网络带宽

centos6版本安装1、安装依赖包yum install ncurses* -y yum install libpcap* -y2、下载...

记一次laravel项目因session导致cpu过高的问题

问题起因:腾讯云监控CPU过高报警  10:20-10:28左右持续 百分之80以上。问题排查:1. 查看php-fpm慢日志发现有大量如下日志:[26-May-2020 ...

linux中iptables防火墙详解

1、iptables入门简介Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,主要工作在OSI七层的二...

linux中查看系统活动情况报告sar命令详解

有很多工具可以看网络流量,但我最喜欢sar。sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多...

linux中高并发场景下too many open files问题处理

概述:高并发场景下 too many open files 问题。可以通过设置系统打开文件数,直接影响单个进程容纳的客户端连接数。比如会影响到长链接应用如聊天中单个进程能够维持的用户连接数, 运行ul...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。