Prompt:
mirior was update to 0.11.3 - Review miroir status, check logs, metrics, events and make sure everything is okay. next run a common fio test for testing drives on the SC and report back the findings. after, if you can test the new PVC clone and volumesnapshot features
Validation of the miroir chart upgrade to 0.11.3 on the home-ops cluster: post-upgrade health review, fio benchmarks on the miroir-slow StorageClass, and functional testing of the PVC clone and VolumeSnapshot features.
Upgrade health
- HelmRelease upgraded successfully (
miroir-system/miroir.v6, chart 0.11.3); all 3 agent pods and both controller replicas rolled cleanly and are Running with no restarts.
- All 19 MiroirVolumes report
Ready 2/2, all peers connected, splitBrain: false everywhere.
- k8s-0 shows
Diskless on every volume. This is expected: with replicas: "2" the data lives on k8s-1/k8s-2 and k8s-0 attaches as the quorum tiebreaker (its ALLOCATED column is empty for the same reason).
- Controller and agent logs since the rollout contain zero errors or warnings. Namespace events are all normal rollout/leader-election activity; both Flux kustomizations (
miroir, miroir-config) reconciled successfully.
- Metrics (agent
:9810/metrics): DRBD kernel 9.3.2 / utils 9.34.3, miroir_volume_diskless_primary is 0 for every volume, pool meta usage ~1.9%, ~10 GB allocated of 998 GB per data node.
- The
miroirsnapshotgroups CRD is now present (created 2026-07-18), so group snapshots are unblocked.
fio benchmarks (miroir-slow)
Setup: 5Gi PVC on miroir-slow (replicas=2, ext4), alpine pod, fio with --ioengine=libaio --direct=1 --time_based --runtime=30 --numjobs=1 against a 2G file.
| Test |
Result |
Avg latency |
| 4k randread, QD32 |
222k IOPS (867 MiB/s) |
144 µs |
| 4k randwrite, QD32 |
35.0k IOPS (137 MiB/s) |
913 µs |
| 1M seq read, QD16 |
2837 MiB/s |
5.6 ms |
| 1M seq write, QD16 |
834 MiB/s |
19 ms |
Notes:
- Reads are served from the local replica, so they run at effectively local NVMe speed.
- Writes carry the expected DRBD synchronous replication penalty (every write commits on both k8s-1 and k8s-2 over the network). Write tails were tight: 99%+ of 4k writes completed under 2 ms; seq write p99 was in the 50 ms bucket with a 119 ms max.
- No fio errors in any run.
PVC clone and VolumeSnapshot testing
Method: seeded the source PVC with a 64 MB /dev/urandom file and recorded its sha256, then exercised both CSI data sources and verified integrity.
VolumeSnapshot (class miroir):
VolumeSnapshot went ReadyToUse in ~2 s; the backing MiroirSnapshot CR reported READY true against the source volume.
- A PVC restored from the snapshot (
dataSource: VolumeSnapshot) provisioned and bound normally.
PVC clone:
- A PVC with
dataSource: {kind: PersistentVolumeClaim} provisioned and bound normally.
Verification:
- Both the clone and the restore mounted with the full filesystem contents intact (fio test file, seeded file, checksum file).
- sha256 of the seeded file matched the source exactly on both volumes:
- expected:
0602001021504a1c26f50e4e204953fb93341a137342bfbcbb1058b99f38f0ce
- clone: match
- restore: match
- Both volumes were writable after provisioning.
- Immediately after creation both new volumes showed phase
Creating 0/2 with the second replica Inconsistent while the background resync ran; both converged to Ready 2/2 in under a minute (~2.2 GB of data). Judge readiness by perNode diskState rather than phase during this window.
Cleanup
The test namespace was deleted afterward; confirmed no leftover PVs, MiroirVolumes, or MiroirSnapshots.
Verdict
No issues found with 0.11.3. Health, logs, metrics, benchmarks, and the clone/snapshot features all check out.
Validation of the miroir chart upgrade to 0.11.3 on the home-ops cluster: post-upgrade health review, fio benchmarks on the
miroir-slowStorageClass, and functional testing of the PVC clone and VolumeSnapshot features.Upgrade health
miroir-system/miroir.v6, chart0.11.3); all 3 agent pods and both controller replicas rolled cleanly and are Running with no restarts.Ready 2/2, all peers connected,splitBrain: falseeverywhere.Disklesson every volume. This is expected: withreplicas: "2"the data lives on k8s-1/k8s-2 and k8s-0 attaches as the quorum tiebreaker (its ALLOCATED column is empty for the same reason).miroir,miroir-config) reconciled successfully.:9810/metrics): DRBD kernel9.3.2/ utils9.34.3,miroir_volume_diskless_primaryis 0 for every volume, pool meta usage ~1.9%, ~10 GB allocated of 998 GB per data node.miroirsnapshotgroupsCRD is now present (created 2026-07-18), so group snapshots are unblocked.fio benchmarks (
miroir-slow)Setup: 5Gi PVC on
miroir-slow(replicas=2, ext4), alpine pod, fio with--ioengine=libaio --direct=1 --time_based --runtime=30 --numjobs=1against a 2G file.Notes:
PVC clone and VolumeSnapshot testing
Method: seeded the source PVC with a 64 MB
/dev/urandomfile and recorded its sha256, then exercised both CSI data sources and verified integrity.VolumeSnapshot (class
miroir):VolumeSnapshotwentReadyToUsein ~2 s; the backingMiroirSnapshotCR reportedREADY trueagainst the source volume.dataSource: VolumeSnapshot) provisioned and bound normally.PVC clone:
dataSource: {kind: PersistentVolumeClaim}provisioned and bound normally.Verification:
0602001021504a1c26f50e4e204953fb93341a137342bfbcbb1058b99f38f0ceCreating 0/2with the second replicaInconsistentwhile the background resync ran; both converged toReady 2/2in under a minute (~2.2 GB of data). Judge readiness byperNodediskState rather than phase during this window.Cleanup
The test namespace was deleted afterward; confirmed no leftover PVs, MiroirVolumes, or MiroirSnapshots.
Verdict
No issues found with 0.11.3. Health, logs, metrics, benchmarks, and the clone/snapshot features all check out.