I've got two servers, which for ease of communication we'll call primary and secondary. Currently they're both running ZFS on root, and syncing often via
The primary's pool has an n-way mirror (for performance and fault tolerance), while the secondary is just a single disk. My naive initial thought on how to adapt this to HAST was:
zfs send/recv
. However, I'd like to convert over to HAST, for faster failover and to avoid rolling back however many minutes its been since the last syncronization. Normally this is fairly simple as the handbook covers the basics, but my situation is a bit different as the servers have different disk configurations.The primary's pool has an n-way mirror (for performance and fault tolerance), while the secondary is just a single disk. My naive initial thought on how to adapt this to HAST was:
- Set up each disk with 3 GPT partitions: a boot partition, a root pool partition, and the "shared" pool (HAST) partition.
- HAST is used to synchronize one disk's shared partition on the primary with the shared partition on the secondary.
- Shared ZFS pool is created on the primary as an n-way mirror using the HAST partition and the other disk's partitions directly.
- Pool on the secondary would probably always show "degraded" because it couldn't find the other phantom partitions it expects.
- If primary goes down, changes are made to the secondary's HAST. When the primary comes online and gets these changes back, only one partition in the HAST mirror is updated, undoubtably causing problems for ZFS (as its locally mirrored partitions are not updated).
- Use gmirror(8) to create the mirror on the primary and hand that to HAST. I think the main disadvantage of this method is using gmirror instead of ZFS for mirroring is less than ideal performance-wise, but please correct me if I'm wrong.
- Configure HAST to perform the mirror for the local partitions? I'm not sure this is even possible, and I believe it would have the same issues as gmirror.