【问题标题】:What is the point of using a virtual filesystem?使用虚拟文件系统有什么意义?
【发布时间】:2017-02-11 13:19:26
【问题描述】:

所以我正在制作这个软件来加密计算机上的文件。我的一个朋友(我们都是学生,所以不要对我们太苛刻)建议我使用虚拟文件系统。我问为什么,那是什么,他们给了我一些没有帮助的半真半假的答案

[我不知道这是否重要,但我在 linux 环境中]

所以不用担心我去谷歌搜索。但我仍然不明白。解释,尤其是维基百科上的解释对我来说没有意义。什么是 VFS?使用虚拟文件系统的实际需求或优势是什么?与公正相反,不是吗?

我问是因为我真的很好奇,如果它有用,我想将它实现到我正在制作的东西中。

谢谢

(还有任何链接或书籍或我可以阅读的可以扩展我的知识的东西也会有所帮助)

【问题讨论】:

  • 虚拟文件系统通常是一个内核层,它为您的操作系统抽象出真实的文件系统。即使底层 FS 是 NTFS、HFS、Ext4 等,您也可以以相同的方式访问每个文件。VFS 掩盖了有关真实 FS 之间差异的不同技术细节。可能与您最初的问题无关,或者您可能想要实施加密 FS?
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?

标签: linux filesystems low-level virtualfilesystem


【解决方案1】:

一般来说,VFS 是一个抽象层。将 VFS 想象成一个抽象基类,当您想要实现文件系统的具体类(如 NTFSExt3NFS 或其他类)时必须使用它。它提供了具体文件系统可以使用的基本功能,但也是具体类必须实现的接口。

不知道那是不是你要找的。如果不是,请告诉我,我可以添加更多细节。

【讨论】:

    【解决方案2】:

    VFS 是内核的一部分,是文件系统和用户应用程序使用的统一抽象层,它以通用的可访问格式呈现多个本地或网络文件系统,无论文件所在卷的文件系统如何,文件所在的卷的位置(本地或网络),总线/控制器/存储标准或网络协议,或者文件系统是否安装在卷上或文件系统+卷是否安装在安装点,允许它随时随地访问。

    VFS 包括:

    • 文件 IO/文件映射/文件元数据/目录遍历 API 调用挂载到卷的底层文件系统,无论文件系统是什么。
    • 用于通知文件系统驱动程序卷到达的 API,以便它们可以识别其文件系统是否在卷上
    • API 用于文件系统在不知道底层总线/控制器/存储传输标准或网络存储(块、文件)/传输/网络/数据链路/物理的情况下使用其文件系统对卷执行读/写操作协议,或存储介质上卷的物理分区或扇区(仅限于其中的逻辑集群),或存储介质的操作(不知道外部碎片是否重要)。
    • 重新解析点功能,例如挂载点、目录连接和符号链接 - 它重新解析文件路径(与硬链接不同)以生成供底层文件系统访问的文件路径
    • 缓存文件页面,以便可以从 RAM 中获取它们,而无需调用文件系统,而只需在文件缓存页面未命中时调用文件系统(请参阅 cmets)。
    • 在页面未命中(请求分页)周围预取文件的一部分或预取相关文件或动态库,即在 Windows 上预取甚至 Superfetch

    然后,文件浏览器 GUI 应用程序可以使用 API 与卷的虚拟文件系统表示进行交互,并且 VFS 调用底层文件系统,然后通过 VFS 读取/写入其卷。然后,文件资源管理器可以在一个通用界面上直观地表示卷的虚拟文件系统表示

    【讨论】:

    • 另一个重要的部分是以统一的方式缓存文件数据和元数据。如果路径查找在 VFS 缓存中命中,它甚至不必为处理该路径组件的任何文件系统调用驱动程序。因此 VFS 缓存访问不必经过任何抽象层,因此可以更快。
    • @PeterCordes 是的,我在讨论是否将文件缓存视为其中的一部分。我不知道它在 linux 上的情况,所以那里的命名法可能更明确
    • 是的,Linux 文档和 /proc stats 文件肯定会谈论“VFS 缓存”,例如这个旧文档usenix.org/legacy/publications/library/proceedings/usenix01/… 显示了 inode 缓存和目录缓存。 (还有用于文件数据的页面缓存和用于块设备数据的缓冲区缓存。)啊,当前的内核文档仍然将缓存作为 VFS 的重要组成部分:kernel.org/doc/html/latest/filesystems/vfs.html
    • @PeterCordes 我认为您也可以包括预取
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多