This document is intended to list requirements for a mirroring solution on linux. The actual implementation may involve linux kernel module dm-mirror and LVM2 user space tools.
The mirror design document for version 1 can be found here. The mirror design for version 2 will take place here.
List of requirements:
- Ability to handle device failures
- Ability to handle machine failures
- Ability to be used in a cluster
- Ability to preserve write ordering
- Ability to track sync-state on per-disk (leg) basis
- Ability to complete a write request after completion to 1 disk (leg) (AKA asynchronous mirroring, AKA rtmirroring)
- Ability to handle transient device failures.
- Ability to have at least two log devices to avoid single point of log device failure. The log devices can
- be used in replicated mode or hot/spare standby mode.
- Select the most recently used master device as master at boot time if the mirror is not in sync.
- Ability to operate in read/write mode after reboot even if there is only one mirror device detected.