Architecture
SaunaFS Cluster
SaunaFS is a distributed POSIX file system with high-performance, scalability, and reliability. It provides high availability, data integrity, fault tolerance, and performance on par with local file systems.
SaunaFS Cluster consists of:
- Metadata Servers
- Master server - keeps metadata (like file names, modification timestamps, directory trees).
- Shadow masters - the role of shadow masters is just to keep in sync with the active master servers. Any shadow master server is ready to take the role of the active master server at any time.
- Chunkservers - that store the data. Each file is divided into blocks called chunks (each up to 64 MiB) which are stored on the chunkservers.
In single kubernetes cluster there can be multiple independent SaunaFS Clusters.
SaunaFS cluster managed by SaunaFS Operator can be accessed from both inside and outside kubernetes cluster - access from outside k8s cluster.
TIP
For more details about SaunaFS please refer to SaunaFS documentation.
Metadata servers
Metadata servers are created by SaunaFS Operator based on Metadata volumes present in cluster. Metadata server and metadata volume are in one-to-one relationships - for every metadata volume there is one metadata server scheduled.
From all metadata servers present in SaunaFS cluster one is chosen to be Master Server using Raft consensus algorithm.
Chunk servers
Chunk servers are created by SaunaFS Operator based on SaunaFS Cluster resource specification and chunk volumes present in cluster.
SaunaFS Operator schedules chunkservers based on these targets:
- chunkservers should have total volume as equal as possible.
- there should be at least 5 chunk servers to satisfy most common replication goals - up to 5 chunk copies or erasure coding 3+2.
That means that for example in 3 node configuration and with 2 equally sized chunk volumes for each node, operator
will schedule total number of 6 chunkservers (two per node). That's to create at least 5 chunkservers in cluster with equal total capacity.
Another example - in 5 node configuration and with 2 chunk volumes on each node, operator
will schedule 5 chunkservers (one per node) each using two available volumes.
Access from outside k8s cluster
SaunaFS cluster will have external access only if SaunafsCluster resource will have spec.exposeExternally
set. After it's set chunkservers will use kubernetes node host network and master server load balancer will be created to allow access from outside kubernetes cluster.
Cluster might be created and configured for internal use only and chunkserver port range can be configured later if necessary. After it's set chunkservers will be redeployed in rolling update fashion with properly set port.