Understanding how Volume Replicator logs writes to the Replicator Log

Volume Replicator receives writes from the application and queues them in the Primary Replicator Log for transmission to the Secondary hosts. If a Primary RVG is connected to multiple Secondary RVGs, the Replicator Log on the Primary is used to manage the writes for these Secondary hosts. The Replicator Log header contains a specific set of pointers for each Secondary which indicates the writes that have not been sent to the corresponding Secondary.

This section explains the working of the Replicator Log as a circular buffer.

Figure: Illustrates the working of the Replicator Log as a circular buffer

Illustrates the working of the Replicator Log as a circular buffer

The first write that comes in is Write 1, which also represents the start of log for the Secondary. Volume Replicator logs Write 2, Write 3, Write m one after the other until it reaches the end of the Replicator Log. Because the Replicator Log is a circular log the next write, Write m+1 wraps around and logging continues. When the Primary receives the data acknowledgment from this Secondary host for Write 1, Volume Replicator marks the Write 1 as complete in the Replicator Log. Volume Replicator then processes Write 2, Write 3, and so on.

Secondary1 is 200 writes or updates behind, whereas Secondary2 is 150 writes behind. If the end of log pointer reaches the start of log pointer of the Secondary, the Replicator Log overflows for this Secondary.

Figure: The working of the Replicator Log when the Secondary is behind

The working of the Replicator Log when the Secondary is behind

The Secondary hosts for which the replication is configured in synchronous mode are usually up-to-date. Typically, the number of simultaneous I/O operationsthat the application performs separates the start and the end of log pointers of synchronous RLINKs (Secondaries). For asynchronous RLINKs, the difference between the start of log pointer and end of log pointers reflect how many outstanding writes have yet to be processed, that is, how behind is the RLINK. Different RLINKs usually have start of log pointers indicating different places in the Replicator Log; this reflects the difference in the rate at which data is sent to the Secondary. After the Primary receives the data acknowledgment from all the Secondary hosts, Volume Replicator marks the write as complete in the Replicator Log volume.