1. 背景
为支持各种各样文件系统(ext4,f2fs,FAT32,btrfs等等),必须提取各种文件系统公共部分,形成一个抽象层,向上层应用层提供统一的操作接口,接口则由具体文件系统实现。
2. VFS原理
-
为所有文件系统提供一套统一的对上层访问接口;
image.png
1)用户空间访问文件,通过统一的接口(标准系统调用:open(),read(),write(),lseek()等),不依赖文件存放的具体的文件系统
2)公共接口,可以让多个文件系统之间透明工作
image.png
-
统一公共的文件系统的接口访问最终重定向到具体文件系统实现;
image.png
-
只存在于内存中,本身不是一种实际的文件系统,只不过抽象硬盘上的文件系统到内存中表示;
-
基于公共的文件系统模型-类似于ext2 文件系统
1)文件是文件系统最基本的单位,每个文件除了文件内容外,还包含文件名,文件路径,文件属性metadata(创建日期,长度等)
2)目录构建文件系统的树状层次结构,顶层为根(root)目录
3)系统存在一个全局文件系统的树和公共根目录,访问一个文件系统前,需将该文件系统挂载到全局文件系统树的某个目录,对应的目录即,挂载点; -
通过super block, inode, dentry, file,vfsmount, file system type 等文件系统对象信息表示
superblock-inode-dentry-file.png
3. VFS 对象
-
filesystem type
file_system_type.png
-
superblock
struct superblock.png
-
inode
struct inode.png
-
dentry
struct dentry.png
-
file
struct file.png
-
vfsmount
struct vfsmount.png
网友评论