本文主要是介绍inode,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
inode(index node的缩写)
它存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。总之,除了文件名以外的所有文件信息,都存在inode之中。
包含以下信息
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
inode大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。
df -i
查看每个inode节点的大小,可以用如下命令:
sudo dumpe2fs -h /dev/hda | grep “Inode size”
在ext2中 inode大小为 128B 在ext4和 xfs 的大小可以设置到 256B
在 inode中记录一个数据区块要使用 4B 的大小。
若一个 inode的大小为 128B,一个数据区块大小为 1KB ,在此文件系统中,一个文件的大小最大为16GB ,计算方式如下:
在一个大小为128B的inode中可以记录 12个直接,一个间接,一个双间接,一个三间接记录区。
12个直接区:
12 * 1K = 12K
1个间接区:一个间接区指向一个数据区块,一个数据区块的大小为 1K ,记录一个数据区块要使用 4B ,因此 1K 可以记录 256 个数据区块。
256 * 1K = 256 K
1个双间区:
256 * 256 * 1K
1个三间区:
256 * 256 * 256 * 1K
上面所有的数据想加: 12K + 256K + (256 * 256 * 1K) + (256 * 256 * 256 * 1K) = 16GB
superblock 超级区块:
超级区块链是记录整个文件系统相关信息的地方,没有超级区块,就没有文件系统,他记录的信息包括:
1,数据区块和inode
2,未使用与已使用的inode与数据区块,数量
3,数据区块与inode的大小,(block 为1,2,4K, inode为128B,256B)
4,文件系统挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等文件信息。
5,一个有效位数值,若此文件系统已经挂载,则为0,若未挂载,则为1.
dumpe2fs [-bh] /dev/sda2 查看超级区块信息
这篇关于inode的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!