A hardware-based file system includes multiple linked sub-modules that
perform functions ancillary to client data handling. Each sub-module is
associated with a metadata cache. A doubly-rooted structure is used to
store each file system object at successive checkpoints. Metadata is
stored within an object and/or as a separate object. Provisions are made
for allocating sparse objects. A delayed write feature is used for
writing certain objects into non-volatile storage. Checkpoints can be
retained as read-only versions of the file system. Modifications to the
file system are accomplished without affecting the contents of retained
checkpoints. The file system can be reverted to a retained checkpoint.
Multiple file servers can be interconnected as a cluster, and each file
server stores requests from another file server. Interconnections between
file servers can be dynamically modified. A distributed locking mechanism
is used to control access to file system objects stored by the file
servers.