最近在架设 spnfs 过程中发现。在 client 上创立文件,文件名以及目录关系都能够在 MDS 上体现进去。文件内容则存储在 DS 上。但 DS 上的文件名却都是由数字组成的。命名形式为:inode.xxxx. 对于 inode,Sam 刚开始认为是 kernel 的 node 概念。起初查了一下,发现如同有误差。于是学习之。
在 Linux 下,应用 mkfs.ext3 时,有不少选项和 inode 无关。如:
[-i bytes-per-inode]
[-I inode-size]
[-N number-of-inodes]
那 inode 是做什么用的呢?inode 记录档案(文件或目录)的属性、及该档案搁置在哪一个 Block 之内的信息。
每个档案都会占用到至多一个 inode。而当咱们 Linux 零碎要找到这个档案时,他会先去搜查 inode table 找到这个档案的属性及数据搁置的地区,而后再到数据库去找到数据寄存的 Block 进而将数据取出。
一个 partition 格式化为一个 filesystem 之后,他肯定会有 inode table 与 data area 两个区块,一个用来记录档案的信息与该档案搁置的 block 区块,一个用来记录档案的内容。
Linux 在读取数据的时候,是先查问 inode table 以失去数据是放在那个 Block 外面,而后再去该 Block 外面读取真正的数据内容。block 是咱们在格式化硬盘的时候规定进去的一个值,这个 block 是由 2 的 n 次方个 sector(扇区,大小为 512byte)所集结而成的, 假如 block 布局为 4KBytes,则因为一个 inode 与一个 block 最多均只纪录一个档案,所以如果一个档案有 0.1 K bytes。然而,因为你的 block 为 4K bytes。你就会有 3.9 Kbytes 的空间“节约掉”!所以,当你在格式化硬盘的时候,请千万留神到您的零碎的应用范畴。
1、当 block 越小 (最小为 0.5K)、inodes 越多,可利用空间越多,然而大档案写入效率较差:适宜档案数量多然而
档案容量小的零碎,例如 BBS 或者新闻群组 news 这方面的服务之零碎;
2、当 block 越大 (最大可到 16 * 0.5K 以上)、inodes 数越少,大档案写入效率较佳,但节约的空间较多:适宜档案容量大的零碎。
inode table 是 data area 的索引表。
参考链接:
2 Ways to check inode in Linux