Linux Inode 概念、查看、引发的问题及常见解决方案

news2024/9/21 8:02:05

什么是 Linux Inode

在Linux操作系统中,索引节点(inode)是一个核心概念。它是文件系统中的一个关键数据结构,主要负责存储文件的元数据而非文件名本身。所述元数据涵盖了诸如文件类型(例如普通文件、目录、字符设备、块设备等)、文件大小、创建和修改时间、权限设置、链接数(即有多少文件名指向该节点)以及数据块的分布等信息。

当文件系统中的inode数量用尽时,即使磁盘空间还有剩余,也无法再创建新文件或目录,因为每个新文件或目录都需要一个唯一的inode。

查看 Inode 使用情况

df -i命令在Linux系统中用于显示文件系统的inode使用情况。df 命令通常用于显示磁盘空间的使用情况,但当与 -i 选项一起使用时,它会报告每个挂载点或文件系统的inode总数、已用inode数、剩余inode数以及inode的使用百分比。

输出示例(可能会根据系统和文件系统而有所不同):

Filesystem      Inodes IUsed  IFree IUse% Mounted on  
/dev/sda1      1228800 24568 1204232    2% /  
udev            483220    573 482647    1% /dev  
tmpfs           491744    654 491090    1% /run  
none            491744      2 491742    1% /sys/fs/cgroup  
/dev/sda5       488320  488320 0      100% /home  
/dev/sdb1      1280000   124 1279876    1% /data

通过以上演示代码可以看到**/home分区的inode已经耗尽**。

为什么会硬盘空间充足但 Inode 不足

硬盘空间充足但inode不足的情况,主要是由于inode和磁盘空间(数据块)在文件系统中的不同角色和分配方式所导致的。

inode是文件系统中的一种数据结构,用于存储文件的元数据(如权限、所有者、大小和创建/修改时间等),而不是文件名或文件内容本身。每个文件或目录在Linux中都至少有一个对应的inode,而文件占用的大小只对应于硬盘空间容量。

举例说明:

情况1:硬盘大小为50GB,只有1个文件为50GB,那么此时为已用容量为50GB,可用容量为0GB,Inode使用量为1,此时硬盘空间不足,但 Inode 充足

情况2:硬盘大小为50GB,有1000万个文件,每个文件仅有约1KB,总共占用容量约为10GB,那么此时已用容量为10GB,可用容量为40GB,Inode使用量为有1000万,此时硬盘空间充足,但 Inode 数量可能已经耗尽

Inode 可以扩容吗

**Inode的数量在大多数文件系统中,尤其是在创建文件系统时就确定了,通常无法直接扩容。**这是因为inode的数量和大小在文件系统格式化时就已经被固定,它们与文件系统的块大小和总容量有直接关系。

最简单的扩容 inode 的方法是扩容硬盘容量后对硬盘进行格式化,但这样会造成文件及数据的丢失,需要备份数据

虽然某些文件系统可以采用一些策略来动态扩展inode,但通常也会造成文件丢失及备份问题

Inode 不足可能产生的问题

1、系统无法创建新的文件。

2、网站无法上传文件,网站访问报错,缓存文件无法生成。

3、网站SESSION莫名其妙失效。

4、操作数据库查看表结构出现类似的报错

can not create to file /tmp/xxx Errcode:28

以上情况均有可能是 Inode 不足引发的。可以通过 df -TH 以及 df -i 来检查硬盘容量使用及 Inode 使用情况。

Inode 占用排查及文件删除演示

以下操作为示例,用于了解 Inode 占用情况及删除方法,具体使用需根据实际情况进行调整。

1、 查看根路径下各个文件夹的文件数

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

