A method or apparatus for cooperative data replication. The method in one
embodiment can be performed by a computer system or several computer
systems executing software instructions. The method may include modifying
data in n data blocks of a data volume to create n modified data blocks.
A copy of each of the n modified data blocks is created for subsequent
transfer to other nodes. A first computer system transmits the n modified
data block copies to n nodes, respectively, wherein each of the n nodes
comprises a second computer system and a replica of the data volume prior
to the modification of data in the n data blocks. Thereafter, one of the
n second computer systems transmits a copy of the modified data block
copy it receives to another of the n second computer systems.