Inode与block详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Inode与block详解相关的知识,希望对你有一定的参考价值。

inode和block详解

inode是什么?

  • inode即为index node,就是索引节点
  • inode表中包含文件系统所有文件列表
  • 一个节点是在一个表项,包含了有关文件的信息(元数据)。
  • 一个文件有且只有一个inode
  • inode中包含12个直接指针,1个间接指针,1个双间接指针,1个三间接指针
    元数据(medata)即文件的属性信息,包括文件的类型、权限、owner、group、链接数、三个时间戳,文件大小、扩展属性,block指针

block是什么

  • 文件数据存储在block中
  • 每块block只能存储一个文件
  • block 文件系统的最小存储单位是 1k,2k,4k,2^n

inode与block之间的关系
由上面的定义可以知道block是用来存储文件数据的,每一个block只能存储一个文件,并且每个block都有自己的编号,当一个文件特别大的时候,存储该文件的block数量也会很大,而且,在没有inode的时候读取文件,只有当读取完上一个block的时候才会知道下一个block号,才能继续读取。这个时候因为block的数量很大,读取速度会很慢。inode的存在很好的解决了这一个问题,inode中除了存储元数据之外,还会存储block指针,当我们在读取大文件的时候,inode中的指针会迅速找出block并将其排序之后快速读取,大大提高了效率。
inode与block关系小结:
1.磁盘被分区格式化分区之后,会分为inode和block两部分
2.inode存放文件的属性以及指向文件实体的指针(block的位置)
3.superblock用来存储inode和block的全部信息,包括inode和block的大小,数量,以及block的使用情况。
4.创建了一个文件时会同时创建inode和block,inode用来存储元数据和block指针,block用来存储数据内容。
5.一个block只能被一个文件使用,所以一个block并不是越大越好,当服务器存储的小文件居多,那么block设置的小一点比较好,不会浪费空间。当服务器存储的大数据居多,block设置的大一点比较好。


目录的inode和block
在这里,我们需要清楚一个问题,对于目录而言,inode与block都存储了什么?
每个目录也都有自己的inode,其中存储的同样是目录的元数据和指针,但是目录的block不同于文件的block,其中存储的是文件名和文件名对应的inode号。当我们检索某个目录下的文件时,我们只需通过路径找到文件名,然后在block便找到与文件名对应的inode号,随之找到文件数据。
当我们在同区中复制我们的文件时,node是不变的,相当于我们又给文件又取了一个新的文件名,而新旧文件名对应的是同一个inode号;而当我们把文件复制到其他分区,就相当于创建看一个新文件,那么新文件的inode将会改变。
删除文件,同样是只是删除了文件名和inode号,存储在block的数据将会被新传进来数据覆盖。所以删除的文件我们都是可以恢复的,但是一旦又写入文件,删除的文件就会被覆盖,也就无法再回复了。


本文属于个人对inode和block的理解,叙述可能不是特别容易理解,希望多多批评指正!
要相信现在所经历的i艰难困苦都是上天做好的安排!

以上是关于Inode与block详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux inode 详解

从零开始的linux 第二十一章(Inode以及Block详解其二与软链接)

索引节点inode详解

从零开始的linux 第二十章(Inode以及Block详解其一)

blockinodesuperblock详解

(转)Linux硬链接软链接及inode详解