以上代码中,/*表示在根目录查找,结果会列出每个文件夹占在用的节点数量,可以情况逐步分析。

如发现var文件夹内容过多,可以cd进入var目录再执行,只需将对应路径进行修改即可。

cd var

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

假如通过反复排查,发现/var/spool/postfix/maildrop/下有180W+文件,占用了过多的 inode ,解决方法就是在确认文件无用并可以删除的情况下,进入到对应目录中,删除对应文件夹下的文件。如进入到目标文件夹/var/spool/postfix/maildrop/下进行删除操作,但执行传统的删除命令rm通常会报错,提示参数列表过长。原因是文件太多了。

换种方式进行删除,如下所示,但一定要注意,先cd到需要删除的目录下,然后再执行删除操作

# 一定要先进入要删除的目录下
cd /var/spool/postfix/maildrop/ 

# pwd命令可以显示当前路径
pwd

# 一定要先确认当前路径再执行删除操作
find . -name "*" | xargs rm -rf 

再次强调,一定要注意,先cd到需要删除的目录下,然后再执行删除操作

小结

索引节点(inode)是文件系统中的核心概念之一。它是文件系统中的关键数据结构,因此,理解和掌握与inode相关的知识是非常重要的。特别是需要明确区分存储空间不足和系统inode不足两种不同的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机-红外遥控器(NEC标准)

作者:Whappy 时间:2024.9.20 总结一下!基础实验到这儿里就圆满结束,历经25天,将51单片机学完并亲自手敲代码近5000行,在手敲代码过程中,明显感觉的看和敲,明显就是不同的感觉&…

基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程

源码简介: 这是一款基于PHP开发的CRM管理系统源码,全称客户关系管理CRM系统源码,它是由php源码开发的,还附带了一整套详细的安装教程哦! 功能亮点: 1、公海管理神器:不仅能搞定公海类型&…

阿里开源多模态大模型Ovis1.6,重塑出海电商AI格局

阿里开源Ovis1.6:多模态领域再夺第一 阿里再一次证明了自己在多模态领域的实力。这一次,阿里国际AI团队开源的多模态大模型Ovis1.6,不仅成功开源,还在多模态评测基准OpenCompass上击败了Qwen2VL-7B、InternVL2-26B和MiniCPM-V-2.…

springboot jar包瘦身

现在的项目结构是业务包引用comomn包,common包里又引用了很多其他的jar包,导致业务包打包出来动则就是一百甚至两百兆,现在要做到把公共的包放出来,放到一个单独的文件夹,业务包里只放业务代码。 现在只需要修改maven …

Python 操作 Arduino 入门

本文翻译整理自:Arduino With Python: How to Get Started https://realpython.com/arduino-python/ 文章目录 一、Arduino平台1、Arduino硬件2、Arduino软件 二、“Hello, World!”与Arduino1、上传眨眼示例草图2、连接外部组件3、使用面包板 三、“Hello, World!”…

【Day02-JS+Vue+Ajax】

1. JS介绍 在前面的课程中,我们已经学习了HTML、CSS的基础内容,我们知道HTML负责网页的结构,而CSS负责的是网页的表现。 而要想让网页具备一定的交互效果,具有一定的动作行为,还得通过JavaScript来实现。那今天,我们就…

Charles抓包工具测试实战

总结 工作原理 主要功能 优点 安装与配置 安装 组件介绍 Charles代理设置 Charles访问控制 客户端 Windows代理设置 MacOS代理设置 IOS手机代理设置 Android手机代理设置 Charles抓包实战 分析问题 抓包 后台出了问题 抓取https数据 全是乱码 Windows证书安装 Charles ht…

项目文件配置

1. 参数配置化 1.1 问题分析 1.2 问题解决 Value 注解通常用于外部配置的属性注入,具体用法为:Value("${配置文件中的key}") 2. yml配置文件 2.1 SpringBoot提供了多种属性配置方式 2.2 常见配置文件格式对比 2.3 yml 基本语法 大小写敏…

如何利用nw.js打包vue项目

引言 最近有一个开发windows桌面应用的需求, 需要将vue项目打包成.exe文件,最好是变成可安装版(非绿色版)。特此记录一下如何通过nw.js将vue项目打包成.exe。可能这种方式不是最优,仅供大家参考! nw.js简介(以下描述来自nw.js官…

SAP abap-platform-rap-opensap 使用 ABAP RESTful 应用程序编程模型 (RAP)构建应用程序

openSAP 课程“使用 ABAP RESTful 应用程序编程模型 (RAP) 构建应用程序”的示例。 Description This repository offers optional hands-on exercises for the free openSAP Course Building Apps with the ABAP RESTful Application Programming Mode…

【已解决】华为AR100-S路由器 恢复出厂后,找不到5G wifi的设置

前两帖讨论了华为AR100-S路由器: 一是用电脑浏览器访问web管理界面报错的解决,详情点这里! https://blog.csdn.net/weixin_62598385/article/details/142215136 再就是如何回复出厂,也即如何复位, 详情点这里&#xff…

计算机网络nat 映射案列

1 拓扑案列 2 配置 pc 访问外网 # interface LoopBack192 ip address 192.168.1.1 255.255.255.0 # interface Vlan-interface1 ip address 10.1.1.1 255.255.255.0 # # ip route-static 0.0.0.0 0 10.1.1.2 # local-user admin class manage password hash $h$6$0XD4lC…

前端组件库

vant2现在的地址 Vant 2 - Mobile UI Components built on Vue

sqli-lab靶场学习(四)——Less11-14(post方法)

前言 第1-10关都是get方法,本关开始进入post方法。其实post也好get也好,本质都差不多,使用的技巧也基本相同。 Less11 第11关打开是一个输入用户名密码的界面 显然登陆对话框会使用post方式提交,这里我们尝试在Username一栏通过…

【软件基础知识】什么是 API,详细解读

想象一下,你正在使用智能手机上的天气应用。你打开应用,瞬间就能看到实时天气、未来预报,甚至是空气质量指数。但你有没有想过,这些数据是如何神奇地出现在你的屏幕上的?答案就在三个字母中:API。 API,全称Application Programming Interface(应用程序编程接口),是现代软件世…

大数据最新面试题(持续更新)

2024大数据面试题 什么是Hbase?它与Hadoop的关系是什么? Hbase是一个开源的分布式数据库,基于Hadoop的HDFS,用于大数据存储和处理。它提供了高性能的读写能力和可扩展性。 Hbase的架构是什么? Hbase的架构由Region…

C++11——lambda

lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。 场景: 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…

大模型推理性能优化

LLM 推理的核心指标 首 Token 延迟(决定了用户体验) 延迟:从输入到输出最后一个 token 的延迟 吞吐量:每秒针对所有请求生成的 token 数(针对所有并发请求) 推理的性能卡点 1. KV-Cache 大小导致并发能力受限 LLM推理的过程是一个自回归的过程,前 i 次的token会作为…

秒懂Linux之共享内存

目录 共享内存概念 模拟实现共享内存 创建key阶段 ​编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)

这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式: boundHashOps方法通过Redi…