网易首页 > 网易号 > 正文 申请入驻

如何解决服务器存储 inode 耗尽的问题 | Linux 中国

0
分享至

导读:明明硬盘只用了 30% 左右的空间,但是却无法写入文件。                             

本文字数:2976,阅读时长大约: 3分钟

http://www.yanjun.pro/?p=128
作者:老颜随笔

今天群里一朋友遇到这样一个问题,明明硬盘只用了 30% 左右的空间,但是却无法写入文件。使用 df -iT 命令查看文件系统使用情况时,发现根目录的 inode 使用率竟然是 100%。后来通过聊天得知,原来他的服务器主要用于存储 1KB 左右的小文件,这一下就破案了。

inode 主要用来记录文件的属性,及此文件的数据所在的块编号。每一个文件会占用一个 inode,因此如果都是小文件的话,那么就会出现 inode 已经耗尽,但文件系统还有很大的空闲空间,从而无法写入新文件。

如何获得更多的 inode

其实在创建 ext4 文件系统时,我们可以使用 -T small 参数来获得更多的 inode,从而优化对小文件的存储。接下来我们通过一个示例来看看效果。

这是两块相同大小的硬盘:

  1. root@debian:~# lsblk

  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS

  3. sdb 8:16 0 1G 0 disk

  4. └─sdb1 8:17 0 1023M 0 part

  5. sdc 8:32 0 1G 0 disk

  6. └─sdc1 8:33 0 1023M 0 part

首先使用默认参数给 /dev/sdb1 创建文件系统:

  1. root@debian:~# /sbin/mkfs.ext4 /dev/sdb1

  2. mke2fs 1.47.0 (5-Feb-2023)

  3. Creating filesystem with 261888 4k blocks and 65536 inodes

  4. Filesystem UUID: 8935c902-df71-4808-b547-c85b6fd37a46

  5. Superblock backups stored on blocks:

  6. 32768, 98304, 163840, 229376

  7. Allocating group tables: done

  8. Writing inode tables: done

  9. Creating journal (4096 blocks): done

  10. Writing superblocks and filesystem accounting information: done

从输出中可见,该文件系统有 261888 个 4KB 大小的块和 65536 个 inode。

然后使用 -T 参数对 /dev/sdc1 创建文件系统:

  1. root@debian:~# /sbin/mkfs.ext4 -T small /dev/sdc1

  2. mke2fs 1.47.0 (5-Feb-2023)

  3. Creating filesystem with 1047552 1k blocks and 262144 inodes

  4. Filesystem UUID: f521096d-a5a1-41c9-bbf7-e6102e74e87a

  5. Superblock backups stored on blocks:

  6. 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,

  7. 1024001

  8. Allocating group tables: done

  9. Writing inode tables: done

  10. Creating journal (16384 blocks): done

  11. Writing superblocks and filesystem accounting information: done

从输出中可见,该文件系统有 1047552 个 1KB 大小的块和 262144 个 inode。

也可以通过以下方式对比两个文件系统的 inode 数量:

  1. root@debian:~# mkdir default small

  2. root@debian:~# mount /dev/sdb1 default/

  3. root@debian:~# mount /dev/sdc1 small/

  4. root@debian:~# df -iT

  5. Filesystem Type Inodes IUsed IFree IUse% Mounted on

  6. /dev/sdb1 ext4 65536 11 65525 1% /root/default

  7. /dev/sdc1 ext4 262144 11 262133 1% /root/small

从以上示例中我们可以看出,在使用 -T small 参数后,inode 数量多了近 20 万个!

注意: 这样做也是有代价的。在使用默认参数创建 ext4 文件系统时,默认数据块大小为 4KB,而使用 -T small 参数后,数据块大小为 1KB。这就意味着我们存储一个同样大小的文件,使用 -T small 参数创建的文件系统存储该数据时,占用的数据块更多,数据更分散,如果文件较大,会直接影响文件的读取速度

