Tux3 is an open-source
versioning filesystem A versioning file system is any computer file system which allows a computer file to exist in several versions at the same time. Thus it is a form of revision control. Most common versioning file systems keep a number of old copies of the file. ...
created by Daniel Phillips. He introduced the filesystem as a public replacement for his Tux2 filesystem which had encountered licensing issues due to the filing of several patents. Phillips had previously created the
Htree
An HTree is a specialized tree data structure for directory indexing, similar to a B-tree. They are constant depth of either one or two levels, have a high fanout factor, use a hash of the filename, and do not require balancing. The HTree algo ...
directory indexing system which eventually became an official feature of
ext3
ext3, or third extended filesystem, is a journaled file system that is commonly used by the Linux kernel. It used to be the default file system for many popular Linux distributions. Stephen Tweedie first revealed that he was working on extend ...
. The technical details of Tux3 were first publicized in an email on 23 July 2008.
Design
In broad outline, Tux3 follows a conventional
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
-style
inode
The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attribute ...
/file/directory design. A Tux3 inode table is a
B-tree
In computer science, a B-tree is a self-balancing tree data structure that maintains sorted data and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree generalizes the binary search tree, allowing for n ...
with versioned attributes at the leaves. A file is an inode attribute that is a B-tree with versioned
extents
In computing, an extent is a contiguous area of storage reserved for a file in a file system, represented as a range of block numbers, or tracks on count key data devices. A file can consist of zero or more extents; one file fragment requires on ...
at the leaves. Directory indexes are mapped into directory file blocks as with Htree. Free space is mapped by a B-tree with extents at the leaves. It attempts to avoid traditional
journaling by introducing a recovery logic which allows it to recover upon remounting.
A Tux3 inode is a variable sized object consisting of a list of attributes, each labeled by the version at which the attribute was added, changed or removed. The B-tree index by which inodes are referenced is not versioned. The B-tree index of a large file is also not versioned, except for the leaves of the index, which contain lists of extents, each labeled by the version at which the referenced file data was added or changed. This style of versioning is essentially the inverse of tree versioning methods used by
Write Anywhere File Layout
The Write Anywhere File Layout (WAFL) is a proprietary file system that supports large, high-performance RAID arrays, quick restarts without lengthy consistency checks in the event of a crash or power failure, and growing the filesystems size q ...
(WAFL),
ZFS
ZFS (previously: Zettabyte File System) is a file system with volume management capabilities. It began as part of the Sun Microsystems Solaris operating system in 2001. Large parts of Solaris – including ZFS – were published under an ope ...
and
Btrfs
Btrfs (pronounced as "better F S", "butter F S", "b-tree F S", or simply by spelling it out) is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager (not to be confused ...
, where multiple tree roots of an entire filesystem are created in order to express differences between versions of the filesystem.
A claimed advantage of Tux3 style versioned entities is that only a few bytes need to be added to represent single changes to inode attributes or to index new versions of file data blocks, compared to some number of index blocks needing to be allocated and written for tree-versioned filesystems.
Development history
As of August 2008, Tux3 was only capable of performing basic file I/O on files. By the end of 2008, Tux3 was capable of running within the kernel and able to sustain repeated runs of the file system exerciser fsx-linux, a big accomplishment.
On 17 February 2009, Linux booted from a Tux3 root filesystem for the first time.
On 18 January 2013, initial
fsck
The system utility fsck (''file system consistency check'') is a tool for checking the consistency of a file system in Unix and Unix-like operating systems, such as Linux, macOS, and FreeBSD. A similar command, CHKDSK, exists in Microsoft Windows ...
support was added. So far it just checks physical
referential integrity
Referential integrity is a property of data stating that all its references are valid. In the context of relational databases, it requires that if a value of one attribute (column) of a relation (table) references a value of another attribute (ei ...
, but the developers are confident that they can make a fully functional
e2fsck
The system utility fsck (''file system consistency check'') is a tool for checking the consistency of a file system in Unix and Unix-like operating systems, such as Linux, macOS, and FreeBSD. A similar command, CHKDSK, exists in Microsoft Windows ...
-quality fsck soon.
On 17 May 2014, Daniel Phillips made a plea to the kernel maintainer, to review the code and implement it into the kernel. The goal is to stabilize the code in the kernel and finally get stable.
On 9 October 2017, Daniel Phillips sen
Tux3 update - Shardmapon the mailing list.
See also
*
Comparison of file systems
The following tables compare general and technical information for a number of file systems.
General information
Limits
Metadata
Features File capabilities
Block capabilities
Note that in addition to the below table, blo ...
*
List of file systems
The following lists identify, characterize, and link to more thorough information on Computer file systems.
Many older operating systems support only their one "native" file system, which does not bear any name apart from the name of the operating ...
*
PHTree
An HTree is a specialized tree data structure for directory indexing, similar to a B-tree. They are constant depth of either one or two levels, have a high fanout factor, use a hash of the filename, and do not require balancing. The HTree alg ...
References
External links
Official websiteSource codeTux3 mailing list*
{{Use dmy dates, date=February 2018
Disk file systems
File systems supported by the Linux kernel