Shared storage file systems
Shared storage file systems, sometimes known as cluster file systems, give each server in the cluster direct access to a shared block device. They use a local storage area network (SAN).
- Comparison with network file systems
- Like client/server file systems, shared storage file systems work on a set of servers that are all members of a cluster. Unlike NFS, however, no single server provides access to data or metadata to other members. Each member of the cluster has direct access to the same storage device (the shared storage). All cluster member nodes access the same set of files.
- Concurrency
-
Cache coherency is key in a clustered file system to ensure data consistency and integrity. There must be a single version of all files in a cluster visible to all nodes within a cluster. The file system must prevent cluster members from updating the same storage block simultaneously and causing data corruption. In order to do that, shared storage file systems use a cluster-wide locking mechanism. This controls access to the storage as a method to prevent conflicts.
For example, before creating a new file or writing to a file opened on multiple servers, the file system component must obtain the correct lock.
The requirement of cluster file systems is to provide a highly available service like an Apache web server. Any member of the cluster can see a fully coherent view of the data stored in their shared disk file system. All updates are arbitrated correctly by the locking mechanisms.
- Performance characteristics
-
Shared disk file systems do not always perform as well as local file systems running on the same system. This is due to the computational cost of the locking overhead. Shared disk file systems perform well with certain workloads where each node writes almost exclusively to its own set of files. These files are not shared with other nodes.
Alternatively, a set of files may be shared across nodes in an almost exclusively read-only manner. This results in a minimum of cross-node cache invalidation and can maximize performance.
Configuring a shared disk file system is complex. Tuning an application to perform well on a shared disk file system can be challenging.