This pool will be faster overall than a RAIDz pool, not just during a resilver operation. Looks good to me (but I ran for years with 3-way mirrors
I’m going to tackle this one in pieces. This pool is for a local replicated copy of Pool A?
I’m not sure I understand what you mean by the second sentence.
The way ZFS replication works is that it is always based on snapshots. And snapshots are, by definition, read only. Let me walk through an example.
PoolA@1 is the first snapshot of Pool A
PoolA@2 is the second snapshot of Pool A
PoolA@3 is the third snapshot of Pool A, etc.
The very first replication is copy all of the data and metadata from PoolA@1 to the copy, assume we are putting the copies in PoolB. After the initial copy you will have
PoolB/PoolA@1
When it is time to replicate PoolA@2, ZFS knows the blocks that were changed between PoolA@1 and PoolA@2, so the replication process just has to copy those blocks. You end up with (on the replica side):
PoolB/PoolA@1
PoolB/PoolA@2
Repeat for PoolA@3 and now we have (including both source and replica
PoolA@1
PoolA@2
PoolA@3
PoolB/PoolA@1
PoolB/PoolA@2
PoolB/PoolA@3
If you ever destroy (delete) the last snapshot of Pool A, then replication will fail until it is restarted from the beginning as there will be no snapshot to base a replication on.
If the snapshots on Pool A have a retention period, they will be destroyed (deleted) based on that retention period. The replicated snapshots on Pool B may have the same or a different retention period than the snapshots on Pool A. I use the same retention period on all my replicas as the primary. But different snapshots have different retention periods, for example, hourly snapshots are retained for 1 week, daily snapshots are retained for 1 month, etc. But both the primary snapshot on my production system and the replicated snapshots on my backup system have the same retention.
Yes, as copying to the same pool will use the same drives for reads and writes. When you create a snapshot, no data is copied, just internal ZFS metadata, and that operation is very, very fast.
I am very confused by the above. ZFS snapshots are not stored separately from the pool, they are a read-only point-in-time copy of the data in a dataset and are part of the pool. They are very lightweight, containing only data blocks that have been changed since the snapshot was taken. They have no performance penalty because of the copy-on-write nature of ZFS. ZFS protects against bit-rot for all the data, both active datasets and snapshots. Having a copy of the snapshots in a separate pool on the same server protects against data loss if the source pool is damaged and cannot be recovered.
On my production server I have a variety of snapshots with a variety of retention periods. I replica all of them to my backup server located a few feet away. I have a plan for a backup server on the other coast of the country at a friend’s house that will also replicate all the snapshots from the production server.
This also makes sense (except the snapshots to an external drive).