美文网首页
Linux kernel之三VFS

Linux kernel之三VFS

作者: 1哥 | 来源:发表于2021-12-11 13:42 被阅读0次

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

相关文章

网友评论

      本文标题:Linux kernel之三VFS

      本文链接:https://www.haomeiwen.com/subject/hpmezltx.html