Linux:浅析文件系统

inode

当我们在终端下输入命令ls -l
Linux:浅析文件系统_第1张图片

我们发现这里显示的信息从左到右依次是文件类型、权限、硬链接数、文件拥有者、文件拥有者组、大小、最后修改时间以及文件名。

当我们使用指令 stat linklist查看具体文件的信息时:

Linux:浅析文件系统_第2张图片

会发现在这里面有了更详细的一些信息,其中在时间那一栏我们发现有三个时间:Access、Modify、Change,那这三个时间分别代表什么含义呢?

  • Access:最近访问时间
  • Modify:文件内容最近更改时间
  • Change:文件属性最近改动时间

除此之外,我们还发现在这个里面有个序列号叫做inode这个序列号是干什么的呢?

其实我们每个文件都对应一个属于他自己的inode号码,在操作系统中,由于文件名重复太多,所以利用inode号码进行对文件的识别,也就是说文件从创建开始便拥有了属于它自己的inode,而inode怎么产生的呢?这与我们文件管理系统有关。

Linux:浅析文件系统_第3张图片

我们文件管理系统大概如图所示,其中i节点中存储文件的基本信息,数据区存储文件的内容数据,超级块存放文件系统本身的结构信息。而inode就是文件i节点的编号。
比如创建一个文件,首先在超级块中查找是否有空的i节点,在检查是否在数据区内有空间,若两者都满足,那么则申请一个找到一个空的节点,这个节点的编号就是inode,然后再将文件的其他信息记录到这个i节点内,这样就将一个文件的属性信息存放完毕,接着存储数据,比如数据块100,、200、500空闲,那么将这三个数据块给这个文件,然后将文件的数据信息从内核的缓冲区内复制到这三个数据块上,依次复制,记录下文件信息的分配情况,然后将数据块100、200、500这三个信息存入至i节点上。最后再将文件名和inode号码添加至目录文件。此时问你见面和inode之间的对应关系就可以让操作系统将文件名与文件内容相联系。

硬链接

其实在操作系统中找到某一个文件的实质并不是找文件的文件名,而是去寻找inode,在LInux下,可以让多个文件对应于同一个inode,那么也就是说多个文件名可以访问到同一个inode所对应物理内存上的内容,这就叫做硬链接。

Linux:浅析文件系统_第4张图片

其中我们创建一个硬链接叫做hello.c而利用指令查看发现, test.c与hello.c的inode号码是一致的,也就是说hello.c与test.c两者可以访问同一片区域,此时就算是删除任意一个硬链接,另一个仍旧可以使用,这个方法常常用来备份某些特殊文件。

软连接

软链接的实质是相当于创建一个新的文件,然后在这个文件当中放入软链接指向内容的路径。通过这个路径找到其路径所对应的内容数据,这就是软链接。
Linux:浅析文件系统_第5张图片

我们发现,创建的软链接haha与我们的test.c的inode并不一致,这说明两者指向的内容是不同的,同时haha这个软链接实质上保存了test.c的 路径,在执行这个软链接haha的时候,相当于执行了我们的test.c


欢迎大家共同讨论,如有错误及时联系作者指出,并改正。谢谢大家!

你可能感兴趣的:(Linux)