Goals of XFS - Support Very Large File Systems
- Fast crash recovery.
- High I/O performance.
- Manage petabytes of storage.
- Support directories with several thousand entries.
- Support large numbers of files, large contiguous files, and full 64 bit sparse files.
Why Current File Systems Cannot Meet the Needs of Large Systems
- No known system supported full 64 bit sparse files, directories with more than a few thousand entries, or large numbers of files.
- As the size of the system increases, the already slow performance of file system scavenger programs deteriorate.
- Systems like EFS use data structures that simply do not scale.
- Mechanisms for allocating large, contiguous files (at the time) did not scale well.
How XFS Achieves It's Objectives
- For crash recovery, an asynchronous write-ahead log updates metadata atomically.
- The system is partitioned into allocation groups (AG) where each group has its own data structures for managing free space and inodes.
- Free space is managed with 2 B+ trees. One indexed on starting blocks and the other on the length of free extents.
- Inodes are allocated dynamically in 64 inode chunks.
- Directory entries are hashed into a B+ tree.
- File allocation is delayed.
- Extent descriptors are very large.
- XFS allows programs to bypass the system's buffer cache when performing R/W file operations.
- System has large read buffers, several read ahead buffers, and does asynchronous, clustering writes.
Problems with XFS
- System is complex.
- Errors, which corrupt random blocks in the file system, are not recoverable.
- XFS has fewer direct extent pointers in the inode.
- In the long term, fragmentation will still degrade performance.
- XFS does not support multiple writers.
Points to Ponder
- If XFS needs a scavenger program to recover random block corruption, can it still perform crash recovery for a large system?
- Does XFS exhibit reasonable performance for small to medium sized systems?
- Are B+ trees really the answer to scalability? What is the space vs. time trade-off?
- Is XFS a logical evolution from FFS and EFS or is it a radically different approach?
- How does the XFS multiprocessor design compare to designs for distributed file systems?
|