Hard drives have grown in size, and dropped in price in recent years. It is not difficult to configure 120GB of space for less than $200. Consider that most operating systems can be installed in 6GB or less, and that many companies have evolved to a server-centric model where all data is stored on fileservers. The end result is a large amount of unused disk space. For example, lets consider a company with 1000 desktops, each with a 40GB internal drive, of which 6GB is used for the operating system and locally installed tools. This leave 34GB per machine, for a total of 34TB of unused space. To make matters worse, if users are allowed to store data on the local drives, and the company does not backup local drives, then the worse case is that there is 34TB of data that is NOT backed up! This number could be larger than the largest single server in the company's data center. Imagine the possibilities if all the local storage devices could be clustered together.
A "client" is an end-user workstation that mounts a "cluster filesystem"
from a "cluster". The client will run a "cluster client daemon" (ccd) which
will provide the interface between user applications and the "cluster servers".
This is similar to the NFS daemon "biod".
A "cluster" is defined as a collection of networked machines ("nodes") that have been administratively grouped. Each cluster supports a single cluster filesystem. A set of "cluster server daemons" (csd) will maintain a database that maps cluster pathnames to the physical locations of files.
A "sub-cluster" is defined as a collection of networked machines ("nodes")
that have been administratively grouped, based on physical location. This
optional grouping is used to managing the mirroring of files. A file
can not be mirrored to another node within the same sub-cluster.
| Standalone |
NFS |
Cluster |
|---|---|---|
| application |
application |
application |
| NFS client (biod) |
Cluster client (ccd) |
|
| Cluster server (csd) |
||
| NFS server (nfsd) |
Node server (cnd) |
|
| filesystem |
filesystem |
filesystem |
| volume management |
volume management |
volume mangement |
| physical device |
physical device |
physical device |
The all basic file and directory system calls will be supported.
The following advanced operations will be supported by the cluster architecture:
This project is currently in the design phase. Comments and questions
are welcome. All design and development will be performed on Linux
systems, following POSIX standards. Code will be written in C.