|
The ext2 or second
extended file system is a file system for the Linux kernel. It was
initially designed by Rémy Card as a replacement for the extended file
system (ext). It is fast enough that it is used as the benchmarking
standard. Although ext2 is not a journaling file system, its successor,
ext3,
provides journaling and is almost completely compatible with ext2.
The canonical implementation of ext2 is the ext2fs file system driver in the
Linux kernel. Other implementations (of varying quality and completeness)
exist in GNU Hurd, Mac OS X (third-party), Darwin (same third-party as Mac
OS X but untested), some BSD kernels and as third-party Microsoft Windows
drivers. ext2 was the default file system in several Linux distributions,
including Debian and Red Hat Linux, until supplanted more recently by ext3.
The early development of the Linux kernel was made as a cross-development
under the Minix operating system. Naturally, it was obvious that the Minix
file system would be used as Linux's first file system. The Minix file
system was mostly free of bugs, but used 16-bit offsets internally and thus
only had a maximum size limit of 64 megabytes. There was also a filename
length limit of 14 characters. Because of these limitations, work began on a
replacement native file system for Linux.
To ease the addition of new file systems and provide a generic file API, VFS,
a virtual file system layer was added to the Linux kernel. The extended file
system (ext), was released in April 1992 as the first file system using the
VFS API and was included in Linux version 0.96c. The ext file system solved
the two major problems in the Minix file system (maximum partition size and
filename length limitation to 14 characters), and allowed 2 gigabytes of
data and filenames of up to 255 characters. But it still had problems: there
was no support for separate access, inode modification and data modification
timestamps.
As a solution for these problems, two new file systems were developed in
January 1993: xiafs and the second extended file system (ext2), which was an
overhaul of the extended file system incorporating many ideas from the
Berkeley Fast File System. ext2 was also designed with extensibility in
mind, with space left in many of its on-disk data structures for use by
future versions.
Since then, ext2 has been a tested for many of the new extensions to the VFS
API. Features such as POSIX ACLs and extended attributes were generally
implemented first on ext2 because it was relatively simple to extend and its
internals were well-understood.
On Linux kernels prior to 2.6, restrictions in the block driver mean that
ext2 file systems have a maximum file size of 2047 gigabytes (2 terabytes).
Later Linux kernels allow for larger file sizes, however 32-bit systems are
still restricted to 2 TiB file sizes.
ext2 is still recommended over journalized file systems for using in
bootable USB sticks and likely other solid-state drives. ext2 shows less
writing activity than ext3, as it does not need to write the journal. As the
major aging factor of a Flash chip is the number of erase cycles, and as
those happen frequently on writes, this increases the life span of the USB
stick. Another good practice for file systems on Flash device is the use of
the noatime mount option, for the same reason.
|