You can have 30TB of usable space with SHR or RAID 5
You can have 30TB of usable space with SHR or RAID 5
1. write performance equivalent to the slowest drive in that single vdev, rather than being striped across two vdevs
2. reads that cannot be distributed across the devices
3. riskier resilvers in the face of a failed drive
4. no ability to safely swap in new drives to existing vdevs as I described later in my post
5. less resilience to device failures
There are always tradeoffs. I hope this illuminates some that I have considered.
1. For sequential it's up to 3x with full stripe writes, up to 3x in random.
2. Reads in a mirror can't be 'distributed' for the sequential access anyway - repositioning would eat all benefits, it's always faster to read further than to seek and read.
3. For 4 drives it's negligible
4. You can even swap in smaller drives, if your total dataset would fit, no hard limit
5. Exactly the same
And you are free to use the free space as JBOD, mirror, mirrored mirror or stripe.
1. Yes, two mirrored vdevs are not the highest performance configuration for four devices, but they beat a single raidz vdev, which was the suggestion from the prior poster.
2. Random reads are more important than sequential for desktop responsiveness, and mirrors can serve different reads from each disk in the mirror, effectively doubling IOPS (minus overheads).
5. I am not sure I understand here. It seems like you're suggesting 3 data drives and a parity drive. This would allow at most one drive loss before data loss. Two mirrors allow at least one drive loss and up to two drive losses. If there were two parity drives, this would allow up to two drive losses without data losses, but it seems this would have to reduce your claim in point (1) to being 2x performance, since two drives would have to be used for parity writes.
2. Double IOPS sounds good on paper, at 100% it is still to slow, 100 IOPS at best.
5. Wait. Mirrored mirror (RAID11) on 4 drives would net you only 10TB usable.
'Mirrored pair' sounds like an ordinary RAID10 which can tolerate 1 drive loss because it's no longer redundant for half of the data. 'It can tolerate another loss on the still redundant data' is... like pulling out - works most of the time, but some become parents on the first try.
Hence RAID5 have the same redundancy tolerance (1 drive loss for losing R.) then, anything other is gambling.
The better question - do you have a proper backup to protect from a logical corruption? Even RAID11 wouldn't help from rf -rf in the wrong path.
Two mirrors == two vdevs, each a mirror of two disks:
$ zpool status
pool: zroot
state: ONLINE
scan: scrub repaired 0B in 02:01:39 with 0 errors on Wed Aug 16 14:08:39 2023
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada2p1.eli ONLINE 0 0 0
ada3p1.eli ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
ada0p1.eli ONLINE 0 0 0
ada1p1.eli ONLINE 0 0 0
In a best case failure scenario, I can lose one disk from each mirror. In a worst case failure scenario, I can lose one disk.With one parity disk out of four drives (for 30TB usable), in a best case failure scenario, I can lose one disk. In a worst case failure scenario, I can lose one.
These two descriptions of resiliency simply are not the same. I would obviously not run the pool in a degraded state for any longer than it takes to resilver the degraded mirror.
Assuming disk failures are independent and one disk has already failed:
- 2 mirror vdevs: 1/3 chance that a second disk failure causes data loss, 2/3 chance that it affects the other mirror
- 4 disks w/ 1 parity: 100% chance that a second disk failure causes data loss.
Again, this simply is not the same characterization of resilience. Please do not mistake this for me claiming that running this pool with three disks is anything other than a situation to remediate immediately.
I take regular snapshots, and scrub regularly to ensure data integrity. Critical data is stored in at least three places, one of which is not my home.
About a decade and a half ago I setup a 48 drive Sun 4540 this way. The OS needed 2 dedicated drives on the first controller so I assigned two neighboring drives on that controller near the intake fans as hot spares. The remaining drives were organized into mirror pairs with each drive on a separate controller. The final root was a concatenation of the pairs.
This setup proved to be very robust. Although I left the company when financial troubles pushed the founders into a messy divorce, one of the founders asked me to come back a few years later after they restructured. The 4540 had been moved to a new colo but otherwise ignored because none of the admins knew Solaris or bothered to check the monitoring systems.
When I returned I discovered in the time I was away 4 drives had failed but ZFS/smf happily took two of the failed drives offline and replaced them with the spares. The two other failed drives left their respective pools degraded but functional. Replacing the failed drives was easy once they arrived.
Although neglected for years, none of the applications or databases that relied on that server ever suffered any downtime from the drive failures.
Then you are just wasting 10TBs.
I'm firmly in Murphy's camp regarding the storage troubles (hell, I can't find a specific pic of my passed dog which I know I had from 4 (four!) copies of my photos, ffs) and I treat RAID just as a mean to increase availability.
In your case, if you really wouldn't run the degraded array until it is resilvered then your availability is excessive in the all cases except:
how long it would take you to recover/restore your data in a catastrophic failure?
And why do you have only the critical data 3-2-1ed?
As you have brought up, this configuration optimizes resilvering speed, aka minimizing time spent in a degraded state. Resilvering a mirror is faster than resilvering a raidz, as it requires only sequential read from the good drive and sequential write to the new drive. Resilvering a raidz thrashes all drives in the vdev and requires re-calculating parity along the way. Is it more likely that one of three drives in the degraded raidz1 fails during resilvering or that the one drive in the degraded mirror fails? That is a tough question to answer. What if all the drives are the same age? Well then the likelihood is greater that a resilver will cause a cascading failure. Hence my thrice-repeated desire to use the ability to swap new drives into old vdevs to mix ages, and my mixed-brand vdevs, as described in the root of this thread.
In short, resilvering is the highest-risk phase in a pool's lifecycle. I am paying an extra drive's worth of storage to optimize around this risk, and also to realize performance benefits we have discussed upthread.
Again, I will state that objectively measurable improvements combined with subjective perception of better desktop performance is sufficient for me to claim that the performance improvement matters.
My non-critical data is largely recoverable. Things like VM images and installers. These can be re-created and deployed from code that is in the critical portion, or downloaded from the internet. Indeed, my DR plan does not account for broad internet outages concurrent with a drive failure. A lot of the rest of the non-critical data is media that could be re-ripped from physical media (DVDs, Blu-rays). Being recoverable, it is not worth it to me to pay for cloud storage for the rest. Even "wasting" a drive's worth of storage, it is still a lot cheaper per gigabyte-year to ... you know, not pay for that.
So, why do you care so much about my specific storage setup? Does it pass muster yet, or am I still someone who is wrong on the internet to you?
Not that tough. If the load of 4 drives working bring them to malfunction then resilvering by pairs only prolongs the agony a bit and technically you are now 2 (or even 3 or 4) times more susceptible to a failure during rebuild (foreach stripe what would fail).
> Hence my thrice-repeated desire to use the ability to swap new drives into old vdevs to mix ages, and my mixed-brand vdevs, as described in the root of this thread.
LVM allows that without limits imposed by ZFS. Not applicable for your setup, sure.
> , and also to realize performance benefits we have discussed upthread
Depends on the workload. I had very good response from RAID0/10 SATA setups a decade ago (even from WD Greens), nowadays I find it inadequate for the current bloat.
> A lot of the rest of the non-critical data is media that could be re-ripped from physical media (DVDs, Blu-rays).
Understandable.
> So, why do you care so much about my specific storage setup?
Mostly idle curiosity. Especially with my first take (using LVM) is just inapplicable for you.
> Does it pass muster yet, or am I still someone who is wrong on the internet to you?
Harsh.
But besides the idle curiosity I'm interested in other people setups and in giving a free, no strings attached, advice[0].
To sum up your setup from my POV:
You are running a RAID10 setup to have the benefits of a slightly faster disk access and ease of resilvering. If there was a need to do something with this setup (and not limited to ZFS), I would consider the following:
use a part of the disks as a RAID5 (3+1) for the WORM-like data (ripped DVDs, installers etc): greater SEQ and RND access, more usable space
running RAID11 for the super critical data (so you can really lose 3 drives until you lose redundancy)
there are also an option to run one mirror and another mirror or two simple volumes to have a protection against the logical failure, but you have ZFS snapshots which covers this use-case, for the most part
Of course this is just fishes for though at best and again with ZFS (and [1]) there is not that much leeway, less the need to do anything.
[0] heh
I'll ask you a few questions in return: does it seem like I have not put a fair bit of thought into my storage needs? Do I seem ignorant of disk topologies and their tradeoffs?
In fact, I have run LVM as a storage manager in the past. There are many reasons I prefer ZFS. It is more rigid in some ways, and the benefits outweigh the bit of vdev inflexibility that I have to put up with. Perhaps understanding these preferences would be worthwhile before trying to tell me how to improve.
Frankly, you come across as trying to convince me that I am wrong and that you know better. There were several points that I brought up repeatedly which you have dismissed out of hand. As just one example, you insist on dismissing the benefit of improved random IOPS, despite admitting that there is a measurable improvement when running a pair of mirrors; I stated several times that it is objectively better (which you never debated) and I experience a subjective improvement in responsiveness (which you repeatedly dismiss as trivial, negligible, or otherwise unimportant. Regardless of any difference of opinion, flatly dismissing what I have to say is not a great approach to educating or advising. Forcing me to repeat myself without actually addressing the point is rude at best.
So, given that you clearly do not listen to me, I will treat your advice as worth exactly what I paid for it. And I hope you will forgive me if I do not consider repeating the same ideas and dismissing what I have to say as "idle curiosity". I do not say this out of malice. I have no reason to believe your intent is anything other than you say, but your intent is irrelevant; the effect of your communication is as I have described above.
Hopefully someone else reading this thread will learn something.