Ext3

From Wikipedia, the free encyclopedia

The correct title of this article is ext3. The initial letter is shown capitalized due to technical restrictions.
ext3
Developer Open Source Community
Full name Third extended file system
Introduced November 2001 (Linux 2.4.15)
Partition identifier 0x83 (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
Structures
Directory contents Table, Tree
File allocation bitmap (free space), table (metadata)
Bad blocks Table
Limits
Max file size 16GiB – 2TiB
Max number of files Variable[1]
Max filename size 255 bytes
Max volume size 2TiB – 32TiB
Allowed characters in filenames All bytes except NUL and '/'
Features
Dates recorded modification (mtime), attribute modification (ctime), access (atime)
Date range December 14, 1901 - January 18, 2038
Forks Yes
Attributes No-atime, append-only, synchronous-write, no-dump, h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete
File system permissions Unix permissions, ACLs and arbitrary security attributes (Linux 2.6 and later)
Transparent compression No
Transparent encryption No (provided at the block device level)
Supported operating systems Linux, BSD, Windows (through an IFS)

The ext3 or third extended filesystem is a journalled file system that is commonly used by the Linux operating system. It is the default file system for many popular Linux distributions. Stephen Tweedie first revealed that he was working on extending ext2 in a February 1999 kernel mailing list posting [2] and the filesystem was merged with the mainline kernel from 2.4.15 onward.[3]

Contents

[edit] Advantages

Although its performance and scalability is less attractive than competitors such as ReiserFS and XFS, it does have the significant advantage in that it allows in-place upgrades from the popular ext2 file system without having to backup and restore data.

The ext3 file system adds, over its predecessor:

  • A journal
  • Tree-based directory indexes for directories spanning multiple blocks
  • Online filesystem growth

Without these, any ext3 file system is also a valid ext2 file system. This has allowed well-tested and mature file system maintenance utilities for maintaining and repairing ext2 file systems to also be used with ext3 without major changes. The ext2 and ext3 file systems share the same standard set of utilities, e2fsprogs, which includes a fsck tool. The close relationship also makes conversion between the two file systems (both forward to ext3 and backward to ext2) straightforward.

There are three levels of journaling available in the Linux implementation of ext3:

  • Journal, where both metadata and file contents are written to the journal before being committed to the main filesystem. This improves reliability at a performance penalty because all data has to be written twice.
  • Writeback, where metadata is journaled but file contents are not. This is faster, but introduces the hazard of out-of-order writes where, for example, files being appended to during a crash may gain a tail of garbage on the next mount.
  • Ordered, is as with writeback, but forces file contents to be written before its associated metadata is marked as committed in the journal. This is thought to be an acceptable compromise between reliability and performance, and hence is the default.

While in some contexts the lack of modern filesystem features such as dynamic inode allocation and tree-based data structures could be considered a disadvantage, in terms of recoverability this gives ext3 a significant advantage over filesystems with those features. The filesystem metadata is all in fixed, well-known locations, and there is some redundancy inherent in the data structures that allow ext2 and ext3 to be recoverable in the face of significant data corruption, where tree-based filesystems may not be recoverable.

[edit] Disadvantages

Since ext3 aims at being mostly compatible with ext2, many of the on-disk structures are similar to those of ext2. Because of that, ext3 lacks a number of features of more recent designs, such as dynamic allocation of i-nodes and variable block sizes (frags or tails).

ext3 filesystems cannot be fscked while the filesystem is mounted for writing. A dump of the filesystem taken while it is mounted read-write may result in corrupt data within the dump file.

There is no online ext3 defragmentation tool. An offline ext2 defragmenter, e2defrag, exists but requires that the ext3 filesystem be converted back to ext2 first. But depending on the feature bits turned on on the filesystem, e2defrag may destroy data; it does not know how to treat many of the newer ext3 features.[4]

Unlike ext2, ext3 zeroes out block pointers in the inodes of deleted files. It does this to simplify read-write access to the filesystem when the journal is being replayed after an unclean mount. This, however, effectively prevents files from being undeleted. The user's only recourse is to grep the hard drive for data known to signal the start and end of the file. This provides slightly more secure deletion than ext2, which can be either an advantage or a disadvantage.

Support for transparent compression (available as an unofficial patch for ext2) is not available in ext3.

ext3 has a relatively small maximum size for both individual files and the entire filesystem. These limits are dependent on the block size of the filesystem; the following chart summarizes the limits[5]:

Block size Max file size Max filesystem size
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB 2TiB 32TiB

The 8KiB block size is only available on architectures (such as alpha) which allow 8KiB pages.

[edit] Ext4dev / Ext4

Main article: ext4

An enhanced version of the filesystem was released on October 10, 2006 under the name of ext4. It includes some new features.

[edit] Notes and references

  1. ^ The maximum number of inodes (and hence the maximum number of files and directories) is set when the file system is created. If V is the volume size in bytes, then the default number of inodes is given by \frac{V}{2^{13}} (or the number of blocks, whichever is less), and the minimum by \frac{V}{2^{23}}. The default was deemed sufficient for most applications.
  2. ^ Stephen C. Tweedie (February 17 1999). Re: fsync on large files. Linux kernel mailing list.
  3. ^ Rob Radez (November 23 2001). 2.4.15-final. Linux kernel mailing list.
  4. ^ Andreas Dilger. Post to the ext3-users mailing list. ext3-users mailing list post.
  5. ^ Matthew Wilcox. Documentation/filesystems/ext2.txt. Linux kernel source documentation.

[edit] See also

[edit] External links