为什么版本控制文件系统如此之少?

时间:2010-07-07 13:31:11

标签: filesystems versioning

我做了一些关于版本控制文件系统的文献研究。版本控制在早期的操作系统中已经很普遍,例如有影响但几乎被遗忘的不兼容的分时系统(ITS)和 TENEX 。 OpenVMS是TENEX的继承者,似乎仍然在特殊应用程序中使用,它仍然支持版本控制。我找到了许多带版本控制的实验和历史文件系统(参见ext3cow FAQ)。但默认情况下,主要操作系统(Linux,Windows,Mac OS)都不支持版本控制。

现代操作和文件系统如何不支持40年前提供的功能?当然,您可以以某种方式破解版本到您的系统中,但这应该支持最基本的级别,对应用程序是透明的。只是为了澄清:日记和快照工具(例如Apple的TimeMachine)相同。文件系统级别的版本控制意味着:修改文件的每个进程都会自动触发创建可以直接访问后续文本的新版本(例如撤消进程)。您可以通过写时复制实现这一点。

我发现的版本控制文件系统的唯一现代应用是versioning in Amazon S3,这是他们几个月前介绍的。为什么版本控制文件系统如此之少?计算机系统的进展如何?版本化是一个坏主意吗?

5 个答案:

答案 0 :(得分:4)

无法给出最终答案,但请考虑以下两点:

  1. 这个功能对主流用户没有什么用处(占所有用户的98%?),所以为什么要实现它,如果没有人使用它。
  2. 过去存储空间很贵,为什么要浪费在几乎没有人会使用的功能上呢?

答案 1 :(得分:3)

如果我有需要版本控制的东西,有很多方法可以做到(本地git存储库,网络版本控制系统等)。我想担心的是,如果你每次更改文件时都会创建一个新版本,那么你的磁盘迟早会被你可能需要或可能不需要的差异填充(临时/交换文件等)。像时间机器这样的快照有点中间 - 它们让你回去,但不会花费大量空间备份(可以说)不必要的“流失”。

答案 2 :(得分:3)

在涉及磁盘写入的大多数情况下,版本控制往往没有用处。发生了许多变化,这些变化是单向的,没有人关心以前的版本。

另外,它很难。实现一个文件系统来处理版本控制本身就比制作一个没有的文件系统更困难。创建一个执行此操作的文件系统并没有真正的动力。新系统(zfs,ntfs,btrfs)可以做到这一点,因为基于功能存在新的竞争状态,所以他们都试图将尽可能多的功能塞进他们的FS设计中。

大多数人都乐于在他们真正关心的文件上使用VCS,而不是在FS版本上浪费空间。

答案 3 :(得分:2)

根据达尔文的说法,实际上没有使用的进化特征往往会被取消选择。如果对此存在真正和广泛的需求,主要操作系统会将其作为默认值。

我在PC出现前几年使用了VMS。我有几十份我所做的一切,无论喜欢与否。我不知道他们中的大多数是什么,并不关心。他们很快变得杂乱无章。显然版本控制文件系统是另一个“当时看起来像一个好主意”的东西......

答案 4 :(得分:2)

今天的大多数文件系统设计都取自Unix操作系统设计(就像Unix在VMS之前有分层FS),因为Unix变得越来越流行,然后它的FS成为主流。然后将这些概念带到其他操作系统。 Unix没有文件版本。

后来,采用了不同的方法来保留旧版本 - 快照。它们具有优势,因为它们是原子的并且可以获取所有系统的完整快照。它还具有为部分更新的文件节省大量空间的显着优势。

所以今天,如果有人想到支持版本,最好使用快照(因为许多文件系统都支持它们,当然还有所有现代存储系统)。

因此,这个有用的功能与OpenVMS(今天几乎已经死亡)等操作系统一起消失了