The ext3cow file system is a time-shifting file system implemented with copy-on-write (COW) and based on the very popular ext2/ext3 file system. Phew! Now what does all that mean? Basically, it's a functionally enhanced version of ext3 that allows one to take a snapshot of one's file system, with one second granularity, freezing the way the file system looked at given point-in-time. One may then travel back through time, if you will, and be presented with a read-only image of the file system. No special mounting, or '.' directories. Just type a name or directory followed by the special '@' character and a time. For example:
Of course, this works for more than just text files; images, databases, and binaries, ext3cow does it all.
There are quite a few advantages to system like this, including data availability and reliability, a consistent image for backup, a checkpoint for restoring the state of a file system, a source for data mining, and a way to provide tamper resistant storage.
So, what are the trade-offs for such a system? For every version of a file that exists, an inode must exist to reference it. Therefore, there's a slight increase in metadata overhead of about 5%. Of course this percentage varies with snapshot frequency and the number of files modified between snapshots. If you never take a snapshot, then there's no increase in metadata. Further, no data is every thrown away, so there's higher data block usage. Results on the average increase in data block usage have yet to be reported, but because of the copy-on-write policy, only the blocks that have changed between snapshots are written to disk. In this way, versions of the same file may share data blocks between snapshots minimizing the data footprint.
Other features include being able to change into a directory in the past and read it's contents as it appeared at a point-in-time, making symbolic links to files in the past, and the ability to diff versions of file.
The latest version of ext3cow is 0.1.2.
To successfully install and run ext3cow, you'll need both of the following:
Please report bugs to: .
Right now, ext3cow is the research of young Zachary Peterson and his advisor Dr. Randal Burns. Both are members of the Hopkins Storage Systems Lab (HSSL) at the Johns Hopkins University. The project is funded by the Department of Energy and the National Science Foundation.
If you'd like to join in the development, report bugs, suggest new and better features, provide feedback, ask about the design, or just see how Zach's doing, please send email to:
NEW! Join the ext3cow mailing list! Go to http://hssl.cs.jhu.edu/mailman/listinfo/ext3cow-devel or email .
The following is a list of open issues in the file system, or perphipheral projects still needed to be done.