Not that it provides concrete options in deciding between the options
available here, but doesn't intent logging combined with checksums
allow this problem to be solved in software mirroring implementations
such as VxVM or ZFS? Intent logging allows you to play back pending
writes to deal with the question of differences in state after I/O is
interrupted without detectable erroring, and checksums let you figure
out whether a mirror is reading out data that is verifiably wrong
(which may be the checksum or the data). You've mentioned RAID 5 and
RAID 6 as solving these problems, where you by and large have to do
checksum/parity operations for most kinds of I/O, but these
characteristics needn't be exclusive to those RAID levels, even if
they are necessarily to their implementation, no? (Again, this is an
argument in principle, intended largely/solely as food for thought,
rather than claiming that these problems are solved in any of the
options at hand.)