@jay_tuckey , thanks for your lengthy comments. This is super-helpful stuff. I think this is another one of those cases where a lot of the documentation and online discussion that gets surfaced by google is old enough that it assumes SSDs-as-primary-storage are not a viable option, either because of price or because the endurance isn’t there to survive the intended use. That’s not really the case with modern NVMe SSDs. I think that’s where I started to get twisted up thinking I needed a slog with NVMe.
It sounds like, in general, sync writes aren’t going to impose a meaningful penalty for home server use cases when running on an NVMe pool, unless you’re doing something that needs every bit of performance you can get. Is that an accurate statement? If so, I really wish that was emphasized more in the most popular ZFS docs. (Then again, that’s more of a problem of Google tending to surface stuff from 2013 when you search for ZFS anything.)
Is it correct to think of the benefit of NVMe/U.2/U.3 storage (and to a lesser extent SATA/SAS SSDs) less about raw speed (though that’s important) and more about IOPS/random access/lower seek time?
I really appreciate the examples of the operations the slog is meant to speed up on spinning rust (that don’t really need to be sped up on NVMe), and your experience with write endurance in your own setup. You’re doing a lot of things I’d like to be doing eventually, so I’m a lot more optimistic that I’m actually going to end up with a working setup now and didn’t buy the wrong components (again).
Since I’m wanting to use the NVMe mirror pool for VM/LXC storage and database storage (and perhaps a few other things that prove to perform poorly on spinning rust, if that’s an issue), from what you wrote I should be just fine with an NVMe mirror, even if it’s constrained to PCIe 3.0x2 speeds.
(I’m going to attempt to run a Minecraft server off my 4x HDD mirror (8 disks) just to see what happens. I can always move the storage to the NVME later.)
This box has been running for a couple years without issues, and reports 145000 GB written to the SSD. It says it has 22 on the SSD_Life_Left SMART attribute, but not sure whether that means it’s 22% used or 22% left, I’m guessing 22% used.
Once i started messing with NVMe in Linux, I had to actually start learning how NVMe worked. One of the most aggravating things about that whole process was realizing how non-standard the SMART data can be across brands. HDDs aren’t horrible, but can still be odd–though I think that’s a function of not needing to deep dive into the attributes that much. The data I need to figure out if there’s something wrong with an HDD is pretty standardized at this point.
But endurance is really important for solid-state storage, so it’s not great that every manufacturer seems to choose to express it differently. I usually end up spending a lot of time hunting through documentation to try to figure out what their attributes mean. But I’m always happy to at least end up with drives that expose endurance data at all. I’ve ran into a few that smartctl
couldn’t pull anything meaningful off of and that I had to boot into Windows to use the manufacturer’s utility to check. Those were infuriating.
Maybe you could try that with the one you’re not sure about? That 22 percent number would have me wary.
Main benefit of enterprise gear is you get super consistent latency, but for my use cases this hasn’t been important.
Thanks for pointing that out. That’s not worth the price premium, IMHO. I’m pretty confident I can get good deals on SATA/SAS enterprise SSDs ~2 TB or less at this point, but used enterprise NVMe are not there yet, and the bigger capacity stuff on the used market is all u.2 and PCIe card form factor.