A computer readable medium for providing high availability of a service, comprising a plurality of instructions, which when executed, cause a cluster manager to:
- allocate said service and at least one shared volume of a first mass storage device associated with said service to a first server of a first subcluster that (i) is located at a first site, and (ii) comprises a plurality of servers that share said first mass storage device;
- mirror said at least one shared volume to a second mass storage device of a second subcluster that (i) is located at a second site, and (ii) comprises at least one server in order to obtain a first mirrored copy of said at least one shared volume at said second site;
- determine to reallocate said service to a first server of said second subcluster;
- allocate said first mirrored copy to said first server of said second subcluster;
- and
- allocate said service to said first server of said second subcluster in response to determining to reallocate said service to said first server of said first subcluster.