Linux中的inode到底是什么

Linux中的inode到底是什么,第1张

要了解 Linux *** 作系统上的 inode 前,我们先来说说 Linux *** 作系统上的文件。对于 Linux *** 作系统而言,[一切皆文件]。而文件是无法独立于存储介质(这里指的是物理磁盘或内存、闪存等)存在的,一切 *** 作系统上的文件都无时无刻不在和存储介质打交道。

例如,读取文件时需要将文件从磁盘中加载到内存中,当文件 *** 作结束后,文件又会被存储到磁盘中。那么,既然文件要被存储到磁盘中,而磁盘是有容量限制的,那么也就是说磁盘上能存放的物理文件的数量是有限的。

如果你已经理解了这一个观点,那么恭喜你,你大体上已经知道了 inode 是干什么的。

没错, inode 是用来标识 *** 作系统的文件的一个特征描述,而且 *** 作系统上的 inode 并非无穷无尽,通常在你安装 *** 作系统后,系统上的 inode 数量就已经确定了下来(不过,你可以动态修改 inode 的数量)。

你可以通过 sysctl -a 查询系统上的 inode 数量。

如上, fs.inode-nr 中的 70212 标识当前 *** 作系统已分配的 inode 数量;21785 表示单前 *** 作系统剩余空闲的 inode 数量

刚刚说过, inode 是用来标识文件的一个特征,这是为什么呢?

Linux 系统为每一个文件都分配了一个 inode 编号,这个编号中记录了文件相关的一些元信息,通过这些元信息可以用来唯一标识一个文件。

你可以通过 ls -i 查看任意一个文件的 inode 编号

而要查看文件的元信息,你需要使用 stat {filename}

如上,即为一个文件的 inode 信息。这其中包含:

事实上,刚刚通过 stat logrotate.man 中还包括一个字段 硬链接:1 。

为什么硬链接会出现在 inode 信息中?

一般情况下, *** 作系统中一个文件对应一个 inode ,但是这种规则却不适用于 硬链接 文件。盖因Linux *** 作系统上,允许多个文件指向同一个 inode 编号。(参考自: 理解inode - 阮一峰的网络日志 (ruanyifeng.com) )

硬链接场景下,可以使用不同的文件名访问同一个文件的内容,对文件内容、属性等的修改会传递到其他文件。但删除一个链接文件,并不影响其他文件的访问。

例如,建立 logrotate.man 的硬链接文件

建立硬链接后,通过 stat 可以看到 硬链接的数量变为 2 了。

这个时候我们删除原始的链接文件,查看链接后的文件内容

删除硬链接的原始文件后,可以成功读取链接后的文件内容,此时,硬链接数量又变为了 1。

出现这种情况的原因在于,硬链接实际上是对文件增加了一个索引,这个索引指向文件的 inode 编号。当硬链接的数量大于 1 时,说明该文件除去自身外,还有多个硬链接。当硬链接的数量等于 0 时,此时 *** 作系统已经没有任何文件指向该 inode ,也即是 *** 作系统会回收 inode 。

事实上,每删除一个文件,是对该文件硬链接数的「减一」 *** 作。当文件的硬链接数归 0 时,这个文件会被 *** 作系统彻底清除掉。

最后,通常情况下, *** 作系统分配的 inode 数量是完全够用的,但出于一些程序或人为的意外可能会导致 *** 作系统的 inode 溢出,你可以通过 df -ih 查看系统分区下 inode 的使用情况以便及时作出应对措施。

node这个词大多资料都是译为索引节点,在ext3文件系统,调整磁盘的inode number。这里只是调整inode number这个参数,如果想调整inode size或是blocksize等可以具体查看mkfs.ext3命令。

磁盘 inode 一般用于大量小文件的存储中消耗较快

#>umount /data0

#>mkfs.ext3 /dev/sda6 -N ”inode节点数“

#>vi /etc/fstab

/dev/sda6               /data0                  ext3    defaults        1 2

#>mount -a

#>dumpe2fs -h /dev/sda6 | grep node

[注意]调整inode数会格式化磁盘,执行前应确定磁盘上没有重要数据或是先备份数据

mkfs.ext3的与inode相关的参数介绍

       -i bytes-per-inode

              Specify the bytes/inode ratio.   mke2fs  creates  an  inode  for

              every  bytes-per-inode  bytes  of space on the disk.  The larger

              the bytes-per-inode ratio, the fewer  inodes  will  be  created.

              This  value generally shouldn?? be smaller than the blocksize of

              the filesystem, since then too many inodes  will  be  made.   Be

              warned  that is not possible to expand the number of inodes on a

              filesystem after it is created, so be careful deciding the  cor-

              rect value for this parameter.

       -N number-of-inodes

              overrides the default calculation of the number of  inodes  that

              should  be  reserved  for  the filesystem (which is based on the

              number of blocks and the bytes-per-inode  ratio).   This  allows

              the user to specify the number of desired inodes directly.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7185669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存