1 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%。

2 inodes资源耗尽

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

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

借用网图来说明inodes用尽,而磁盘空间还未用完的情况:

查看磁盘空间使用情况,使用df命令

查看inodess使用情况,使用df -i命令

上述两个命令可以使用-h参数,命令为df -h和df -hi。从图中看见磁盘空间使用71%,但是inodes使用100%。

3 inodes耗尽解决

inodes的大小在磁盘格式化分区时确定,跟分区的大小相关,分区越大,inodes越大,反之亦然。

linux操作系统根目录一般分区比较小,如果有定时性的小文件产生而又未及时清理,则很容易造成inodes占满。

inodes占满解决步骤:

(1)查看文件最多的目录

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

如果确定目录范围,把/*写的具体点

最终发现是/var/spool/postfix/maildrop目录下小文件过多,原因如下:

由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送给cron所有者。由于客户环境中的sendmail和postfix没有正常运行,邮件发送不成功,导致全部小文件都堆积在maildrop目录下,另由于缺乏自动清理的机制,故此目录下堆积了大量的文件。

经过排查root用户下发现有个每分钟进行一次时钟同步的定时任务,该定时任务每分钟产生一个小文件。

(2)删除大量文件

ls | xargs -n 1000 rm -rf

需要使用xargs命令,不然会删除失败。

4 总结

(1)设置方面

在crontab -e 第一行增加MAILTO="" ,就没有文件产生啦

(2)重定向

对定时任务设置定向输出文件,不需要日志输出的定时任务可以将日志重定向到/dev/null,如下:

*/10 * * * * /tmp/test.sh >/dev/null 2>&1

(3)定时清理文件

find 目录 -type f -mtime +30 | xargs -n 1000 rm -f

(4)监控inodes的使用

备注:应注意crontab的写法和产生的文件的定时清理

来源:

https://mp.weixin.qq.com/s/spSGiAs9NOgGIL2YuhYrSg

Linux系统inodes资源耗尽问题的更多相关文章

  1. Linux系统inodes资源耗尽时的查找及删除

    for i in {1..10}; do echo $i; ls > $i.log; done for i in $(seq 1 10); do echo $i; done 以上为for循环的使 ...

  2. Linux系统监视资源与进程管理

    Linux 系统中时刻运行着许多的进程,如果能够合理的管理它们,有益于系统性能的优化, 系统进程总共有五种不同的状态: 命令一:ps命令,用于查看系统中进程状态 格式:ps [参数] 查看进程与状态: ...

  3. 【转】 设定linux 系统可用资源

    getrlimit和setrlimit函数  每个进程都有一组资源限制,其中某一些可以用getrlimit和setrlimit函数查询和更改. #include #include int getrli ...

  4. Windows系统与Linux系统之间资源samba共享【转】

    配置SAMBA服务器来实现在Windows计算机与Linux计算机之间的用户级的资源共享,九河网络TOM[2694339173]教你怎样操作: SAMBA服务器的基本配置 配置SAMBA服务器来实现在 ...

  5. Linux 系统负载查询及分析说明

    Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查: 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机. 检查 /var/spool/cron 等系统 ...

  6. Linux学习之CentOS(十七)-----释放 Linux 系统预留的硬盘空间 与Linux磁盘空间被未知资源耗尽 (转)

    释放 Linux 系统预留的硬盘空间  大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监 ...

  7. Linux磁盘空间被未知资源耗尽【转】

    Linux磁盘空间被未知资源耗尽 在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间, ...

  8. linux系统相关、硬件、资源 - 相关命令

    分类命令:   1.1.系统 # uname -a                    # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本 #  ...

  9. Linux磁盘空间查看、磁盘被未知资源耗尽

    Linux系统中,当我们使用rm在Linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄, 那么Linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...

随机推荐

  1. 如何在自定义端口上运行 Spring Boot 应用程序?

    为了在自定义端口上运行 Spring Boot 应用程序,您可以在 application.properties 中指定端口. server.port = 8090

  2. 面试问题之计算机网络:TCP三次握手四次挥手

    转载于:https://www.cnblogs.com/Andya/p/7272462.html TCP三次握手: 起初A和B都处于CLOSED关闭状态 B创建TCB,处于LISTEN收听状态,等待A ...

  3. We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.

    今天遇到一个问题为 vue请求得到的响应为 We're sorry but demo3 doesn't work properly without JavaScript enabled. Please ...

  4. Spring根据路径前缀获取不同Resource

    相关文章:https://www.jianshu.com/p/5bab9e03ab92 官方文档:https://docs.spring.io/spring/docs/current/spring-f ...

  5. 使用kindeditor

    首先在http://kindeditor.net/demo.php下载样式 点击右上角的下载按钮 点击官方下载下载之后解压出来 然后在桌面创建一个文件夹 然后回到刚才的http://kindedito ...

  6. 什么是 Spring beans?

    Spring beans 是那些形成 Spring 应用的主干的 java 对象.它们被 Spring IOC 容器初始化,装配,和管理.这些 beans 通过容器中配置的元数据创建.比如, 以 XM ...

  7. js里面是没有Trim()这个方法的可以用以下的形式来判断是否输入的值为空

    if (text.value.replace(/\s+/g, "").length == 0)

  8. Linux 基础优化

    1.操作的最小化原则 1)安装系统最小化 一般情况下安装OS时,软件安装包组(Package Group)的选择: base--------------------------基本环境 editors ...

  9. 一个未知宽高的元素在div中垂直水平居中

    <body> <div id="#div1"> <img src="img1.png"></img> </ ...

  10. pydev+eclipse写python代码

    首先,下载pydev:PyDev for Eclipse - Browse /pydev at SourceForge.net (建议下载到本地,之前看其他文章时,进行了如下安装: 启动 Eclips ...