Mirroring is a process whereby a group of two or more storage devices are configured to maintain identical copies of data (RAID 1 is one example of mirroring). This configuration of storage devices is known as a mirror group and each of the storage devices are members of the mirror group. Every write operation is applied to all members of the mirror group and read operations may be fulfilled from any member of the mirror group.
The primary benefit of mirroring is to avoid unplanned downtime due to hardware failure of a member of the mirror group. This protection against storage hardware failures is transparent to applications.
The example configurations described here are simple examples to show the concepts of mirroring. Mirroring is typically used in more complex configurations that include additional redundancy techniques.
Mirroring provides no protection against data being compromised, deleted, or overwritten.
Storage administrators must consider factors such as system performance, cost-effectiveness, and complexity when designing a mirroring-based solution.
Software-based mirroring
is a process provided by software in a host (e.g., by the operating system or third-party software) that consumes additional host CPU resources instead of requiring additional hardware resources to support mirroring.
Hardware-based mirroring
is a process provided by software in a host (e.g., by the operating system or third-party software) that consumes additional host CPU resources instead of requiring additional hardware resources to support mirroring.
Host controller-based mirroring
is depicted in Figure 1 and shows a configuration where more than one storage device in a mirror group is connected to the same host controller that performs the mirroring operation (i.e., the host software performs writes to the host controller which then writes that data to all the members of the mirror group; the host software performs reads to the host controller which then reads data from any member of the mirror group). Failure of a storage device in the mirror group does not impact access to the data (i.e., RTO (Recovery Time Objective) and RPO (Recovery Point Objective) are zero) since the host controller is able to read the data from another member of the mirror group. With this configuration, the host controller is a single point of failure.


Storage controller-based mirroring
is depicted in Figure 2 and shows a configuration where the storage devices of a mirror group are connected to a storage controller in the storage subsystem. In this configuration, the host writes data to the storage controller which writes the data to the members of the mirror group. Failure of a storage device in the mirror group does not impact access to the data since the storage controller is able to read the data from another member of the mirror group. With this configuration, the storage controller is a single point of failure.
Fabric-based mirroring
is depicted in Figure 3 and shows a configuration where the storage fabric intercepts read and write commands from the host. For each write command the fabric issues write commands to all members of the mirror group. For each read command the fabric issues a read command to a member of the mirror group. Failure of one member of the mirror group does not impact access to the data since the fabric is able to read the data from another member of the mirror group.
