文件系统

文件系统的架构层次包括:用户层、虚拟文件系统层、文件系统层、缓存层、块设备层、磁盘驱动层和磁盘物理层。

1、用户层

最上面用户层是日常使用的各种用户应用程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。

2、虚拟文件系统层VFS

Linux操作系统分为用户态和内核态,当用户态请求硬件资源时需要调用System Call通过内核态去实现。VFS 作为一个通用的文件系统,抽象了文件系统的挂载点、索引节点、目录项和文件四个基本概念,在内核空间层中为用户空间层的文件操作(文件的创建、删除、打开、关闭、写、读等)提供了相关的接口。

VFS 存在四个基本对象:
超级块对象:代表一个已安装的文件系统;
索引节点对象:代表一个文件;
目录项对象代表一个目录项;
文件对象代表由进程打开的文件。

超级块、索引节点、目录项、文件这四个基本对象是对挂载点、索引节点、目录项和文件四个基本概念的一一对应的。

3、文件系统层

不同的文件系统实现了VFS的系统调用函数接口,通过指针注册到VFS里面。用户层的各种操作是通过VFS转到各种文件系统的。
文件系统大体上可分如下几类:
网络文件系统,如 nfs、cifs 等;
磁盘文件系统,如 ext4、ext3 等;
特殊文件系统,如 proc、sysfs、ramfs、tmpfs 等。

4、缓存层

文件系统底下有缓存,Page Cache,加速性能。对磁盘LBA的读写数据缓存到这里。

5、块设备层

块设备接口Block Device是用来访问磁盘LBA的层级,读写命令组合之后插入到命令队列,磁盘的驱动从队列读命令执行。

6、磁盘驱动层

磁盘的驱动程序把对LBA的读写命令转化为各自的协议,或者是自己硬件可以识别的自定义命令,发送给磁盘控制器。

7、磁盘物理层

读写物理数据到磁盘介质。

原文地址:https://www.cnblogs.com/xidian2014/p/8504096.html