HP JFS 3.3 and HP OnLineJFS 3.3 VERITAS File System 3.3 System Administrator's Guide

Chapter 1 23
The VxFS File System
Extent-Based Allocation
Extent-Based Allocation
Disk space is allocated in 1024-byte sectors to form logical blocks. VxFS
supports logical block sizes of 1024, 2048, 4096, and 8192 bytes. The
default block size is 1K for file systems up to 8 GB, 2K for file systems up
to 16 GB, 4K for file systems up to 32 GB, and 8K for file systems beyond
this size.
An
extent
is defined as one or more adjacent blocks of data within the
file system. An extent is presented as an
address-length
pair, which
identifies the starting block address and the length of the extent (in file
system or logical blocks). VxFS allocates storage in groups of extents
rather than a block at a time (as seen in the HFS file system).
Extents allow disk I/O to take place in units of multiple blocks if storage
is allocated in consecutive blocks. For sequential I/O, multiple block
operations are considerably faster than block-at-a-time operations;
almost all disk drives accept I/O operations of multiple blocks.
The Extent allocation only slightly alters the interpretation of addressed
blocks from the inode structure compared to block based inodes. HFS file
system inode structure contains the addresses of 12 direct blocks, one
indirect block, and one double indirect block. An indirect block contains
the addresses of other blocks. The HFS indirect block size is 8K and each
address is 4 bytes long. HFS inodes therefore can address 12 blocks
directly and up to 2048 more blocks through one indirect address.
A VxFS inode is similar to the HFS inode and references 10 direct
extents, each of which are pairs of starting block addresses and lengths
in blocks. The VxFS inode also points to two indirect address extents,
which contain the addresses of other extents:
The first indirect address extent is used for single indirection; each
entry in the extent indicates the starting block number of an indirect
data extent.
The second indirect address extent is used for double indirection;
each entry in the extent indicates the starting block number of a
single indirect address extent.
Each indirect address extent is 8K long and contains 2048 entries. All
indirect data extents for a file must be the same size; this size is set when
the first indirect data extent is allocated and stored in the inode.
Directory inodes always use an 8K indirect data extent size. Regular file