开发者

Why are there so few versioning file systems? [closed]

Closed. This question is off-topic. It is not currently accepting answers.

Want to improve this question? Update the question so it's on-topic for Stack Overflow.

Closed 12 years ago.

Improve this question

I did some literature research about versioning file systems. Versioning was already common practice in the very early operating systems such as the influential but almost forgotten Incompatible Timesharing System (ITS) and TENEX. OpenVMS, the successor of TENEX, seems to be still used in special applications and it still supports versioning. I found a number of experimental and historic file systems with versioning (see the ext3cow FAQ). But none of the major operating system (Linux, Windows, Mac OS) support versioning by default.

How come modern operating and file systems' do not support a feature available 40 years ago? Of course you can hack versioning into your systems somehow but this should be supported to the most basic level, transparent to applications. Just to clarify: Journaling and snapshot facilities (such as Apple's TimeMachine) are not the same. Versioning on file system level means: every process that modifies a file, automatically triggers the creation of a new version that you can directly access afterwords (for instance to undo the process). You can implement this cheaply with copy-on-write.

The only modern application of a versioning file system that I found is versioning in Amazon S3 which they introduced a few month ago. Why are there so little versioning file systems? What happened to progress of computer systems? Is versioning a bad开发者_运维问答 idea anyway?


Can't give you the ultimate answer, but consider these 2 points:

  1. The feature is of little use to the mainstream user (98% of all users?), so why implementing it, if nobody uses it.
  2. Storage space was expensive in the past, so why wasting it on a feature that almost nobody will use?


If I have things that require versioning, there are plenty of ways to do it (local git repository, networked version control systems, etc.). I suppose the worry has been that if you create a new version EVERY time a file is changed, sooner or later your disk is just filled with diffs that you may or may not need (temp/swap files, etc.). Snapshots like time machine are sort of a middle ground - they let you go back, but don't spend a lot of space backing up (arguably) needless "churn".


Versioning tends to not be useful in the majority of cases where disk writes are involved. Lots of changes happen that are meant to be one-way, and no one ever cares what the previous version was.

Plus, its hard. Implementing a file system to handle versioning is inherently more difficult than making a file system that doesn't. There is just no real incentive to create a file system that does this. The new systems (zfs, ntfs, btrfs) can do this because there is a new state of competition based on features, so they are all attempting to cram as many features as possible into their FS designs.

Most people are happy to use a VCS on the files they actually care about, not wasting space on FS versioning.


According to Darwin, evolutionary features which are not actually used tend to become de-selected. If there were a real and widespread need for this, major operating systems would include it as a default.

I used VMS a few years before the PC made its appearance. I had dozens of copies of everything I did, like it or not. I had no idea what most of them were, and didn't care. They quickly became clutter. Apparently Versioning File systems are another of those "It Seemed Like a Good Idea At The Time" things...


Most file system designs today are taken from Unix operating systems design (like Unix has hierarchical FS before VMS), as Unix become more popular then its FS become the main stream. Then these concepts were taken to other OSes. Unix had not versions of files.

Later, different approach was taken for keeping older version - snapshots. They have advantage in that they are atomic and take entire snapshot of all system. It has also significant advantage of saving lots of space for files that are partially updated.

So today, if somebody thinks of supporting versions it is better to do with snapshots (as many file systems are support them and of course all modern storage systems).

So, this useful feature died together with operating systems like OpenVMS (that is almost dead today)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