Mirror Sets

Parent Previous Next

Mirror Sets


A mirror set is a collection of stores using RAID 1 to provide data redundancy and performance benefits. Mirror sets are logical stores that are denoted by store controller 25 (Z).


A member store of the mirror set has a structure at the end of the store that indicates information about the mirror set member:

type TMirror_Header = packed record

                         Signature : int64 ;

                         Set_Name : array[ 0..63 ] of char ;

                         Set_GUID : TGUID ;

                         Flags : cardinal ;

                         Sequence : int64 ;

                         Timestamp : int64 ;

                         Reserved : array[ 0..147 ] of byte ;

                     end ;


The following table describes the contents of this structure:

Item

Description

Signature

A value indicating a mirror set header:
FF FF 8C 01 00 8C FF FF

Set_Name

The name of the mirror set that this is a member of (null terminated)

Set_GUID

The GUID associated with this mirror set

Flags

0 = normal, 1 = applies to partition

Sequence

Sequence number (see below)

Timestamp

Time of last synchronization

Reserved

Reserved for future use.  Should be zeroes.


When a member of a set is mounted into the mirror set, if it has a later timestamp and sequence, it becomes the reference store.  Otherwise, it is brought into synchronization with the rest of mirror set - a process called reconciliation.  This involves copying the data from the reference store to the new member.  If data is written to the store before reconciliation is finished, the new data is also written to the new store so that it will not become unreconciled as the set is updated.
While a member is unreconciled, it is never read from since it may contain out-of-date data.