linux文件系统中的inode详解

本文介绍了Linux中inode的基本概念,包括其在文件系统中的作用、元数据存储、inodenumber分配与文件操作的关系。强调了监控inode数量的重要性,讨论了inode限制及其可能导致的问题,以及相关的命令如df、stat和wc用于检查和管理inode的使用情况。
摘要由CSDN通过智能技术生成


Linux 中的inode是描述文件系统中的文件和目录的唯一标识符。 关注它们很重要,避免 inode出现短缺或过度使用相关的问题。

1.什么是inode?

inode 是一种数据结构,用于跟踪 Linux 或基于UNIX 的文件系统中的所有文件和目录。 因此,文件系统中的每个文件和目录都分配有一个inode,该inode由称为"inode number"的整数标识。 这些唯一标识符存储有关每个文件和目录的元数据(metadata)。
注意:Inode”是“index node”的缩写。

同一filesystem中的所有 inode 都是唯一的。 但是,相同的inode number可以在不同的filesystem中使用。 因为filesystem ID 和每个 inode number组合起来创建唯一的标识标签。

1.1 元数据存储在 inode 中

inode存储元数据,例如:
File type
File size
Owner ID
Group ID
Read, write and execute permissions
Last access time
Last change time
Last modification time

1.2 inode number: 创建、复制、修改文件

如上所述,每个inode都由inode number来标识。 因此,当创建或复制文件时,Linux 会为新文件分配不同的 inode number。 当移动文件时,只有当文件移动到不同的文件系统时,索引节点号才会改变。 目录也是如此。

2.文件系统中的 inode 数量

了解文件系统中 inode 的数量很重要。
系统中理论上的 inode 总数约为 43 亿个。 但应该关心的数字是系统中的 inode 数量。 一般inode与系统容量的比例为1:16KB。 可以使用带 -i 选项的 df 命令检查文件系统中的 inode 数量。

2.1 Inode限制

文件系统中 inode 的总数是在创建时确定的,并且不能动态更改。 因此,定期检查 inode 使用情况以确保其调整到配置的限制非常重要。

如果尝试在服务器上创建新文件时收到以下错误消息(即使知道仍有足够的空间可用),则可能已达到系统的 inode 限制:

No space left on device

尽管在实际磁盘空间耗尽之前就用完 inode 的情况并不常见,但并非不可能。 它可能发生在以下情况:
使用容器化。
创建大量目录、符号链接(symbolic links)和小文件。
创建具有较小块大小的 ext3 文件系统。

2.1 inode 耗尽的问题

过多的inode使用可能会导致创建新文件和目录时出现问题。 当服务器耗尽 inode 时,用户可能会遇到的一些问题是:

数据丢失。
服务器重新启动。
应用程序崩溃。
排程未运行。

因此,建议通过删除以下内容来保持较低的 inode 使用率:
不需要的文件和目录。
缓存文件。
旧电子邮件文件。
临时文件。

3. 相关的命令

3.1 检查文件的inode number

使用stat命令
stat 命令提供有关文件和文件系统的信息。 可以使用它来检查文件的inode number。

[root@testsrv~]$ stat /var/log/lastlog

执行命令时,将得到以下信息:

File: /var/log/lastlog
Size: 292292     Blocks: 96 IO Block: 4096 regular file
Device: fd00h/64768d    Inode: 17381397 Links: 1
Access: (0664/rw-rw-r-) Uid: ( 0/ root) Gid: ( 22/ utmp)
Context: system_u:object_r:lastlog_t:s0
Access: 2024-01-31 11:28:19.900058928 +0100
Modify: 2024-01-12 11:28:19.900058928 +0100
Change: 2024-01-12 11:28:19.900058928 +0100
Birth: 2023-12-25 17:40:57.254208200 +0200

3.2 使用 ls 命令

还可以使用 ls 命令和 -i 选项来获取文件的inode number。 此命令列出文件系统中的文件和目录。

[root@stackscale ~]$ ls -idl /var/log
16813380 drwxr-xr-x. 18 root root 4096 Jun 6 12:33 /var/log

3.3 使用 df 命令检查文件系统内的 inode 使用情况

df 命令用于显示与文件系统的总空间和可用空间相关的信息。 因此,可以将它与 -i 选项一起使用来控制文件系统中 inode 的使用。

[root@testsrv~]$ df -i /dev/sda1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 524288 379 523909 1% /boot

Check the number of inodes in a directory using the wc command
The wc command is used to count the number of characters, words, lines and bytes of files. Together with the -l option, you can use it to count the number of inodes in a directory.

3.4 使用 wc 命令检查目录中的 inode 数量

wc命令用于统计文件的字符数、字数、行数和字节数。 与 -l 选项一起,可以使用它来计算目录中 inode 的数量。

[root@testsrv~]# find /var/log | wc -l
120
  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值