One of the more noteworthy features that Microsoft has added to Storage Spaces Direct in Windows Server 2019 is nested resiliency. Nested resiliency is designed to address one of the more fundamental problems of operating a dual node cluster. Specifically, it allows such a cluster to withstand multiple hardware failures while still maintaining storage functionality.
There are two different types of nested resiliency available in Storage Spaces Direct. Both types require that a cluster comprise exactly two nodes and that both cluster nodes be running Windows Server 2019. Nested resiliency is not supported in Windows Server 2016, nor can it be used in a three-node cluster.
The first type of nested resiliency that is available in Storage Spaces Direct is the nested two way mirror. This architecture provides quadruple data redundancy, while maintaining a relatively high level of performance. The disadvantage to using this approach, however, is that only 25% of the available storage is actually usable.
A nested two way mirror is essentially what its name describes: It’s a mirror of a mirror. Both of the servers within the cluster contain mirrored storage. However, there is a secondary mirror that spans the two servers (essentially creating a mirrored server architecture). The end result is that there are four separate copies of the data, with two copies residing on each server. Write operations are sent to all four volumes simultaneously, and any of the four data copies can be used for read operations.
The second type of nested resiliency that you can implement through Storage Spaces Direct on Windows Server 2019 is nested mirror accelerated parity. Nested mirror accelerated parity allows you to use a higher percentage of the available storage space, but is a bit more complicated to implement.
In some ways, nested mirror accelerated parity is similar to RAID 5+1. The RAID 5 architecture is probably familiar to most storage admins. In a RAID 5 configuration, disks are treated as a stripe set with parity. This parity information allows the array to continue functioning, even after a disk fails.
A normal RAID 5 array can survive one disk failure, but cannot survive two or more simultaneous disk failures. The RAID 5+1 configuration is designed to make the array more resilient to failure. The +1 in the RAID 5+1 name means that the entire RAID 5 array is mirrored, thereby allowing the array to withstand multiple, simultaneous disk failures.
Although RAID 5+1 was the basis for the nested mirror accelerated parity feature, nested mirror accelerated parity is not completely identical to RAID 5+1. Nested mirror accelerated parity uses a mixture of mirror and parity within each server. This entire architecture is then mirrored to a secondary server. This means that the two way mirror between the servers works in exactly the same way that it does in a basic nested two way mirror. However, the storage architecture used within each individual server is significantly different from that of a nested two way mirror.
As previously mentioned, nested mirror accelerated parity uses a mixture of mirroring and parity within an individual server. However, Windows is not performing server-level mirrored parity as would be the case with a true RAID 5+1 set. Instead, the mirror layer acts more like a write cache. The bulk of the data within a volume is held on parity storage (essentially RAID 5), but new writes are directed to simple, mirror storage within the server. The contents of that mirrored storage are eventually sent to the parity storage.
The first step in setting up nested storage resiliency is to define the storage tiers that you plan to use. In the case of nested mirror accelerated parity, for example, this means creating a mirror tier and a parity tier. For each tier, you will define settings such as the media type (HDD or SSD) and the number of data copies that you want to create. Once your storage tiers are in place, you can create volumes that utilize these tiers. In the case of nested mirror accelerated parity, two different tiers are used (mirrored and parity). As such, you will need to define the amount of space to be used within each tier.
The split between tiers is often expressed in terms of a percentage. In the Microsoft documentation, for example, you may see references to a 10% mirror or a 20% mirror. This means that 10% or 20% of the volume’s storage is mirrored, while the remaining percentage is based on parity. The mixture that you choose will have an effect on performance and on how much of the physical storage space is usable. You can find Microsoft’s full documentation of this feature here.