A degraded array is a problem you have time to think about. A rebuild running against the wrong member is a problem measured in minutes, and the controller will offer you one without hesitating.
Nearly every RAID case that arrives at this lab failed twice. The first failure is the one people describe on the phone: a disk died, the controller dropped a member, the volume went offline. The second failure is the one that actually cost the data, and it was carried out deliberately, by someone trying to help.
Redundancy is not durability. A RAID 5 set tolerates one member failing, and a RAID 6 set tolerates two. What redundancy buys you is time to replace the failed member, and nothing else.
The trouble is that losing the first member is silent. The volume stays up, performance barely moves, and unless someone is actually reading the alerts, nothing visibly changes. Arrays routinely run degraded for weeks or months. By the time anyone notices, the noticing event is the second disk going, and at that point the array is offline and the situation is already serious.
It is rarely coincidence. The members were bought together, from the same batch, and have run the same hours under the same thermal and vibration conditions. They age together. On top of that, a rebuild is the heaviest sustained read load an array ever sees: every remaining member is read end to end to recompute the missing one. A marginal disk that coped fine with normal use can fail precisely during that read. Which means the rebuild itself is when the next failure is most likely.
Here is where cases are lost. Suppose disk 3 dropped out two months ago and nobody noticed. The array kept running on the remaining members, and every write since then has updated them. Disk 3 still spins, and still holds data, but that data is two months out of date. In array terms, it is stale.
Then disk 5 fails, and the volume goes offline. The array is now short two members and will not assemble. Someone looks in the controller UI, sees that disk 3 is present and appears healthy, and forces it back into the array to bring it online.
The controller accepts it and begins rebuilding. It now believes disk 3 holds current data, so it uses disk 3's two-month-old contents, together with the surviving members, to recompute what should be on the replacement for disk 5. Then it writes that computed result across the array.
The output is wrong, because one of the inputs was wrong. And it is not wrong in an obvious, contained way. Stripes are interleaved across all members, so the bad reconstruction is sprayed through the whole volume. File system metadata, database files and virtual machine disks all get corrupted in place, and the correct data that was on the surviving members is overwritten as the rebuild progresses.
Before the rebuild, that array was recoverable. Almost always fully. After a completed rebuild from a stale member, a significant amount of it is simply gone, because the correct version was overwritten by a computed wrong one.
Every member is imaged independently, read-only, including the ones the controller had already given up on. Nothing is assembled on the original disks at any point.
The geometry is then derived from the images themselves rather than taken on trust from the controller: disk order, stripe size, parity rotation, and start offset, all determined by looking at where recognisable file system structures land. Staleness is worked out the same way, by comparing what each member holds against the others, which is what tells us which disk must be excluded from the reconstruction.
Only then is the array assembled virtually, from images, and mounted. If an assumption was wrong, the volume does not mount cleanly, the parameters are adjusted and it is tried again. The cost of being wrong is another attempt, not another loss. That is the whole difference between this and letting the controller do it.
Power it down and call before accepting any rebuild prompt. That one decision decides most RAID cases.