This release introduces replicated volumes: single-writer persistent storage with three copies spread across different Mantissa nodes. It is suitable for stateful workloads that could survive node and storage loss/failure.
Local volumes are still available for node-pinned data and imported host paths. Replicated volumes add an option and storage path for workloads that need one writer, automatic replica repair, retain/restore semantics, and online expansion without moving storage management outside of Mantissa.
Replicated volumes use Raft for control decisions such as writer selection and fencing, membership and capacity changes. The workload node mounts the volume through the replicated-volume driver (with ublk) and uses the selected ext4 or XFS filesystem.
This release includes breaking protocol, manifest, CLI, and REST changes for volume state and workload volume mounts. Mixed v0.3.0 and v0.4.0 clusters are not supported.
Replicated volumes also require host support for the storage driver and a reachable replicated-volume listener between storage nodes. By default that listener uses TCP 7578.
Breaking Changes
-
Added replicated-volume protocol messages, Raft group state, and durable volume control records. Older nodes do not understand the new volume state, replica membership, or storage traffic. d99d1d4, c7e12fd, 5988de0
-
Changed volume state to separate desired state from per-node reported state and to expose the retained, restoring, replacement, and capacity-expansion lifecycle needed by replicated volumes. 2497991, c386bf3, ffafe36
-
Updated workload mounting and service placement so
read_write_oncereplicated volumes stay single-writer and services can reschedule around replica-storage availability. dd0bb31, e28ecf4, 9269381
Added
-
Added a reusable Raft core with durable group storage and authenticated TCP transport, used by each replicated volume's control plane. c7e12fd, 0b5e9e6, 99c78b4
-
Added the replicated-volume storage engine: volume identity and layout, quorum state, replica files, ublk mounting, device-mapper mounting, and ext4/XFS filesystem management. 48823cb, 64b5f9d, a3de0f5, 284ceff, d3f0b9d
-
Added replicated-volume CLI, client, REST, and manifest support for create, inspect, status, retain, restore, permanent data deletion, and online expansion. 88fd4b8, a215acf, d9d369e, 886b176, d251cdb
-
Added replicated-volume configuration and startup wiring, including storage-capacity advertisement and useful Raft lifecycle logging. 3035316, 044d561, 5f4b22f, 376e74a
Fixed
-
Added replica recovery and replacement so a replicated volume can rebuild a missing copy on another eligible node after failures. 5dd0147, baf4349, ab17c12
-
Protected replicated volumes during node drains and cluster splits. Mantissa waits for replica copies during drain and rejects splits that would divide a volume's current voters or data copies. 24f1dfe, d260470
-
Kept replicated-volume state recoverable across restarts and stale status updates by reopening Raft groups, repairing public status from local Raft state, and rejecting stale store batches atomically. c166ae4, 31f9202, e56f832
-
Fixed service and topology edge cases around slot reconciliation, chained merge dependencies, and handoffs observed through divergent health views. fe45f87, 84e1fb4, 1f74bc1
-
Updated Linux TC attachment handling for newer kernels and upgraded the embedded Redb dependency. cbc68d1, b573252
Tests and Tooling
- Enabled ublk in the Lima development nodes and added replicated-volume lifecycle, recovery, restart, split, PostgreSQL, REST, and fuzz coverage. 51ece0f, 7c0f052, 0954e73
Install mantissa 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MantissaLabs/mantissa/releases/download/v0.4.0/mantissa-installer.sh | shDownload mantissa 0.4.0
| File | Platform | Checksum |
|---|---|---|
| mantissa-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| mantissa-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo MantissaLabs/mantissaYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>