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. 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.