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: |
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.