005 虚拟文件系统VFS中超级块、安装点、文件系统类型三者之间关系

上两篇文章介绍虚拟文件系统VFS中基本的数据结构、以及与进程相关的数据结构,为了描述完整的VFS,其实还有一类数据结构,他们是描述文件系统的。文件系统在不同状态下,根据功能不同,主要包含三个数据结构:超级块super_block、安装点(也叫挂载点)mount和vfsmount、文件系统类型file_system_type。下面就详细介绍下这三个数据结构之间的关系。

数据结构作用和内容相关说明
文件系统
file_system_type
fs.h
作用:
1)文件系统向VFS注册的信息,标识一个文件系统
内容:
1)name名称
2)fs_flag文件系统标志
3)fs_supers链接到这个文件系统的超级块列表
4)mount挂载操作回调
5)kill_sb超级块全部卸载回调
1)一个文件系统,不论是否安装实例,在VFS注册使用file_system_type
2)同一个文件系统,可以有多个安装实例,但是file_system_type只有一个
超级块
super_block
fs.h
作用:
1)代表一个文件系统实例,也就是安装(挂载)到系统上的文件系统
2)提供了很多indoe操作,比如分配、释放、销毁等
内容:
1)s_list 超级块链表表头
2)s_blocksize 超级块大小
3)s_root 根dentry
4)s_type 链接到文件系统类型
5)s_mounts 链接到挂载点信息
6)s_instances 同一类型文件系统链表
1)一个文件系统可能存在多个超级块,一个文件系统安装(挂载)到操作系统后,就会有一个超级块
2)想同的超级块,通过s_instances链表,链接在一起
安装点(挂载点)
mount
vfsmount
mount.h
说明:老版本只有vfsmount,新版本中很多安装(挂载)信息提出来形成mount,vfsmount中只留下根目录项和超级块指针,这样vfsmount更加纯粹。

作用:
1)代表一个文件系统的安装点(挂载点)
2)同一个文件系统,有多个安装点(挂载点),就有多个mount和vfsmount实例

vfsmount内容:
1)mnt_root 安装点根目录项
2)mnt_sb 指向对应的超级块
3)mnt_flags 挂载标志
4)mnt_userns 用户名称空间

mount内容:
1)mnt_parent 指向父文件系统安装点
2)mnt_mountpoint 安装点dentry
3)mnt vfsmount信息
4)mnt_mounts 链接到当前文件系统下所有子文件系统安装点
5)mnt_child 链接到当前文件系统父文件系统的所有子文件系统安装点
6)mnt_list 挂载描述符列表
1)一个文件系统可能存在多个安装点,一个安装点对应一个安装点
超级块、安装点、文件系统类型之间关系

用图形来表示三者之间关系

文件系统类型、超级块、安装点
文件系统类型、超级块、安装点

上一篇:虚拟文件系统VFS与进程相关的数据结构

参考链接:

VFS官方文档:https://docs.kernel.org/filesystems/vfs.html

《005 虚拟文件系统VFS中超级块、安装点、文件系统类型三者之间关系》有2个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注