Scalability in the XFS File System
Notes by Yonghong Mao, Yu Zhang, February 1998
Focus:
Mechanisms used by XFS to scale capacity and performance.
Think Big
New applications => large I/O capacity and high I/O bandwidth
=> XFS scale capacity and performance to support
- large and/or sparse files
- large number of files
- large directories
- high performance I/O
- fast crash recovery
Scalability
1. Capacity Scalability
- Full 64-bit file system
- Allocation Groups
- Manage free space: extent-oriented B+ trees for each AG
- Manage allocated space: for each file, extent map + B+ tree for extent descriptors ( if
overflow)
- Dynamically allocate inodes: inode chunk B+ tree for each AG
- Large directories: file name B+ tree for each directory ( using fixed-size hash value as
key)
- Fast Crash Recovery: asynchronous write-ahead log to manage metadata
2. Performance Scalability
key: Large I/O Request Size + I/O request parallelism
- Allocate files contiguously
- Delay allocation
- Large extents
- Per FS-based block size
- Less fragmentation
- Speed file I/O
- Read: large read buffers ( adjustable), multiple read ahead buffers
- Write: asynchronous, clustering write ---- echo with delay allocation
- Directed I/O for sophisticated applications: user buffer <---> disk array
- Parallel file access:
user
buffer <--------> buffer cache <--------> disk array
*
* * multiple
CPUs( processes, requests)
- Manage metadata
- Asychronous WAL: pin modified resource in memory until the logging data is
committed.
- Dedicated log device if heave logging workloads
- Parallelize copying procedure for log -- the only centralized resource
Future work ( at that time...)
- File scanvenger program --- will be complex!
- Defragmentation Utility
Discussion points
- What do you think of such a kind of design " with large systems and file systems in
mind" at the beginning? Is it applicable to traditional smaller applications?
- Pervasive use of B+ tree: complex? scalable? good performance?
- Compare the different way FFS and XFS support reference locality.
- Comparing FFS, EFS, XFS, could you come to some conclusions about the trend of local
file system design?
- The similarities & differences of XFS's support for multiprocessor systems and a
distributed file system design.
- What do you think of the XFS group? ( None of them holds a Ph.D... ) Is it merely an
exception?