文件系统概述
一、什么是文件系统?
除去支持Linux本身的文件系统Ext2外,Linux还得支持其他不同的文件系统,即对各种不同文件系统的操作和管理纳入到一个统一的框架中。用户程序可以通过同一个文件系统操作界面,也就是同一组系统调用,对各种不同的文件系统进行操作。对用户程序隐去各种不同文件系统的实现细节,为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,这就是所谓的“虚拟文件系统”。
基本概念:
文件:一组在逻辑上具有完整意义的信息项的系列。
目录:好比一个文件夹,容纳相关文件。
目录项:在一个文件路径中,路径中的每一部分都被称为目录项。
索引节点:用于存储文件的元数据的一个数据结构。包含文件的大小、拥有者、创建时间、磁盘位置等和文件相关的信息。
超级块:用于存储文件系统的控制信息的数据结构。描述文件系统的状态、文件系统类型、大小、区块数、索引节点数等。
二、file_operations数据结构:
每个文件系统都有自己的file_operations结构,由图中可以看出结构中的成分大多为指针,所以可以把这个结构理解为函数跳转表,例如read就指向具体文件系统用来实现读文件操作的入口函数。如果具体的文件系统不支持某种操作,则结构中相应的函数指针就是NULL。
LINUX文件系统逻辑结构图: