Release v2.6.0
Release Date: 16th April, 2024
Summary
OpenEBS Replicated PV Mayastor version 2.6 provides volume expansion support for a Mayastor volume with automatic resizing of file-system by the CSI-resizer. Mayastor v2.6 enhances snapshot capabilities by ensuring file-system consistency before taking a snapshot. Mayastor v2.6 also enhances monitoring by exporting performance metrics like IOPs, throughput, and latency for Mayastor pools, volumes, and replicas. In this release, the event generation capabilities have been expanded to include more events. In addition, this release has fixes related to snapshots, upgrades, availability, stability, and supportability.
Features
Volume Expansion
Mayastor 2.6 adds support for allowVolumeExpansion CSI capability to resize the volumes and the mounted file-systems. Mayastor CSI plugin provides support for the expansion of volume in both online and offline states.
Refer to the documentation for more details.
Filesystem Consistent Snapshot
Mayastor 2.6 makes a best effort to ensure the mounted filesystem is consistent while taking a snapshot of the underlying volume. This allows the file-system to be recovered in a good state when the volume is restored from the snapshot.
Refer to the documentation for more details.
Performance Metrics
Mayastor 2.6 enhances product monitoring by exposing performance metrics like in the Prometheus format in addition to the existing metrics for capacity and state. IO, Throughput and Latency counters for Read and Write operations of DiskPools, Volumes and Replicas are added to the list of metrics exported from the IO Engine exporter.
Refer to the documentation for more details.
Events
The eventing framework was introduced in the Mayastor 2.4. The generated events are published onto a NATS message bus.
In 2.6, new events get generated during the provisioning of snapshots and clones, and state changes for nexus, sub-system, reactor, replica, and node.
Refer to the documentation for the list of available events.
Improvements and Stability Fixes
Rebuild refactoring by tiagolobocastro · Pull Request #1581 · openebs/mayastor
fix(nexus): fixing missing I/Os during nexus rebuild by dsavitskiy · Pull Request #1583 · openebs/mayastor
refactor(io-engine): use SafeMountIter instead of proc_mounts::MountIter by niladrih · Pull Request #1591 · openebs/mayastor
Rebuild Rangers by tiagolobocastro · Pull Request #1594 · openebs/mayastor
fix(rebuild/partial): set bits for written blks only by tiagolobocastro · Pull Request #1597 · openebs/mayastor
refactor(rebuild/bdev): use builder pattern by tiagolobocastro · Pull Request #1604 · openebs/mayastor
fix(stats/lock): sync calls with pool service by tiagolobocastro · Pull Request #1607 · openebs/mayastor
fix(lock): make import pool, create replica and share replica operations mutually exclusive by hrudaya21 · Pull Request #1611 · openebs/mayastor
fix(nvmf): fixing duplicate QID error by dsavitskiy · Pull Request #1616 · openebs/mayastor
Reconnect IO log on Detach by tiagolobocastro · Pull Request #1619 · openebs/mayastor
fix(rebuild): reconnect log on own channel when faulting by tiagolobocastro · Pull Request #1622 · openebs/mayastor
feat: capacity limit for volumes by chriswldenyer · Pull Request #710 · openebs/mayastor-control-plane
Repo chores by tiagolobocastro · Pull Request #717 · openebs/mayastor-control-plane
refactor(rest-plugin): make it more modular by tiagolobocastro · Pull Request #720 · openebs/mayastor-control-plane
refactor(rest-plugin): make executor more generic by tiagolobocastro · Pull Request #721 · openebs/mayastor-control-plane
Delete Orphaned Volumes on a timer by tiagolobocastro · Pull Request #724 · openebs/mayastor-control-plane
Node labelling UX by tiagolobocastro · Pull Request #726 · openebs/mayastor-control-plane
fix(core/ha): re-share the nexus on republish by tiagolobocastro · Pull Request #728 · openebs/mayastor-control-plane
feat(app node): register csi nodes to control plane by Abhinandan-Purkait · Pull Request #730 · openebs/mayastor-control-plane
fix(pstor): when lease is lost exit instead of panic by tiagolobocastro · Pull Request #732 · openebs/mayastor-control-plane
check cluster capacity limit during volume resize, and also allow volume resize via rest plugin by dsharma-dc · Pull Request #747 · openebs/mayastor-control-plane
fix(legacy prefix detection): calculate range end for legacy prefix instead of empty by Abhinandan-Purkait · Pull Request #761 · openebs/mayastor-control-plane
fix(csi-driver): support getting device size from devpath by niladrih · Pull Request #765 · openebs/mayastor-control-plane
fix(csi-controller/pv-watcher): race between creation and gc by tiagolobocastro · Pull Request #768 · openebs/mayastor-control-plane
Blocking nvme disconnect fixes by tiagolobocastro · Pull Request #776 · openebs/mayastor-control-plane
Tracing and Platform fixes by tiagolobocastro · Pull Request #782 · openebs/mayastor-control-plane
fix(volume/resize): handle overflow during volume shrink attempt by dsharma-dc · Pull Request #784 · openebs/mayastor-control-plane
feat(eventing): add target volumeid to nvme path events by datacore-vvarakantham · Pull Request #791 · openebs/mayastor-control-plane
fix(agent/core): rebuild space required by tiagolobocastro · Pull Request #792 · openebs/mayastor-control-plane
XFS compat with older kernels when formatting by tiagolobocastro · Pull Request #799 · openebs/mayastor-control-plane
CI fixes and disable partial rebuild with cli arg by tiagolobocastro · Pull Request #804 · openebs/mayastor-control-plane
chore(deps): address CVE-2023-39325, CVE-2023-47108 and GHSA-m425-mq9… by cmontemuino · Pull Request #402 · openebs/mayastor-extensions
refactor(kubectl-plugin): tidy up error handling and command execution by tiagolobocastro · Pull Request #407 · openebs/mayastor-extensions
fix(uncordon): Rectify uncordon resource by sinhaashish · Pull Request #409 · openebs/mayastor-extensions
feat(volume/resize): don't allow volume resize for snapshot restore vols by dsharma-dc · Pull Request #777 · openebs/mayastor-control-plane
Performance and Scalability Fixes
fix(lvs): fixing issues with large number of volumes by dsavitskiy · Pull Request #1589 · openebs/mayastor
perf: use spdk mempool per-core cache for io objects pool by dsharma-dc · Pull Request #1612 · openebs/mayastor
refactor: use pagination to load values from pstor by Abhinandan-Purkait · Pull Request #737 · openebs/mayastor-control-plane
Supportability Fixes
add json formatting support by abhilashshetty04 · Pull Request #745 · openebs/mayastor-control-plane
feat(supportability): update etcd pagination fetch method by Abhinandan-Purkait · Pull Request #426 · openebs/mayastor-extensions
fix(kubectl/dump/etcd): use correct namespace by tiagolobocastro · Pull Request #437 · openebs/mayastor-extensions
feat(gha/kubectl-plugin): build aarch64-darwin by tiagolobocastro · Pull Request #442 · openebs/mayastor-extensions
Install and Upgrade Fixes
chore: update libspdk hash in io-engine by dsharma-dc · Pull Request #1603 · openebs/mayastor
fix(replica/entity_id): ignore not implemented error by tiagolobocastro · Pull Request #794 · openebs/mayastor-control-plane
fix(upgrade): don't use reservations without ha by tiagolobocastro · Pull Request #796 · openebs/mayastor-control-plane
feat(upgrade-job): add support for loki-stack helm chart upgrade by niladrih · Pull Request #396 · openebs/mayastor-extensions
fix(upgrade-job): avoid infinite loop when no unhealthy vols have a target by niladrih · Pull Request #397 · openebs/mayastor-extensions
fix(chart): promtail subchart changes for chart v6.13.1 by niladrih · Pull Request #398 · openebs/mayastor-extensions
fix: upgrade-job fixes by niladrih · Pull Request #399 · openebs/mayastor-extensions
refactor(chart): provide CRDs in a subchart by cmontemuino · Pull Request #414 · openebs/mayastor-extensions
feat(app node): update csi node with latests args to enable registration by Abhinandan-Purkait · Pull Request #415 · openebs/mayastor-extensions
feat(eventing): add k8sClusterDomain default value to nats config by datacore-vvarakantham · Pull Request #421 · openebs/mayastor-extensions
feat(csi/node): add nvme-tcp init container by tiagolobocastro · Pull Request #423 · openebs/mayastor-extensions
feat(chart): enhance RBAC permissions for vol expansion by niladrih · Pull Request #425 · openebs/mayastor-extensions
feat(charts): add values to control etcd and loki hostpath sc creation by Abhinandan-Purkait · Pull Request #432 · openebs/mayastor-extensions
docs(chart): update topology segments usage by cmontemuino · Pull Request #439 · openebs/mayastor-extensions
feat(upgrade-job): add migration for logSilenceLevel and pluginMounthPath by niladrih · Pull Request #443 · openebs/mayastor-extensions
feat(chart): prevent CRDs from being recycled by cmontemuino · Pull Request #458 · openebs/mayastor-extensions
Add partial rebuild disable and various fixes by tiagolobocastro · Pull Request #471 · openebs/mayastor-extensions
fix(jaeger): update and use the jaeger bundled CRD by tiagolobocastro · Pull Request #473 · openebs/mayastor-extensions
fix(upgrade-job): use default value for missing values with helm 3.13 & 3.14 by niladrih · Pull Request #479 · openebs/mayastor-extensions
refactor(rebuild): tidy up helm variables for rebuild by tiagolobocastro · Pull Request #481 · openebs/mayastor-extensions
Add failure for when partial rebuild is enabled for source charts >=2.2,<=2.5 by niladrih · Pull Request #483 · openebs/mayastor-extensions
chore: update indexmd by Abhinandan-Purkait · Pull Request #488 · openebs/mayastor-extensions
Testing
Mayastor is subject to extensive unit, component and system-level testing throughout the development and release cycle. Resources for system-level (E2E) testing are currently provided by DataCore Software.
At this time, personnel and hardware resource limitations constrain testing by the maintainers to linux builds on x86. This reflects the primary use-case which the maintainers are currently targeting with the OpenEBS Mayastor project. Therefore, the use of Mayastor with other operating systems and/or architectures, if even possible, should be considered serendipitous and wholly experimental.
This release has been subject to End-to-End testing under Ubuntu 20.04.5_LTS (kernel: ubuntu-5.15.0-50-generic)
Known Behavioral Limitations
As with the previous versions, the Mayastor IO engine makes full utilisation of the allocated CPU cores regardless of I/O load. This is the poller operating at full speed, waiting for I/O.
As with the previous versions, a Mayastor DiskPool is limited to a single block device and cannot span across more than one block device.
Known Issues
Mayastor does not support the capacity expansion of DiskPools as of v2.6.0.
Under heavy IO and constant scaling up-down of volume replicas, the io-engine pod has been observed to restart occasionally.