【inode】Linux服务器inode索引节点用满原因以及解决方法

简介: 系统出现异常我们团队的阿里云服务器在前几天运行过程中,服务器CPU负载长时间达到100%,并且不能通过ssh连接服务器。 经过重启服务器后对服务器进行连接,发现服务器上的crontab不能正常运行php-fpm服务不能正常开启crontab的报错提示为 ...

系统出现异常

我们团队的阿里云服务器在前几天运行过程中,服务器CPU负载长时间达到100%,并且不能通过ssh连接服务器。
经过重启服务器后对服务器进行连接,发现

  • 服务器上的crontab不能正常运行
  • php-fpm服务不能正常开启

crontab的报错提示为

正在启动 crond:crond: can’t open or create /var/run/crond.pid: 设备上没有空间

php-fpm的报错提示为

Fatal Error Unable to create lock file: Bad file descriptor (9)

问题排查

磁盘空间

由于crontab的反馈是没有空间,于是开始对服务器的磁盘空间进行检查

[root@********** ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G   13G  6.5G  66% /
tmpfs           1.9G     0  1.9G   0% /dev/shm  

发现磁盘空间是够用的。

inode


[root@****** ~]# df -i
Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/xvda1     1310720 1306882   3838  100% /
tmpfs           490143       1 490142    1% /dev/shm

发现磁盘上的inode空间被全部耗尽

分析问题

出现inode被耗尽的原因主要是大量的碎片文件和小文件占用的inode的使用。

Linux上的inode的原理文章很多,不再赘述。

解决方法

根据和阿里云售后工程师的沟通,解决inode用满的方式有下面几种

  1. 排查清理服务器内无效文件、碎片文件,垃圾文件。
  2. 转移非在用的数据到数据盘或本地存档。
  3. 考虑通过自定义镜像来更换系统时扩容来增加iNode容量。

解决实践

这里采用了第三种方式

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

经过系统盘的扩容,系统盘从原来的20G扩充为40G,同时inode的容量也变成了原来的两倍。


[root@********** ~]# df -i
Filesystem      Inodes   IUsed   IFree IUse% Mounted on
/dev/xvda1     2621440 1311396 1310044   51% /
tmpfs           490143       1  490142    1% /dev/shm
[root@********* ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       40G   13G   25G  33% /
tmpfs           1.9G     0  1.9G   0% /dev/shm

参考资料

  • http://www.ruanyifeng.com/blog/2011/12/inode.html
  • 后记

    技术人员的需要经历一款产品的调研、开发、部署、迭代,这样才能够得到全面的成长。

    目录
    相关文章
    |
    1月前
    |
    安全 Java Linux
    Websoft9:为开发者打造的高效 Linux 服务器面板
    Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
    58 0
    |
    9天前
    |
    安全 Linux
    阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
    公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
    107 28
    |
    10天前
    |
    关系型数据库 MySQL Linux
    在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
    以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
    82 28
    |
    22天前
    |
    JavaScript Linux Python
    在Linux服务器中遇到的立即重启后的绑定错误:地址已被使用问题解决
    总的来说,解决"地址已被使用"的问题需要理解Linux的网络资源管理机制,选择合适的套接字选项,以及合适的时间点进行服务重启。以上就是对“立即重启后的绑定错误:地址已被使用问题”的全面解答。希望可以帮你解决问题。
    81 20
    |
    28天前
    |
    Ubuntu Linux
    Linux系统管理:服务器时间与网络时间同步技巧。
    以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
    111 20
    |
    1月前
    |
    Kubernetes API 网络安全
    当node节点kubectl 命令无法连接到 Kubernetes API 服务器
    当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
    90 17
    |
    2月前
    |
    关系型数据库 应用服务中间件 Linux
    Linux云服务器如何搭建LNMP环境
    LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
    71 1
    Linux云服务器如何搭建LNMP环境
    |
    1月前
    |
    存储 运维 监控
    深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
    作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
    |
    1月前
    |
    Linux 虚拟化 Docker
    Linux服务器部署docker windows
    在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
    182 1
    |
    4月前
    |
    消息中间件 Java Kafka
    【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
    本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
    【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
    下一篇
    oss创建bucket