- Optimal performance is not a requirement, it should just perform "ok".
- Each user should have their own zfs filesystem. This is because some prefer hourly snapshots and wants to keep snapshots for a long time, while some prefer daily snaphots for 30 days.
- Users should access the "same" server, we don't want to manage tenfolds of servers with ldap and other services.
- It should work, as little downtime as possible.
- Should be possible to scale it even further, there might be as many as 10000+ users in a few years.
Our first idea was creating many NFS filesystems and mount them on one server. Though after reading this here, we figured out that this will maybe be a bad idea, even with amd.
Our second idea is using ISCSI. Creating a ZFS filesystem above ZVOL targets. In theory this should be great, but I know that ISCSI for FreeBSD is still very new and there are some issues about stability and memory leaks. Are there anyone with positive experience with FreeBSD and ISCSI and using it just fine in a production environment?
I also have some questions about how ZFS above ZFS works when it comes to data consistency.
Is it enough to scrub the ZVOL's? I dont have to run scrub on the initiator? I guess scrubbing 1PB would never finish. I could possibly also disable checksums on the initiator? What about deduplication?
What happen if a ZVOL target dies? When I google this I find a lot of complaints that the system will just hang or panic. Most comments are with OpenSolaris, how is this with FreeBSD? Should I use failmode=continue?
Our third idea is creating file volumes at top of ZFS for each storage node, exporting with NFS, and then creating a ZFS filesystem on top of those large files. This solution will probably perform worse than ISCSI, but will it be more realiable than iscsi?
Suggestions and criticism are very welcome
