Can a ZFS Mirror Use Drives With Different Sector Sizes?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

It can, but the vdev uses one ashift policy and the larger physical-sector requirement should govern to avoid read-modify-write penalties.

The decision matters when a replacement drive reports 4K physical sectors while the surviving mirror member was created with smaller alignment. The two competing states are compatible vdev geometry and suboptimal fixed ashift or capacity mismatch. Begin with a saved configuration and disposable data, observe one branch at a time, and stop if the test expands data-loss, permission, or availability risk.

Define the Conditions Behind the Mixed-Sector Zfs Mirror Decision

Record the environment before changing anything: software and firmware versions, device identities, mount or network path, free space, permissions, and the observable symptom. The baseline must preserve enough detail to reproduce a replacement drive reports 4K physical sectors while the surviving mirror member was created with smaller alignment.

The first candidate is compatible vdev geometry. The second is suboptimal fixed ashift or capacity mismatch. The current OpenZFS ashift property defines the mechanism or command boundary used in the test; it does not replace observation from this specific home server.

Write the acceptance condition and stop condition before running the discriminator. A pass must change the evidence predicted by one branch while leaving unrelated services unchanged; a fail must return the system to the saved state rather than trigger a chain of speculative fixes.

Test the Claim Without Lowering the Original Requirement

Use this discriminator: inspect existing ashift and drive logical/physical sector reports, then benchmark aligned writes on a replica pool. Keep workload, client, path, file set, and timing constant so the result is attributable to the changed variable.

Use FreeBSD zpool behavior to select the field that can actually separate the branches, then capture its timestamp, exit status, error text, device or snapshot identity, latency, transferred bytes, permissions, and recovery state. A clean command exit is not enough when identity, durability, or application state is the claim under test.

Repeat the test once after a restart, reconnect, remount, or cold cache when that event is part of the original condition. If the first run is destructive or the environment cannot be restored, stop and reproduce on a disposable copy instead.

zpool get ashift pool
lsblk -o NAME,LOG-SEC,PHY-SEC,SIZE

Interpret Pass, Fail, and Exception Results

PASS: the replacement attaches, resilver completes, and aligned-write latency remains acceptable. Record the exact version, identity, and workload that passed so the conclusion stays conditional rather than becoming a universal claim.

FAIL: ashift is too small, the replacement is marginally smaller, or performance degrades under sync and random writes. A fail does not automatically prove the opposite branch when network, memory, permissions, or source consistency can influence both; isolate those shared dependencies before escalating.

EXCEPTION OR AMBIGUOUS RESULT: use a suitable replacement or rebuild a new correctly aligned pool rather than forcing an undersized disk. Preserve logs and do not run repair, prune, destroy, repartition, or recursive ownership commands until a recoverable copy exists.

Confirm the Decision Under the Original Workload

Apply the action matched to the observed branch, then repeat the original condition rather than a reduced substitute. The decision holds only when the replacement attaches, resilver completes, and aligned-write latency remains acceptable across two cycles or the relevant reboot, sleep, interruption, or load transition.

Use the ZFS mirror sector sizes to check the nearest dependent workflow, but keep the original trigger unchanged. Unrelated datasets, shares, containers, users, and recovery points must retain their previous access and timing.

The stop boundary is explicit: if ashift is too small, the replacement is marginally smaller, or performance degrades under sync and random writes, return to the last verified configuration, retain the evidence, and escalate to a deeper platform or hardware test only when the branch is repeatable.

After the target result holds, compare it with the restore verification so the fix does not move risk into a neighboring service. A successful target test with a new backup, identity, timeout, or availability failure is still a failed change.

FAQ

For mixed-sector ZFS mirror, the remaining searches usually concern can ashift be changed after vdev creation, should ashift=12 be used for 4k disks, and does different capacity matter. The answers below keep those edge cases separate from the primary decision.

The acceptance boundary does not move: the replacement attaches, resilver completes, and aligned-write latency remains acceptable. If a follow-up condition changes the filesystem, identity, network path, or application version, repeat only the discriminator affected by that change.

Stop broadening the experiment when ashift is too small, the replacement is marginally smaller, or performance degrades under sync and random writes. At that point, use a suitable replacement or rebuild a new correctly aligned pool rather than forcing an undersized disk; preserve the evidence before escalating to the platform, storage, or hardware owner.

Can ashift be changed after vdev creation?

Not in place for an existing vdev; rebuilding or creating a new vdev is the usual correction.

Should ashift=12 be used for 4K disks?

It commonly represents 4K alignment, but validate device behavior and current OpenZFS guidance.

Does different capacity matter?

A mirror is limited by its smallest member, and a nominal replacement can be slightly smaller.

For mixed-sector ZFS mirror, the practical answer remains conditional: the replacement attaches, resilver completes, and aligned-write latency remains acceptable. When ashift is too small, the replacement is marginally smaller, or performance degrades under sync and random writes, use a suitable replacement or rebuild a new correctly aligned pool rather than forcing an undersized disk; a partial success that cannot survive the original workload is not compatibility.

Support & Tips

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.