文件系统

本文最后更新于 2026年9月15日 下午

文件系统

文件系统是什么

  • 对文件系统而言,所有文件都是字节流。文件的格式由具体软件负责。
  • 文件链接
    • 软链接(符号链接):内容指向另外一个文件路径(相对或绝对)。
    • 硬链接:是一个已经存在文件的附加名称,也就是同一个文件的第2个或第N个名称。共享inode ID
  • 对任意线性空间存储的管理

格式化文件系统与挂载

  • 格式化文件系统相当于在块设备上创建一个文件系统
  • 挂载则是将该文件系统激活(在操作系统目录树呈现)的过程

VFS

  • VFS通过函数指针集合来实现对具体文件系统访问

关键处理流程(Ext2为例)

  1. 文件系统的注册

    • Linux中文件系统通常是一个内核模块,在内核模块被加载(初始化)时完成文件系统的注册。

    • 流程:将表示某种类型的文件系统的结构体file_system_type实例添加到一个全局的链表中,该实例主要实现mount()函数。用于用户态执行挂载命令时调用该函数指针。

    • mount()作用:从存储介质读取超级块信息,并创建该文件系统根目录的dentry实例。

    • dentry:(directory entry,即目录项)在VFS中用来连接文件名和inode

  2. 打开文件的流程

    • 所有打开的文件都与进程结构体task_struct的成员file结构体关联
    • fdtable 里的 fd 成员,是一个 struct file * 指针数组;而用户态看到的文件描述符 fd,就是这个数组的下标

文件系统
https://cdro.tech/notes/CS/file-system/
作者
k9Q6CK42
发布于
2026年9月11日
更新于
2026年9月15日
许可协议