【Linux】Linux 文件系统——关于inode 不足的相关案例
ℹ️大家好,我是练小杰,今天周二了,明天星期三,还有三天就是星期五了,坚持住啊各位!!!😆
本文是对之前Linux文件权限中的inode号进行实例讨论,看到博客有错误欢迎指正,谢谢各位的支持🙏前情回顾: 【剖析Linux文件权限概念,文件类型和inode号】
Linux专栏:🔝 【Linux零基础开始】【Shell 脚本编程】 【文件权限专栏】主页:👉【练小杰的CSDN】
inode案例
- 主页:👉【[练小杰的CSDN](https://blog.csdn.net/weixin_55767624?spm=1011.2415.3001.5343)】
- 前言
- 案例1
- 主要问题
- 查找原因
- 解决方案:
- 步骤1
- 步骤2
- 步骤3
- 案例2
- 初步排查
- 详细排查命令
- 使用 `df -h` 查看磁盘使用情况:
- 使用 `df -i` 查看inode使用情况:
- 再查找根分区中占用inode较多的目录:
- 分析 `/var/spool/postfix/maildrop` 目录
- 解决方案
- 1.清理 /var/spool/postfix/maildrop 目录中的临时文件
- 2. 优化Postfix配置
- 3.使用软链接(可选)
- 预防措施
前言
前两天我们详细分析了Linux系统的基本权限,文件类型和inode号,首先回顾一些必备的概念及其命令!!!再通过一些案例,解决关于 Linux 文件系统中 inode 不足的问题。
-
inode
: inode(索引节点)是文件系统中的一个数据结构,用于存储文件或目录的基本信息。每个文件和目录都有一个唯一的 inode 号。 inode 存储的信息包括文件大小、权限、所有者、时间戳等,但不包含文件名。 -
df -h
:用于显示文件系统的磁盘使用情况,以可读的格式(例如 GB、MB)显示。比如,df -h
的输出可能如下:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 10G 9.5G 50% /
/dev/sdb1 50G 30G 18G 65% /data
df -i
:用于显示文件系统的inode
使用情况,df -i
的输出可能如下:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1310720 655360 655360 50% /
/dev/sdb1 3276800 3276800 0 100% /data
- 软链接:软链接(
Symbolic Link
)是一种特殊类型的文件,它指向另一个文件或目录的路径。 创建软链接的命令是ln -s 目标路径 链接路径
案例1
主要问题
在一台配置较低的 Linux 服务器上,由于
/data
分区的 inode 已满,导致无法创建新文件和目录。通过df -h
命令发现/data
分区还有 12G 的剩余空间,但df -i
命令显示 inode 已满(IUsed=100%)。
查找原因
/data/cache
目录中存在大量的小字节缓存文件,这些文件占用的Block
不多,但占用了大量的inode
。
解决方案:
步骤1
删除
/data/cache
目录中的部分文件,释放出/data
分区的一部分inode
。
- 首先,检查
/data/cache
目录中的文件数量和大小
# 查看 /data/cache 目录中的文件数量
ls -l /data/cache | wc -l# 查看 /data/cache 目录中的文件大小
du -sh /data/cache
- 选择性地删除部分缓存文件
rm /data/cache/部分文件
步骤2
用软链接将空闲分区
/opt
中的newcache
目录连接到/data/cache
,使用/opt
分区的
inode
来缓解/data
分区 inode 不足的问题。
- 创建软链接,将
/opt/newcache
目录链接到/data/cache
# 创建软链接
ln -s /opt/newcache /data/cache
步骤3
验证结果,验证 inode 使用情况是否恢复正常。
-
查看 inode 使用情况
df -i
案例2
在一个运行多个Web应用程序的
Linux
服务器上,管理员发现其中一个应用程序无法生成新的日志文件。尽管服务器的磁盘空间看起来还很充裕,但应用程序持续报错,提示“磁盘空间不足”。经过初步排查,管理员怀疑可能是inode耗尽的问题。
初步排查
- 使用
df -h
命令查看磁盘使用情况,发现根分区 / 还有50GB
的剩余空间。 - 使用
df -i
命令查看inode使用情况,发现根分区的inode
已经用满(IUsed=100%)。
详细排查命令
使用 df -h
查看磁盘使用情况:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 50G 45G 52% /
/dev/sdb1 200G 150G 45G 78% /data
由输出可以看出,根分区 / 还有45GB的可用空间,磁盘空间看起来充足。
使用 df -i
查看inode使用情况:
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 6553600 6553600 0 100% /
/dev/sdb1 13107200 500000 12607200 4% /data
由输出可知,根分区的
inode
已经用满(IUsed=100%),而/data
分区的inode使用率仅为4%
。
再查找根分区中占用inode较多的目录:
通过以下管道查询命令查找根分区中占用inode较多的目录。
[root@localhost ~]# for i in /*; do echo $(ls -1 $i | wc -l) $i; done | sort -nr | head -n 20
该命令会列出根分区下每个子目录中的文件数量,并按数量排序。通过分析输出,发现
/var/spool/postfix/maildrop
目录中包含了大量的零碎小文件。
分析 /var/spool/postfix/maildrop
目录
- 利用
cd
命令进入该目录并查看文件数量。
[root@localhost ~]# cd /var/spool/postfix/maildrop
[root@localhost maildrop]# ls -l | wc -l
6000000
该目录中包含了600万个文件。这些文件是
Postfix
邮件队列中的临时文件,由于某种原因,这些文件没有被及时清理,导致inode耗尽。
解决方案
1.清理 /var/spool/postfix/maildrop 目录中的临时文件
- 使用以下命令清理邮件队列中的临时文件:
[root@localhost maildrop]# postsuper -d ALL
或者使用 find
命令删除特定时间段之前的文件:
[root@localhost maildrop]# find /var/spool/postfix/maildrop -type f -mtime +7 -exec rm {} \;
⚠️注意:在删除文件之前,建议先备份重要数据,并确认这些文件确实不需要。
2. 优化Postfix配置
为了防止未来再次出现类似问题,可以优化Postfix的配置。
- 调整邮件队列的保留时间:通过修改
maximal_queue_lifetime
参数,缩短邮件在队列中的保留时间。 - 启用自动清理机制:配置
Postfix
的自动清理功能,定期删除过期的邮件队列文件。
3.使用软链接(可选)
若根分区的inode已经耗尽,且无法通过清理文件来释放,可以考虑将某些目录移动到
inode
充足的分区,并使用软链接进行连接。如下命令所示,可以利用/opt
分区的inode资源,缓解根分区inode
不足的问题。
[root@localhost ~]# mv /var/spool/postfix/maildrop /opt/maildrop
[root@localhost ~]# ln -s /opt/maildrop /var/spool/postfix/maildrop
预防措施
-
定期监控inode使用情况:
使用df -i
命令定期检查inode使用情况,及时发现和解决潜在问题。 -
配置日志轮转:
配置日志轮转工具(如logrotate
),定期清理和压缩日志文件,防止日志文件占用大量inode。 -
优化应用程序:
检查和优化应用程序的日志记录机制,避免生成过多的零碎小文件。 -
使用更高效的文件系统:
考虑使用支持更大inode数量的文件系统(如XFS
),以减少inode耗尽的风险。
今天的Linux系统中有关文件权限内容到这里就结束了,感谢各位朋友的陪伴👋
ℹ️了解更多,主页【练小杰的CSDN】
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!!
下周同一时间再见,各位伙伴们🚴🏻♀️~~
相关文章:

【Linux】Linux 文件系统——关于inode 不足的相关案例
ℹ️大家好,我是练小杰,今天周二了,明天星期三,还有三天就是星期五了,坚持住啊各位!!!😆 本文是对之前Linux文件权限中的inode号进行实例讨论,看到博客有错误…...

k8s集群如何赋权普通用户仅管理指定命名空间资源
文章目录 1. 普通用户2. 创建私钥3. 创建 CertificateSigningRequest4. 批准 CertificateSigningRequest5. 创建 kubeconfig6. 创建角色和角色绑定7. 测试 1. 普通用户 创建用户demo useradd demo2. 创建私钥 下面的脚本展示了如何生成 PKI 私钥和 CSR。 设置 CSR 的 CN 和 …...

工控网络安全介绍 工控网络安全知识题目
31.PDR模型与访问控制的主要区别(A) A、PDR把对象看作一个整体 B、PDR作为系统保护的第一道防线 C、PDR采用定性评估与定量评估相结合 D、PDR的关键因素是人 32.信息安全中PDR模型的关键因素是(A) A、人 B、技术 C、模型 D、客体 33.计算机网络最早出现在哪个年代(B) A、20世…...

AIGC(生成式AI)试用 21 -- Python调用deepseek API
1. 安装openai pip3 install openai########################## Collecting openaiUsing cached openai-1.61.1-py3-none-any.whl.metadata (27 kB) Collecting anyio<5,>3.5.0 (from openai)Using cached anyio-4.8.0-py3-none-any.whl.metadata (4.6 kB) Collecting d…...
跨平台AES/DES加密解密算法【超全】
算法说明 要实现在 WinForm、Android、iOS、Vue3 中使用 相同的算法,确保各平台加密结果互通 一、统一加密参数 算法: AES-256-CBC 密钥: 32字节(示例中使用固定字符串生成) IV: 16字节 填充模式: PKCS7 字符编码: UTF-8 输出格式: Base64二、各平台实现代码...
Webpack 基础入门
一、Webpack 是什么 Webpack 是一款现代 JavaScript 应用程序的静态模块打包工具。在 Web 开发中,我们的项目会包含各种类型的文件,如 JavaScript、CSS、图片等。Webpack 可以将这些文件打包成一个或多个文件,以便在浏览器中高效加载。它就像…...

deepseek-v3在阿里云和腾讯云的使用中的差异
随着deepseek在各大云商上线,试用了下阿里云和腾讯云的deepseek服务,在回答经典数学问题9.9和9.11谁大时,发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…...

Mathtype安装入门指南
Mathtype安装入门指南 1 mathtype安装及补丁2 mathtype在word中加载3 常见的mathtype快捷命令4 实列测试 1 mathtype安装及补丁 下载相应的Mathtype7.4软件安装包,百度网盘链接为: 百度网盘链接下载完成后,有三个软件,如下图所示…...
使用 Apache PDFBox 提取 PDF 中的文本和图像
在许多应用中,我们需要从 PDF 文件中提取文本内容和嵌入的图像。为了实现这一目标,Apache PDFBox 是一个非常实用的开源工具库。它提供了丰富的 API,可以帮助我们轻松地读取 PDF 文件、提取其中的文本、图像以及其他资源。 本文将介绍如何使…...

【js逆向_入门】图灵爬虫练习平台 第四题
(base64解码)地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNC8 请求接口带有加密参数: 全局搜索Sign,找到参数生成位置 一目了然,知道参数是怎么构造生成的 调试代码 测试验证思路是否正确 时间: …...

Redis7——基础篇(三)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二) 接上期内容:上期完成了Redis的基本…...

