Hello all!
I am new to TrueNAS and ZFS and spend quite some time the last days reading up on the technicalities.
This forum and the TrueNAS documentation have been tremendously helpful in that!
I think I have a decent basic understanding of ZFS now, however not to the extent that I could give a definite answer to my question (which is more a ZFS than a TrueNAS question):
A friend and I are planning on each setting up a TrueNAS server, let's call them A and B.
We are talking about homeservers here, so rather small but properly build (server MOBO, ECC RAM,...).
Let's say, we have 6 HDDs in both A and B.
We are not expecting a lot of action on these servers, maybe 2 people using fileshare, something syncy (Nextcloud, Syncthing, ...), maybe git.
(Dataintegrety > performance.)
Now the idea is to use each other's NAS as a backup, so B to backup A and A to backup B.
Let's say backup is performed via zfs snapshots and replication (though I don't think it matters).
I'm pretty sure that this would be no problem at all if both A and B have two zpools, one for data and one for the other's backup (at least I can't think of a reason why that would be bad).
However, as said, there both homeservers and only equipped with a comparably small number of HDDs.
I dislike the idea of running 2 zpools with 2+1 raidz1 on both machines.
I'd much rather run one zpool using 4+2 raidz2 or even 3+3 raid3 as it's much more fault tolerant.
(Ok a compromise would be 3+2 Raidz2 for the data pool and 1 plain vdev for the backup pool. Doesn't feel good without parity on the backup pool).
So my question is, if both A and B each have one zpool with e.g. 4+2 Raidz2 or 3+3 Raidz3 and a structure something like this (ignoring possible subdatasets):
on machine A:
on machine B:
what scenarios are there that a corruption of
For example, if either A or B does not use ECC, I understand how that could lead to a corruption of one of the pools and its backup which would corrupt the full pool that the backup resides on.
With that out of the way using ECC RAM, is the above layout still a good idea?
It feels to me that it's not, however I can't really say why since I am not fully aware of all the possible corruptions that could destroy a pool and its backup pool.
Looking forward to your insight!
I am new to TrueNAS and ZFS and spend quite some time the last days reading up on the technicalities.
This forum and the TrueNAS documentation have been tremendously helpful in that!
I think I have a decent basic understanding of ZFS now, however not to the extent that I could give a definite answer to my question (which is more a ZFS than a TrueNAS question):
A friend and I are planning on each setting up a TrueNAS server, let's call them A and B.
We are talking about homeservers here, so rather small but properly build (server MOBO, ECC RAM,...).
Let's say, we have 6 HDDs in both A and B.
We are not expecting a lot of action on these servers, maybe 2 people using fileshare, something syncy (Nextcloud, Syncthing, ...), maybe git.
(Dataintegrety > performance.)
Now the idea is to use each other's NAS as a backup, so B to backup A and A to backup B.
Let's say backup is performed via zfs snapshots and replication (though I don't think it matters).
I'm pretty sure that this would be no problem at all if both A and B have two zpools, one for data and one for the other's backup (at least I can't think of a reason why that would be bad).
However, as said, there both homeservers and only equipped with a comparably small number of HDDs.
I dislike the idea of running 2 zpools with 2+1 raidz1 on both machines.
I'd much rather run one zpool using 4+2 raidz2 or even 3+3 raid3 as it's much more fault tolerant.
(Ok a compromise would be 3+2 Raidz2 for the data pool and 1 plain vdev for the backup pool. Doesn't feel good without parity on the backup pool).
So my question is, if both A and B each have one zpool with e.g. 4+2 Raidz2 or 3+3 Raidz3 and a structure something like this (ignoring possible subdatasets):
on machine A:
Code:
- tank_a (zpool) |- data_a (dataset) |- backup_b (dataset)
on machine B:
Code:
- tank_b (zpool) |- data_b (dataset) |- backup_a (dataset)
what scenarios are there that a corruption of
tank_a
would lead to a corruption of tank_b
and vice versa?For example, if either A or B does not use ECC, I understand how that could lead to a corruption of one of the pools and its backup which would corrupt the full pool that the backup resides on.
With that out of the way using ECC RAM, is the above layout still a good idea?
It feels to me that it's not, however I can't really say why since I am not fully aware of all the possible corruptions that could destroy a pool and its backup pool.
Looking forward to your insight!