Patent ID: 8214588

Claim:
A method for data mirroring comprising: receiving, at a first storage node, a first plurality of data transactions from a host, each data transaction of the first plurality of data transactions comprising data to be stored by the first storage node, wherein the first plurality of data transactions are each from a different application; storing the data in the first storage node; creating, by the first storage node, a first batch of data transactions comprising the first plurality of data transactions for transmittal to a second storage node; returning to the host, from the first storage node, an acknowledgment of having stored the data in the first batch of data transactions; receiving, at the first storage node, a second plurality of data transactions from the host, wherein: the host transmits the second plurality of data transactions in response to receiving the acknowledgement, each data transaction of the second plurality of data transactions comprises data to be stored by the first storage node, the second plurality of data transactions are each from a different application, and at least one data transaction in the second plurality of data transactions is from a same application as a data transaction in the first plurality of data transactions and is a subsequent, sequentially ordered data transaction with respect to the data transaction in the first plurality of data transactions that is from the same application; creating, at the first storage node, a second batch of the data transactions comprising the second plurality of data transactions for transmittal to the second storage node; transmitting the data in the first and second batches of data transactions from the first storage node to a second storage node; transmitting to the second storage node a first record of the data transactions in the first batch and a second record of the data transactions in the second batch; and storing the data in the second storage node responsively to the first and second records so that all the data indicated by the data transactions in the first batch are stored by the second storage node prior to storing the data indicated by the data transactions in the second batch.