例如,读取文件时需要将文件从磁盘中加载到内存中,当文件 *** 作结束后,文件又会被存储到磁盘中。那么,既然文件要被存储到磁盘中,而磁盘是有容量限制的,那么也就是说磁盘上能存放的物理文件的数量是有限的。
如果你已经理解了这一个观点,那么恭喜你,你大体上已经知道了 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.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)