文件系统
本文最后更新于 2026年9月15日 下午
文件系统
文件系统是什么
- 对文件系统而言,所有文件都是字节流。文件的格式由具体软件负责。
- 文件链接
- 软链接(符号链接):内容指向另外一个文件路径(相对或绝对)。
- 硬链接:是一个已经存在文件的附加名称,也就是同一个文件的第2个或第N个名称。共享
inode ID。
- 对任意线性空间存储的管理
格式化文件系统与挂载
- 格式化文件系统相当于在块设备上创建一个文件系统
- 挂载则是将该文件系统激活(在操作系统目录树呈现)的过程
VFS
- VFS通过函数指针集合来实现对具体文件系统访问
关键处理流程(Ext2为例)
文件系统的注册
Linux中文件系统通常是一个内核模块,在内核模块被加载(初始化)时完成文件系统的注册。
流程:将表示某种类型的文件系统的结构体
file_system_type实例添加到一个全局的链表中,该实例主要实现mount()函数。用于用户态执行挂载命令时调用该函数指针。mount()作用:从存储介质读取超级块信息,并创建该文件系统根目录的dentry实例。dentry:(directory entry,即目录项)在VFS中用来连接文件名和inode。
打开文件的流程
- 所有打开的文件都与进程结构体
task_struct的成员file结构体关联 fdtable里的fd成员,是一个struct file *指针数组;而用户态看到的文件描述符fd,就是这个数组的下标
- 所有打开的文件都与进程结构体
文件系统
https://cdro.tech/notes/CS/file-system/