Hacker News new | ask | show | jobs
by StrangeDoctor 324 days ago
raidz doesn't work exactly like raid, but conceptually it's helpful to carry over that knowledge. the biggest difference is that all drives can potentially have parity blocks on them.

1. If a drive is missing, and it contained a data block you want to read, then you have to do parity calculations to recalculate that block. this means potentially all drives must use their read capacity for this calculation. I think this would be considered stress and max read throughput is significantly reduced. If your block size is very large, or your files much smaller you might get away with minimal performance hit but you're also wasting a lot of capacity/benefit of z2. (In certain pathological cases z2 can have the storage profile of a double mirror, but with all the complications of z2) The rebuild process will require a recalculation for every missing block type, basically every drive will need to perform a read for each restored block. Writing new data to a degraded z2 pool can force zfs to be quite wasteful. For example, a 5 disk z2 pool with 1 drive missing will mean a maximum of 2 data blocks with 2 parity blocks, instead of the expected 3 and 2. restoring that drive will not automatically restore that capacity unless the files are written again to the restored pool. The drives will be filled unevenly, this has performance and storage efficiency penalties.

2. If you replace both degraded drives at the same time, and you aren't using resilver_defered, it should only need to read all other drives once and write to both new disks. But you might not want this, depending on many complicated factors.