使用虚拟文件系统有什么意义?

时间:2017-02-11 13:19:27

标签: linux filesystems low-level virtualfilesystem

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

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

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

我问,因为我实际上很好奇,如果它有用,我想把它实现到我正在做的事情中。

谢谢

(根据我的知识,我可以阅读的任何链接,书籍或其他东西也会有所帮助)

2 个答案:

答案 0 :(得分:1)

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

VFS 包括:

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

文件浏览器 GUI 应用程序然后可以使用 API 与卷的虚拟文件系统表示进行交互,VFS 调用底层文件系统,然后通过 VFS 读/写它们的卷。然后文件浏览器可以在公共界面上直观地表示卷的虚拟文件系统表示

答案 1 :(得分:0)

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

不知道这是不是你想要的。如果不是,我可以告诉我,我可以添加更多详细信息。