码迷,mamicode.com
首页 > 系统相关 > 详细

辛星浅析Linux中的inode

时间:2015-02-17 12:55:28      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:linux   文件系统   inode   辛星   

    要说inode,还得首先从硬盘的物理格式说起,硬盘的最小存储单位是扇区,也就是sector,每个扇区存储512个字节。而一般文件系统都会有自己的最小读写单位,它就是block,一般可以有1KB、2KB、4KB等几种,现在比较常见的是4KB的,也就是连续的八个sector组成一个block。

   文件的具体数据是存储在block中的,于是我们想找到这些block,就需要存储它们的元信息啦,于是就有了inode,也有人称为索引节点,我们可以用stat  filename 的方式来查看一个文件的inode信息,它主要包含文件的字节数、文件的UID、文件的GID、文件的读写执行权限、文件的时间戳、文件的链接数和文件的block的位置。值得注意的是每个文件都必须有一个inode,因此有可能发生inode用光的情况,如果此时的磁盘还未存满,那么也无法在磁盘上重新创建文件了。我们可以用ls 的-i参数来查看具体的inode值。

    因为inode中保存了一定的数据信息,因此inode也需要占据一定的磁盘空间,在格式化硬盘的时候,操作系统自动将硬盘分成两个区域,一个是数据区,一个是inode区。每个inode节点的大小,一般是128字节或256字节。而inode节点的总数,它是在格式化的时候就已经给出了,一般没1KB或者2KB就设置一个inode。

    在*nix系统中,目录也是一种文件,目录的结构也很简单,它就是一系列目录项的列表,它由两部分组成:所包含的文件名,以及该文件名对应的inode号码。而且每个目录在被创建时,会默认生成两个目录项.和.. 前者的inode号码就是当前目录的inode号码,等同于当前目录的硬链接,而后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的硬链接,因此,任何一个目录的硬链接总数,总是等于2加上他的子目录总数,这里的子目录是包含隐藏目录的,这里的2就是父目录对其的硬链接和当前目录下的.硬链接。

   如果源文件与目标文件都指向同一个inode,那么他们就是互为硬链接,而inode信息中有一项叫做链接数,它记录指向该inode的文件名总数,如果我们删除一个文件名,则inode节点中的链接数会减少1,当这个值减少为0的时候,系统会收回这个inode号码,以及其所对应的block区域。

   如果文件名包含特殊字符而难以删除时,我们可以直接删除其inode值来删除文件。如果文件被移动或者重命名的时候,只是改变文件名,不影响inode号码。当我们打开一个文件之后,系统就会用inode来识别该文件了,它不再考虑文件名,因此系统无法从inode来得到文件名,但是可以从文件名来找到inode。

辛星浅析Linux中的inode

标签:linux   文件系统   inode   辛星   

原文地址:http://blog.csdn.net/xinguimeng/article/details/43865857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!