Requirements for a Journaling Filesystem
- Provide fast and reliable fault recovery: all metadata is recovered (backed out or re-applied) when the filesystem is mounted after a system failure. The time to recover should not increase significantly as the size of the disk partitions increase.
- Be scalable: the filesystem must be scalable in terms of supporting large partition sizes, large file sizes (including random access) and large numbers of files.
- Provide high performance: adding journaling support to a filesystem should not significantly impact normal operation, such as reads (including random access) and writes.
- Commitment: once an operation has successfully returned to the user of the filesystem, the operation should not be backed out (the transaction should be committed if the operation was successfully returned to the user).
- Appropriate utilities: create a filesystem, recover a filesystem after a system failure, backup (dump) and restore the filesystem, defragment (for some filesystems this utility is unnecessary because fragmentation is handled by the filesystem itself).
- Flexibility: support should exist for resizing the filesystem across physical partitions while the filesystem is on-line (using the LVM interface).
- Reliable operation: the filesystem should be stable at all times.