简述inode

inode的好处

inode也叫"索引节点",每个文件都有一个独一无二的inode号,通过这个inode号操作系统就可以轻松的找到文件数据所在的位置。

理解inode我们可以通过理解操作系统如何创建文件和如何找到文件的过程,先了解一下磁盘的概念

===============================================================

在这里插入图片描述
在这里插入图片描述

磁盘由许多盘片叠起来组成
每个盘片有两面
每面有许许多多的同心圆,每个同心圆叫做一个柱面
每个同心圆之间是有一定距离的
柱面(同心圆)其实也不是一个连续的圆,这个圆分成了多个圆弧
这个圆弧我们叫扇区
每个扇区的数据我们规定是512字节
对于磁盘读取数据是以扇作为单位的,也就是说磁盘读取数据的时候就算只需要某个扇区的一个字节的数据,也需要把整个扇区读完
而对于文件系统,是以块作为单位的,而块是由多个扇组成

根据硬盘的规格不同,磁道数可以从几百到成千上万不等。每个磁道可以存储数Kb的数据,但是计算机不必要每次都读写这么多数据。因此,再把每个磁道划分为若干个弧段,每个弧段就是一个 扇区 (Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定。也就是说,即使计算机只需要某一个字节的数据,但是也得把这个512个字节的数据全部读入内存,再选择所需要的那个字节。虽然扇区从里面到外面面积越来越大,但是它们的容量是一样的;貌似后来技术更加先进了,把外面的大面积扇区又劈成了更小的块。

文件系统是以块为单位的,对于每个块而言,它可以分成5个部分

超级块:

是存储对应文件系统元数据的结构,存储的元数据包括包括文件系统大小,块大小,以及空闲及已使用的块的数量inode表的大学及位置等

inode表:

存放文件的信息如文件大小,所有者,最近修改时间等

数据区:

存放文件的内容

inode位图表:

管理存储属性的内存

数据位图表:

管理存储数据的内存

================================================================

有了这些概念后,就可以谈一谈文件的创建过程,当操作系统创建一个文件的时候,操作系统首先寻找到一个空闲的inode号
在这里插入图片描述

创建一个文件时,在文件系统中发生的故事

操作系统 : 好啦,我准备创建一个文件了,文件名叫做myfile是吧,我去系统里找一个空闲的inode号,好啦,找到了,这个叫做123的inode号在inode表里面没有和它有映射关系的文件名,现在myfile这个文件名就和123组成映射关系了。 (当然这个映射关系还要存到当前目录中)
操作系统:现在我要把这个映射关系存到inode表中,我得先看一下inode表中还有没有地方可以存呀(操作系统掏出了inode位图表,这个表中记录inode表中哪些地方还没存东西),找到了。(inode号和文件名的映射关系被存到inode表中,同时inode位图表中把已经使用的空间标记)
操作系统:文件名字和inode号ok了,现在再往inode表中存一些文件的其他属性信息,现在要存文件的数据了,我找一下数据区里哪些地方可以存数据(掏出了数据位图表)
找到了。(然后操作系统在数据区中选择了多个空闲的数据块,存下了数据,并把数据块的编号存到了inode表中,同时两个位图标记已经使用了的空间)
操作系统:把文件的数据存好了,文件的一些属性比如文件大小,访问时间,拥有者,等信息也要存到inode表中哈。

寻找一个文件时,在文件系统中发生的故事

首先我们要知道目录也是一个文件
在操作系统中,一切皆文件
目录中储存了文件的路径信息和文件名以及文件对应的inode信息。
当我们给操作系统一个文件名的时候

操作系统:给我文件名是吧,inode表中不是存了一些文件名和inode号的映射关系嘛,通过文件名我就可以找到文件对应的inode号了呀,这个文件使用的数据块列表肯定就在存映射关系的边上呗,那么我就找到文件的数据了。现在我就找到文件了,也找到文件中的数据了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章