深度学习中的知识蒸馏
大家好,我是小青 今天给大家分享神经网络中的一个关键概念,知识蒸馏 知识蒸馏(Knowledge Distillation)是一种模型压缩技术,旨在将大型、复杂的模型(通常称为教师模型)的知识迁移到小型、简单…...

【Windows软件 - HeidiSQL】导出数据库
HeidSQL导出数据库 软件信息 具体操作 示例文件 选项分析 选项(1) 结果(1) -- -------------------------------------------------------- -- 主机: 127.0.0.1 -- 服务器版本: …...

苏剑林“闭门造车”之多模态思路浅谈思考
原文来自科学空间苏剑林 “闭门造车”之多模态思路浅谈(一):无损输入和“闭门造车”之多模态思路浅谈(二):自回归,学习后总结。 文章目录 “闭门造车”之多模态思路浅谈(一ÿ…...

绿联nas docker 安装 rocketmq 队列。亲测可用
首先拉取docker 镜像,所需镜像如下: 安装 nameserver docker run -d -p 9876:9876 \ -v ${HOME}/docker/software/rocketmq/data/namesrv/logs:/opt/logs \ -v ${HOME}/docker/software/rocketmq/data/namesrv/store:/opt/store \ --name rmqnamesrv \ …...
C++(23):unreachable
C++23在头文件 "><utility>定义了std::unreachable(),用于指示编译器,该段代码不应该被允许,因此编译器可以对该位置进行优化,如果一旦允许了该位置的代码,行为未定义: #include <utility> #include <iostream>using namespace std;int func(…...
初等数论--欧几里得算法
1. 定义 u 0 u 1 ∈ Z , u 1 ≠ 0 , u 1 ∤ u 0 u_0\ u_1\in Z,u_1 \ne0,u_1 \nmid u_0 u0 u1∈Z,u10,u1∤u0 根据带余除法可得下面一系列等式 u 0 q 0 u 1 u 2 0 < u 2 < ∣ u 1 ∣ u 1 q 0 u 2 u 3 0 < u 3 < u 2 ⋯ u k − 1 q k − 1 u k …...
阿里云前端自动化部署流程指南
本文详细介绍从前端代码开发到阿里云 OSS/CDN 自动化部署的完整流程。 一、流程概览 © ivwdcwso (ID: u012172506) 1.1 部署流程图 #mermaid-svg-H1LBBmwTHAAF3QTL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermai…...

EXCEL解决IF函数“您已为此函数输入太多个参数”的报错
IF函数的基本结构是IF(条件, 值为真时的结果, 值为假时的结果),所以标准的IF函数最多只能有三个参数。当用户输入的参数超过三个时,Excel就会报这个错误。比如多个IF语句叠加,但可能在嵌套的过程中没有正确关闭每个IF函数的括号,导…...

CAS单点登录(第7版)18.日志和审计
如有疑问,请看视频:CAS单点登录(第7版) 日志和审计 Logging 概述 Logging CAS 提供了一个日志记录工具,用于记录重要信息事件,如身份验证成功和失败;可以对其进行自定义以生成用于故障排除的其他信息。…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...