Skip to content

miroir testing #11322

Description

@onedr0p

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions