Many distributed systems are (ironically) less reliable than
centralized ones. A distributed file system without replication has
more failure modes than a centralized one, since the network between client
machines and the file server can fail as well as the file server itself.
Replication mechanisms for objects in a distributed
system can be subdivided into two main
classes.
-
Hot or Cold Standby.
-
Active replicas with Voting.
When the objects are changing rapidly, for instance in a rapidly
updated filesystem, the second approach is essential.
Replicated services lead to the requirement for <#692#> distributed two phase
locking<#692#>.
If several copies of an object are held replicated, the two phase
locking mechanism described above must be extended to deal with this. If
locks are granted independently on copies of the object, then it might be
possible for two separate transactions to acquire locks on separate copies
and create inconsistencies in the replicated file.
There are a range of solutions. One is to designate a primary object, and locks
always apply there - this can reduce availability of the object if the primary
fails.
Another extreme is propagate a lock for access to all copies of an
object. This is costly. Cost is reduced by only insisting that a write lock
must be applied at all sites, and a read at any one.