SIOS DataKeeper Resynchronization
SIOS DataKeeper performs resynchronization through the use of a bitmap file (intent log). It allocates memory that is used to keep track of “dirty” or “clean” blocks. When a full resync begins, SIOS DataKeeper initializes the bit for each block that is in use by the file system to 1 (“dirty”), indicating that it needs to be sent to the target system. A full resync occurs at the initial creation of a mirror and during the resync operation after a mirror is broken. It then starts at the beginning of the bitmap, finds the first block whose bit is set to 1 or dirty, reads the corresponding block from the local hard disk, and sends it to the remote system. After this has completed successfully, it sets the block to 0 (“clean”). SIOS DataKeeper then finds the next dirty bit and repeats this process.
As new writes come in during a resync, the corresponding blocks are set to 1 or dirty.
Once resync gets to the end of the bitmap, it looks to see if there are still any dirty blocks. It does this through a counter that is incremented when one is made dirty and decremented when cleaned. If any blocks are dirty, it resets its pointer to the beginning of the bitmap and starts again, only sending the dirty blocks to the remote system.
This process continues for multiple passes until all blocks are clean. When this happens, the mirror will go from the Resynchronizing state to the Mirroring state, and at that point, every write is mirrored (the bitmap is no longer necessary at that point).
You can follow the resynchronization process by viewing the resynchronization control counters in Performance Monitor.
This same resynchronization mechanism is used when you CONTINUE a PAUSED mirror.
Initial Creation of a Mirror
When the mirror is created, DataKeeper must perform an initial synchronization of the data from the source volume to the target volume. This is referred to as a full resync. However, prior to this initial full resync of the data, DataKeeper first performs a process called “whitespace elimination” where all blocks of currently unused space on the source volume are eliminated from the initial synchronization and those blocks do not have to be replicated to the target volume.
Example: Whitespace Elimination
|Source Volume Capacity
|Source Volume Free Space
|Amount of data to be resynced from source volume to target volume during initial creation of the mirror.