I have an RPi 5 8GB, a 6 bay HDD case (USB3.2 gen 2) and an assortment of old HDDs of varying sizes (1x1TB, 1x2TB, 2x3TB and 1x4TB) that I want to assemble into a NAS. I also have an old spare 128GB SATA SSD that if possible I would like to use for caching. I do plan to eventually upgrade all the drives to 4 or 8TB ones, but only as budget becomes available, which in practice means that I’m stuck with mismatched drives for a year or longer. And right now I’m weighing my options for the configuration. For the system I think I’m best served with the default RPi distro (basically Debian) with openmediavault. And what I’m stuck at is what file system and RAID configuration to use. Here are the features that I want, in the order of priority:
- At least 50% storage efficiency.
- Protection against bit rot.
- Ability to lose 2 disks without data loss (the HDDs are old, so I wouldn’t feel safe with just 1 disk of redundancy).
- Ability to add/remove/replace disks with as little headache as possible.
- Ability to efficiently use mismatched disks.
- Ease of software maintenance.
- Improve performance via caching with the spare SSD.
I’ve basically narrowed it down to 3 options that I think would be the best, but all of them have downsides that bother me a lot, so I’m wondering which you would pick if you had the same hardware to work with for a NAS…
I. Btrfs RAID1c3 for metadata, and RAID6 for data.
This would be the ideal solution for my use case if it actually works, because it covers points 1-6 without reservation, and for caching there are also some solutions (using bcache or lvm). However I read that RAID6 on btrfs is unstable, but I don’t know how unstable it is if I use the recommended approach with RIAD1c3 for metadata. Would I then be as safe as with ZFS RAID-Z2, or is btrfs RAID1c3 for metadata not sufficient to ensure data safety with RAID6 for data?
II. ZFS RAID-Z2.
This would give me points 1-3 and easier access to caching, though I will probably have less than 50% storage efficiency until I upgrade all the drives. But I will completely give up the ability to resize my array (beyond just upgrading to bigger disks), mismatched disks would just mean that storage on the bigger ones is completely wasted and I would have to be careful with system updates for the NAS because the ZFS driver is not part of the kernel.
III. Btrfs RAID1.
I would give up the 3rd requirement, but keep all of the other advantages of option I, and it is also considered stable and safe to use. With a bonus that restoring the array after a disk failure would go faster, so while the array would be at a greater risk while it’s being restored with a new disk, it would be back to full strength quicker.
So I guess my main question is, how safe is option I. And if it’s not as safe as option II, what would you pick for this project? Maybe you also have a different suggestion that I hadn’t considered or dismissed too early (bcachefs?).