任何具有“平面”、基于标签的文件系统的unix实现?

任何具有“平面”、基于标签的文件系统的unix实现?

据我了解,Unix中的文件都存储在硬盘驱动器中的“平面”结构中——文件系统仅仅是从目录到其他目录并最终到叶子/节点/文件的链接。许多硬链接可能指向同一个文件(但不是同一个目录/分支)

有没有什么方法可以解决这个问题,基本上根本没有文件夹——所有文件都在一个巨大的文件夹中,而不是文件夹,而是有标签?那么您的主目录可能不是文件夹中的文件,而只是标签/文件夹列表,其中一个文件可能会在多个文件夹中找到?

还有某种软件功能可以执行更复杂的标签查询,例如过滤。

答案1

确实,文件的数据在实际磁盘驱动器上是“平坦的”。大多数(全部?)现代磁盘驱动器都有“LBA”(逻辑块寻址),这意味着即使对于内核来说,磁盘也是一大行块。包含文件数据的块可能会被中断,因为 inode 等在整个磁盘块行中间隔开。所以“平坦”作为描述有点具有欺骗性。

确实,“层次结构”部分只是一个虚构:文件夹(更好地称为“目录”)及其成员资格通过读取文件名并从目录数据中匹配索引节点号,从内核“使其如此”进行安排。

但数据的分层排列非常有用。早在1991年,人们就对此争论不休,并得到了有力的反驳。参见布伦特·韦尔奇的文件系统属于内核为了一个比我能写出的更好的论据。

我还不得不指出,微软至少已经开始将文件系统作为数据库两次在过去的20年里,并放弃了它两个都次,但也许我对谷歌所说的解释不正确。

答案2

保险丝提供现有分层文件系统的基于标记或基于查询的视图的文件系统,但据我所知,没有一个文件系统可以让您完全在非分层视图中工作。

标签文件系统提供基于标签的视图,但您需要手动设置标签。对于更成熟的人来说也是如此标签助手查询文件系统具有通过任意数据库查询访问文件的概念验证。

中的其他条目FUSE 文件系统列表您可能感兴趣。 (警告:此列表既不全面也不是最新的。)

答案3

现在您已经可以做到这一点:所有 Linux 文件系统或多或少都支持扩展属性。您可以将 EA 用于您的标签。但是:可能没有文件系统针对这种扁平结构进行优化,因此它可能会变得相当慢。当然,仅仅拥有支持此功能的文件系统是不够的:您还需要一个支持此功能的应用程序。

在 KDE(可能还有其他桌面环境)中,您可以使用关键字标记文件。但它们似乎没有存储在 EA 中。我不知道他们是如何做到这一点的,可能使用单独的数据库引擎,因为这是一个经典的数据库任务。

答案4

贝奥斯是桌面操作系统中最有前途的实验之一,尽管它实际上不是 Unix 变体。或者商业上的成功。但它确实有一些有趣的想法,其中之一就是BeOS 文件系统、BFS

BFS 并没有完全放弃分层结构,这在组织上非常有用,但它通过高度灵活的属性系统对其进行了增强,索引维护为 B+ 树,并且钩子使得定义实时(即不断维护)查询成为可能,这可以用来强加替代的组织结构。

我认为 Linux 已经重新实现了 BFS。

相关内容