mke2fs(mkfs.ext4)的 -T 参数指定了如何使用该文件系统,以便 mke2fs 可以为该用途选择最佳的文件系统参数,其支持的使用类型在配置文件 ``/etc/mke2fs.conf` 中定义,可以使用逗号分隔指定一个或多个使用类型

inode 不足的解决方法

当你已有的文件系统上出现 inode 不足的问题时,除了备份数据、重建分区并恢复分区数据外,还有两种临时解决方案:

1、删除文件大小为 0 的空文件,可以使用如下命令查找:

  1. find PATH -name "*" -type f -size 0c

注意: 使用 -size 参数时,不要用 -size 1k,这个表示占用空间为 1KB,而不是文件大小为 1KB,应该使用 -size 1024c 才表示文件大小为 1KB。

2、可以定期对历史小文件进行打包、归档,以减少文件数量。

作者简介:一个喜欢瞎折腾的 IT 技术人员,懂得不多,但是喜欢和有共同兴趣爱好的朋友交流、学习

(题图:MJ/9a66155a-772e-41f1-b29d-c3d4161f7853)

via: 作者: 编辑:

本文由贡献者投稿至 ,采用 发布, 荣誉推出

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
内塔尼亚胡的死里逃生

内塔尼亚胡的死里逃生

求实处
2024-09-20 00:00:07
网友吐槽:很扯淡的假期!这才是中国劳动法下的打工人的假期…

网友吐槽:很扯淡的假期!这才是中国劳动法下的打工人的假期…

火山诗话
2024-09-30 11:22:36
震三观!哈佛博士生疯狂实验:一个月狂吃720个鸡蛋身体会怎样?结果大意外…

震三观!哈佛博士生疯狂实验:一个月狂吃720个鸡蛋身体会怎样?结果大意外…

最英国
2024-09-29 06:01:05
普京拒绝出席!中美关系一夜生变?俄没料到,中方宣布重大消息

普京拒绝出席!中美关系一夜生变?俄没料到,中方宣布重大消息

布衣的呼喊
2024-09-30 00:25:03
国家一级品酒师邹江鹏去世,年仅43岁,知情人曝原因,本人太懂酒

国家一级品酒师邹江鹏去世,年仅43岁,知情人曝原因,本人太懂酒

古希腊掌管松饼的神
2024-09-30 19:33:32
太突然,52岁女演员今日凌晨去世

太突然,52岁女演员今日凌晨去世

鲁中晨报
2024-09-30 13:49:07
A股年内最强新股!长联科技首日收涨1703.98%,中一签最高浮盈19万元

A股年内最强新股!长联科技首日收涨1703.98%,中一签最高浮盈19万元

财经网
2024-09-30 15:39:06
以色列这么猛,各路知名军事专家很着急,支持谁谁倒霉,咋办?

以色列这么猛,各路知名军事专家很着急,支持谁谁倒霉,咋办?

眼光很亮
2024-09-30 11:45:24
普京发誓:俄罗斯将在乌克兰战争中达成预定目标

普京发誓:俄罗斯将在乌克兰战争中达成预定目标

桂系007
2024-09-30 16:34:37
国家一级品酒师邹江鹏去世,年仅43岁,知情人曝死因,令人惋惜

国家一级品酒师邹江鹏去世,年仅43岁,知情人曝死因,令人惋惜

180°视角
2024-09-30 20:55:29
悍将无畏!乌军72旅上演斯巴达300勇士,女子机枪手毙敌60余人

悍将无畏!乌军72旅上演斯巴达300勇士,女子机枪手毙敌60余人

史政先锋
2024-09-30 16:51:53
自媒体疯传:内塔尼亚胡死了!疑点太多,官媒还在沉默

自媒体疯传:内塔尼亚胡死了!疑点太多,官媒还在沉默

消失的电波
2024-09-30 14:34:58
上海打响第一枪!医护薪酬要涨,官方:缩减行政、后勤人员

上海打响第一枪!医护薪酬要涨,官方:缩减行政、后勤人员

康迅网
2024-09-30 17:06:14
坦克压黎边境、战机奔袭也门,以色列兵分三路发动袭击 美增强中东军力部署

坦克压黎边境、战机奔袭也门,以色列兵分三路发动袭击 美增强中东军力部署

红星新闻
2024-09-30 17:51:22
沪深两市今日成交额合计25930亿元创历史新高,东方财富成交额居首

沪深两市今日成交额合计25930亿元创历史新高,东方财富成交额居首

界面新闻
2024-09-30 15:07:32
网传某单位国庆放假通知:9月30日17:00放假,10月1日8:00上班!

网传某单位国庆放假通知:9月30日17:00放假,10月1日8:00上班!

可达鸭面面观
2024-09-30 14:32:41
华谊总裁王中磊爆猛料,郑恺和苗苗“三年生三胎”!郑恺当场变脸

华谊总裁王中磊爆猛料,郑恺和苗苗“三年生三胎”!郑恺当场变脸

圈里的甜橙子
2024-09-30 04:11:49
35岁张檬官宣怀孕,曾多次备孕失败,被嘲讽:善有善报,恶有恶报

35岁张檬官宣怀孕,曾多次备孕失败,被嘲讽:善有善报,恶有恶报

拾娱先生
2024-09-30 16:45:31
疯狂的以色列,毁了拜登政府一盘好棋,内塔尼亚胡帮中国一个大忙

疯狂的以色列,毁了拜登政府一盘好棋,内塔尼亚胡帮中国一个大忙

说天说地说实事
2024-09-30 19:51:33
第一反应是搜查所有学生的手机,并威胁不准泄漏,才是最可怕之处

第一反应是搜查所有学生的手机,并威胁不准泄漏,才是最可怕之处

走读新生
2024-09-29 22:53:44
2024-09-30 22:40:49
Linux
Linux
Linux 中国开源社区
8016文章数 73120关注度
往期回顾 全部

科技要闻

最赚的AI公司钱也不够花 OpenAI决心"营利"

头条要闻

“老虎”李刚被查 曾在四川、云南工作

头条要闻

“老虎”李刚被查 曾在四川、云南工作

体育要闻

曼联0-3热刺:这个滕,可能真要保不住了

娱乐要闻

王楚然,悄无声息中成了年度大赢家

财经要闻

暴涨天量!今天是A股载入史册的一天!

汽车要闻

拒绝平庸 深蓝S05是台更有范儿的家用SUV

态度原创

手机
健康
时尚
数码
本地

手机要闻

高通骁龙X Elite处理器内核照曝光 搭载自研Oryon架构

花18万治疗阿尔茨海默病,值不值?

安可拉红+灰色、红色+棕色,这5组配色怎么搭都好看!

数码要闻

【IT之家评测室】苹果 AirPods 4 主动降噪款体验

本地新闻

云游中国|还有谁不知道 荆门人有属于自己的仙本那

无障碍浏览 进入关怀版