03
2024
07
20:32:17

linux文件系统中的inode详解

文章目录

  • 1.什么是inode?


    • 1.1 元数据存储在 inode 中

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

  • 2.文件系统中的 inode 数量


    • 2.1 Inode限制

    • 2.1 inode 耗尽的问题

  • 3. 相关的命令


    • 3.1 检查文件的inode number

    • 3.2 使用 ls 命令

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

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


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 fileDevice: fd00h/64768d    Inode: 17381397 Links: 1Access: (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/log16813380 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 -l120




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6949.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: