File Syetem
File Syetem
Directory entries in the inode table require special attention. To test if an inode refers
to a directory file we can use the S_ISDIR(mode) macro:
if (S_ISDIR(inode.i_mode))
In the case of directory entries, the data blocks pointed by i_block[] contain a list of
the files in the directory and their respective inode numbers.
Locating a file
Once the inode of the file is known, the data blocks belonging to the hello.txt are specified
by the inode.block[] array.
ext3 filesystem
• ext3, or third extended filesystem, is a
journalled filesystem.
• The filesystem was merged with the mainline
Linux kernel in November 2001 from 2.4.15
onward.
• Its main advantage over ext2 is journaling,
which improves reliability and eliminates the
need to check the file system after an unclean
shutdown.
• ext3 adds the following features to ext2:
- A journal
- Online file system growth
- HTree indexing for larger directories – 32
bit
• Maximum file size is 16GB-2TB
• Maximum file system size is 2TB-32TB
• The max number of blocks for ext3 is 232
• Journalling levels:
– Journal (Lowest risk) -
Both metadata and file contents are written to the
journal before being committed to the main file
system.
– Ordered (medium risk) -
Only metadata is journalled, file contents are written
to the disk before associated metadata is marked as
committed in the journal.
– Writeback (highest risk) -
Only metadata is journalled, file contents are not.
Contents might be written before or after the journal
I is updated.
Block allocator
• When allocating a block for a file, the Ext3 block
allocator always starts from the block group
where the i-node structure is stored to keep the
meta-data and data blocks close to each other
• In case of multiple files allocating blocks
concurrently, the Ext3 block allocator uses block
reservation to make sure that subsequent
requests for blocks for a particular file get served
before it is interleaved with other files.
• Ext3 still uses the bitmap to search for the free
blocks to reserve
Disadvantages of ext3
• Ext3 lacks recent features such as extents, dynamic
allocation of inodes, block sub-allocation.
• A directory can have at the most 31998 subdirectories.
• No online defragmentation tool
• Does not support the recovery of deleted files
• Does not have native support for snapshots
• No check-summing while writing the journal
• Ext3 stores dates as Unix time using four bytes in the
file header. 32 bits does not give enough scope to
continue processing files beyond January 18, 2038.
ext4 filesystem
• It supports 48-bit block addressing, so it will
have 1 EB of maximum filesystem size and 16
TB of maximum file size.
• 1 EB = 1,048,576 TB (1 EB = 1024 PB, 1 PB =
1024 TB, 1 TB = 1024 GB)
• Ext4 allows an unlimited number of sub
directories
Extents
• Extent mapping is used in Ext4 to represent new files, rather
than the double, triple indirect block mapping used in Ext2/3.
Ext4 block allocator
• Main goal is to provide better allocation for
small and large files
• Ext4 uses a "multiblock allocator" (mballoc).
• Persistent pre-allocation :
Applications tell the filesystem to preallocate
the space.
• The feature is available via the
libc posix_fallocate() interface
Delayed Allocation
• Delayed allocation defers block allocations from
write() operation time to page flush time.
• It increases the opportunity to combine many
block allocation requests into a single request
reducing fragmentation
• Saves CPU cycles, and avoids unnecessary block
allocation for short-lived files
• The current Ext4 delayed allocation only supports
data=writeback journalling mode.
Inode features
• Larger inodes: Ext4 will default to 256 bytes. This is needed
to accommodate some extra fields (like nanosecond
timestamps or inode versioning), and the remaining space
of the inode will be used to store extend attributes that are
small enough to fit it that space. This will make the access
to those attributes much faster, and improves the
performance of applications that use extend attributes by a
factor of 3-7 times.
Multi-block No No Yes
allocation and
delayed allocation
Conclusion
• Linux file system follows the FSH standard
• Ext, ext2, ext3, ext4 are the versions of the ext
file system
• Ext is no longer supported by Linux kernel
• Ext4 filesystem supports 48-bit block
addressing, multi-block allocation, extents,
persistent pre-allocation, delayed allocation,
unlimited number of subdirectories, journal
checksumming and improved timestamps.
References
[1] ”Design and Implementation of the Seconded Extended
Filesystem”, Remy Card, Proceedings of the First Dutch
International Symposium on Linux, ISBN 9036703859
[2] Ext4 Linux Kernal Newbies – Online Documentation
[3] Introduction to Linux : Chapter 3 – General Overview of the
Linux Filesystem
[4] ”Ext4 block and inode allocator improvements”, Aneesh
Kumar et al, Proceesings of the Linux Symposium, 2008
[5] Linux Filesystem Hierarchy, Binh Nguyen
[6] www.tldp.org_LDP_tlk_fs_filesystem
[7] www.wikipedia.org – ext2, ext3, ext4