且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

inode节点与硬链接概念详解

更新时间:2021-12-25 07:55:24

一、inode节点理解


inode(索引节点):存储文件元信息的区域


扇区:在linux系统中,最小的存储单位,通常为512字节(0.5kb)


block:linux系统中文件最小的存取区域(操作系统读取硬盘时,一次性连续读取多个扇区,即一次性读取一个块),每个块中通常包含8个扇区,大小为4k


1、看完上面三个名词的解释后,再来看看inode的作用:


1.1、文件数据在块中(一次性可占用多个扇区,且最小占用一个块),那么文件的元信息(创建者、创建日期、大小等)需要找一个地方来储存,这个储存区域就是inode(俗称索引节点),每个文件都有一个inode来存储文件的元信息


1.2、一般inode节点中储存有如下信息:


  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置


1.3、命令:stat  +  文件名,查看某个文件的inode信息


1.4、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命令。



2、再来看看linux系统读取文件的过程:


     2.1、系统找到这个文件名对应的inode号码


     2.2、系统根据这个inode号码读取文件的元信息


     2.3、根据inode信息,找到文件数据所在的block,读出数据



二、硬链接概念理解


我们知道,一般情况下,文件名与inode是一一对应的关系(然而事实上系统只会识别文件的inode号,而所谓的文件名不过是我们为inode定义的别名),但是在linux系统中,可以出现多个文件名对应一个inode号的情况,这就是所谓的硬链接。


命令:ln   文件名1   文件名2

该命令便可以创建硬链接,这样便使多个文件名对应一个inode,如果修改其中一个文件的内容,其他的文件内容会相应改变,但是如果删除其中一个文件,则不影响另一个文件的访问。


最后,我们可以通过删除inode节点来删除因为某些原因无法删除的文件


命令:  rm    `find   ./-inum   388666`

本文转自奇迹的少年博客51CTO博客,原文链接http://blog.51cto.com/raffaelexr/1719726如需转载请自行联系原作者


liliangchun