Linux文件系统1---VFS的引入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件系统1---VFS的引入相关的知识,希望对你有一定的参考价值。

1.引言

本文所述关于文件管理的系列文章主要是对陈莉君老师所讲述的文件系统管理知识讲座的整理。

Linux可以支持不同的文件系统,它源于unix文件系统,也是unix文件系统的一大特色。

2.虚拟文件系统的引入

技术分享

图 内核所支持的文件系统

通过cat /proc/filesystems可以查看当前内核所运行的文件系统,文件系统不仅作为一种文件的管理机制,也可以作为其它的一种机制加入VFS中,如cgroup等

    

技术分享

图 文件系统目录结构

Linux的文件是统一的,位于一颗目录树中,它与进程管理是一脉相承的理念。

 

技术分享

图 VFS文件系统架构图

VFS为用户空间提供了统一的接口,不同的文件系统需要实现这些接口,对于设备文件,驱动程序中也要实现相应的接口,这体现了一种机制与分离的理念。

 3.file_system_type结构体

技术分享

图 file_system_type结构体

 

  • Linux内核采用VFS(Virtual Filesystem Switch)框架
  • 每个文件系统都需要在VFS中注册,即填充一个struct file_system_type结构
  • 此结构描述的是文件系统的名称以及一个指向对应VFS超级块读取例程的地址等信息

  技术分享

图 file_system_type的组织结构  

  • 内核采用链表组织每个注册的文件系统,链表头为file_systems

 4. 实例:打印file_system_type信息

技术分享

 

    可以通过cat /proc/kallsyms | wc可以统计内核有多少个符号

    由于内核有些符号是没有导出的,不允许访问,通过cat /proc/kallsyms | grep file_systems可以打印出file_systems的地址,就可以操作了

 

         

以上是关于Linux文件系统1---VFS的引入的主要内容,如果未能解决你的问题,请参考以下文章

[搬运工]VFS虚拟文件系统

Linux虚拟文件系统(VFS)

VFS(Virtual File System)

vfs基本操作(待继续补全)

Linux的文件系统

linux文件系统类型