Mayastor Versions Save

Dynamically provision Stateful Persistent Replicated Cluster-wide Fabric Volumes & Filesystems for Kubernetes that is provisioned from an optimized NVME SPDK backend data storage stack.

v2.1.0

1 year ago

Release v2.1.0

Release Date: 27th April, 2023

Summary

Mayastor 2.1 is the first minor release on top of the 2.0 code-base. This release introduces the ability to create thinly-provisioned volumes and has seamless upgrade support from previous 2.0 versions. This release also provides a guided migration path for users running legacy Mayastor installations (v1.0.5 and below). In addition, there are stability and observability fixes as well.

Features

Thinly Provisioned Volumes

Mayastor 2.1 introduces the ability to create thin-provisioned volumes in addition to the current thickly provisioned volumes. When a thinly provisioned volume is created, space is allocated only for the metadata of the underlying replicas. As the usage increases, allocation of space happens on-demand for the new writes. The thin provisioning feature allows users to over-commit on their existing storage capacity and enables them to plan more efficiently. To track the commitment statistics, the disk pool metrics exporter now exports an additional metric named “disk_pool_committed_size“ in Bytes.

Thin provisioning is being released as an experimental feature in this release. We hope to gain valuable feedback on this from our cloud-native users. Please refer the documentation for more information.

Seamless Upgrade

With Mayastor 2.1 release, users get the support for upgrading of the software from version 2.0.0 or 2.0.1 to version 2.1.0. This upgrade process is made as seamless and non-disruptive as possible. The upgrade software checks and strives to preserve the availability of every volume during the upgrade process. Please note that the process is non disruptive only for volumes which have more than 1 replica. For volumes with a single replica, there will be a short duration when the volume will become unavailable while the upgrade is in-progress.

Please refer the documentation for more information.

Support For Migration From Legacy Versions

Mayastor versions 1.0.5 and prior, are being considered as legacy versions. Due to several breaking changes in the 2.0 codebase of the software, it is not possible to support seamless upgrades from the legacy versions to the current version. Mayastor 2.1 provides a documented migration path for users to move their legacy installations to the latest version.

Please refer the documentation for more information.

Changes

Stability fixes

  • Fixes an issue where the ordering of child IO failure impacts the error handling by the nexus.

Usability Fixes

  • Fixed an issue with pool destroy when it’s not yet loaded.
  • Fixed an idempotency issue with volume replica destroy.

Known behavioural limitations

  • As with the previous versions, the Mayastor IO engine makes full utilisation of the allocated CPU cores even when there is less or no I/O load. This is the poller operating at full speed, waiting for I/O.
  • As with the previous versions, a Mayastor disk pool is limited to a single block device and cannot span across more than one block device.

Known issues

  • Mayastor does not support creation of volume snapshots and clones as of v2.1.0. This is a work-in-progress feature.
  • Mayastor does not support capacity expansion for volumes v2.1.0.
  • Mayastor does not support capacity expansion of disk pools as of v2.1.0.
  • Under heavy IO and constant scaling up-down of volume replicas, the io-engine pod has been observed to restart occasionally.

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)

  • Tested k8s versions
    • 1.23.7
    • 1.22.10

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v2.0.1

1 year ago

Release v2.0.1

Release Date: 14th March, 2023

Summary

The 2.0.1 release is a patch release, focusing on reconciliation-based fixes for the Mayastor diskpool operator and stability fixes for the core storage. This release can be independently installed.

Changes

DiskPool operator fixes

  • Making the pool deletion idempotent.
  • Handling pool import during delete operation.
  • Decrypting the 'not found' errors during pool creation.
  • Handling the pool deletion when the node or device is offline.
  • Handling the pool deletion when there are volume replicas in the pool.
  • Introduces a new field “pool_status“ in the DiskPool custom resource for better state management. Details
  • The operator now indefinitely reconciles with the custom resource. Prior to 2.0.1, there was an upper limit on the retry attempts.

Stability fixes

  • Fixed a crash and restart of io-engine pod under heavy load.
  • Fixed a scenario where HA node agent waited indefinitely till new path is connected while replacing a broken NVMe path leading to timeouts and possible resource leaks. Now the agent waits for a timeout of 4s, which is tuneable.

Usability fixes

  • The supportability plug-in now collects the running container logs (similar to 'kubectl logs <>') in addition to the logs stored on Loki, as a part of the default “kubectl mayastor dump system“ command. This is important when Loki is not accessible for some reason.
  • Fixed an issue with incorrect version string exported from call-home module.
  • Fixed an incorrect value related to clusterIp in Helm chart to make it compatible with Talos distribution.

Known behavioural limitations

  • As with the previous versions, the Mayastor IO engine makes full utilisation of the allocated CPU cores even when there is less or no I/O load. This is the poller operating at full speed, waiting for I/O.
  • As with the previous versions, a Mayastor disk pool is limited to a single block device and cannot span across more than one block device.

Known issues

  • Mayastor does not support creation of thin-provisioned volumes as of v2.0.1. This a work-in-progress feature.
  • Mayastor does not support creation of volume snapshots and clones as of v2.0.1. This is a work-in-progress feature.
  • Mayastor does not support capacity expansion for volumes v2.0.1.
  • Mayastor does not support capacity expansion of disk pools as of v2.0.1.
  • Under heavy IO and constant scaling up-down of volume replicas, the io-engine pod has been observed to restart occasionally.

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)

  • Tested k8s versions
    • 1.23.7
    • 1.22.10
    • 1.21.13

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrading from previous versions of Mayastor is not supported at this time. To use Mayastor version 2.0.1, a fresh install is required.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v2.0.0

1 year ago

Release v2.0.0

Release Date: 8th February 2023

Summary

The 2.0.0 release is a major release, primarily focusing on enhancing the availability, stability and observability of Mayastor, the lightning fast NVMe-based block storage solution for Kubernetes stateful workloads.

Features

1. Availability features

On-demand nexus switch-over on failure detection

A nexus is a data structure created for every Mayastor volume, within the Mayastor instance, which acts as an NVMe controller and performs IO operations for that volume. Each Mayastor volume comprises of a single nexus and one or more replicas. Prior to the 2.0.0 version, nexus had been a single point of failure. To mitigate this, a switch-over(and fail-over) logic has been added in 2.0.0. With this Nexus switch-over/fail-over logic in place, if a nexus is unavailable either as a consequence of failure scenarios associated with software errors, faulty nodes/network paths/underlying storage, or planned events like upgrades, the nexus is recreated on a node that’s most optimal and applications are reconnected to the newly created nexus instances automatically, to ensure I/O continuity.

It should be noted that the switch-over will not happen if the node housing the nexus also contains the last (or only) healthy replica of the volume and that replica is currently inaccessible.

Cordon a node

In 2.0.0, Mayastor introduces the ability to cordon a node, effectively preventing any resources from being provisioned on the said node. Cordoning a node is an indication to the control plane that the node is going to have something done to it which is outside of its usual mode of operation, therefore the control plane should temporarily omit it from its scheduling logic.

Node cordoning is desirable when performing operations where the creation of new resources on the node would be problematic, such as during:

  • Maintenance
  • Upgrades
  • Debugging

Drain a node

In 2.0.0, Mayastor introduces the ability to drain a node, effectively removing/deleting resources from the said node, such that the node ends up in an “empty“ state. Only nexus draining is supported in this release. Node draining helps lay the foundation to support non-disruptive upgrades in the future.

2. Observability features

Pool metrics exporter

A metrics exporter runs as a container in every IO-engine pod and exposes pool capacity metrics in the Prometheus format.

Volume stats exporter

Implemented NodeGetVolumeStats RPC service in Mayastor CSI node-plugin. These metrics are file-system statistics and are exposed by the kubelet on each node.

3. Stability features

  • Fixed a possible deadlock scenario with NVMe controller events in IO-engine.
  • Fixed a possible data corruption issue when a rebuilding replica encounters a fault, under heavy load.
  • Fixed a panic in the nexus_destroy codepath.
  • Fixed an issue in CSI node_unstage codepath.
  • Added a Kubernetes watcher to process deletion events of Persistent Volumes, left behind by the deletion of PVCs with the reclaim policy set to “retain“.
  • Fixed an issue with de-registration of gRPC service on receiving sigterm event.
  • Fixed a memory corruption issue during parallel shutdown of multiple nexuses.
  • Added a fix to prevent file-system errors during shutdown.
  • Fixed NVMF sub-system issues with error handling during nexus unshare.
  • Added allowed-hosts control to NVMe targets to prevent access from outdated nodes, as part of switchover.
  • Added persistent NVMe reservations on replicas to prevent split-brain scenarios.

4. Supportability features

The 2.0.0 release provides an option in the Mayastor kubectl plug-in to collect supportability information from the cluster for better debugging purposes. The information is collected as a bundle and includes (not limited to) Mayastor component logs, command line and system outputs, Kubernetes resource specs of Mayastor resources and dump of Mayastor etcd data. For storing and retrieving historical logs, the 2.0.0. installer configures and installs a Loki stack alongside the Mayastor components.

5. Ease-of-use features

Single Helm chart-based installation

Mayastor installation process has been simplified in 2.0.0 with a single Helm chart, an enhancement from the prior releases where there were separate Helm charts for control-plane and data-plane.

NodePort dependency removal

Prior to 2.0.0, it was required to configure the etcd and api-rest as services of NodePort type in addition to opening up these ports on the firewall for accessing these services from the Mayastor kubectl-plugin, from outside the cluster. This issue has now been resolved in 2.0.0 with an enhancement to the plug-in to use HTTP and TCP port-forwarding via the kube-proxy crate.

6. Other notable changes

Component nomenclature changes

With this release, Mayastor has moved towards a more consistent and taxonomical scheme of naming for components. This scheme follows {release name}-{class}-{object} for every component. The release name is considered from the Helm chart (default is mayastor). For eg, the rest api component is now named as mayastor-api-rest, the engine mayastor has now become mayastor-io-engine and so on.

Schema changes in etcd

Mayastor uses etcd as a persistent store for storing configuration and state information of its resources like pool, volume, nexus, replica, etc. The etcd cluster is created as a part of Mayastor installation. Prior to 2.0.0, a Mayastor installation was designed to exclusively use the etcd cluster, expecting no interference from other users of etcd. This could lead to data inconsistency if a user-driven standalone etcd cluster is offered to more than one active Mayastor installations.

In 2.0.0, a separate namespace is allotted for every Mayastor cluster.

IO-engine gRPC versioning

An enhanced API scheme with versioning v1 has been introduced in release 2.0.0 for all IO-engine RPC operations, with backward-compatible support to older v0 versioning APIs.

Only NVMe, no more iSCSI

With 2.0.0, Mayastor completely removes the support for iSCSI transport.

NATS deprecated

NATS is no longer needed for communication between agent-core and IO-engine components. This communication is over gRPC transport.

Known behavioural limitations

  • As with the previous versions, the Mayastor IO engine makes full utilisation of the allocated CPU cores even when there is less or no I/O load. This is the poller operating at full speed, waiting for I/O.
  • As with the previous versions, a Mayastor disk pool is limited to a single block device and cannot span across more than one block device.

Known issues

  • Mayastor does not support creation of thin-provisioned volumes as of v2.0.0. This a work-in-progress feature.
  • Mayastor does not support creation of volume snapshots and clones as of v2.0.0. This is a work-in-progress feature.
  • Mayastor does not support capacity expansion for volumes v2.0.0.
  • Mayastor does not support capacity expansion of disk pools as of v2.0.0.
  • Under heavy IO and constant scaling up-down of volume replicas, the io-engine pod has been observed to restart occasionally.

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)

  • Tested k8s versions
    • 1.23.7
    • 1.22.10
    • 1.21.13

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrading from 1.0.x is not supported at this time. To use Mayastor version 2.0.0, a fresh install is required.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.5

1 year ago

Release v1.0.5

Release Date: 13th December 2022

Summary

This patch release contains important fixes and supportability enhancements for issues identified after the release of v1.0.4 Users of prior versions are advised to upgrade to this version. New users are advised to install only this version.

Fixes

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.4_LTS (kernel: ubuntu-5.15.0-50-generic)

  • Tested k8s versions
    • 1.23.7

Known Issues

  • The Pool Operator is unable to provision pools directly using a file as the backing device. The operator attempts to validate any device path supplied in the pool specification as an accessible block device attached to the corresponding Mayastor node. In the case of a file store, there is no block device and the validation fails, causing provisioning of the pool to be aborted. This will be addressed in a future release

    • workaround: Mount the file/image as a loopback device (losetup) and use the device path of the loopback device in the pool spec
  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version 5.13 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from versions of Mayastor prior to v1.0.0 are not supported. Any release earlier than v1.0.4 should be removed prior to installing this version.

Upgrades are disruptive - data plane and control plane pods must be unscheduled, and hence all applications using Mayastor volumes must be stopped prior to performing the update. The upgrade process is manual. The K8s definition files corresponding to the deployment of Mayastor components should be patched to reflect the versions of images from this release (see the /deploy) folder in the appropriate repositories and/or the GitBook Quickstart instruction for details of which definition files are affected, and check the v1.0.3 versions to find the appropriate image tag values.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.4

1 year ago

Release v1.0.4

Release Date: 10th November 2022

Summary

This patch release contains important fixes and supportability enhancements for issues identified after the release of v1.0.3 Users of prior versions are advised to upgrade to this version. New users are advised to install only this version.

Fixes

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.4_LTS (kernel: ubuntu-5.15.0-50-generic)

  • Tested k8s versions
    • 1.23.7

Known Issues

  • The Pool Operator is unable to provision pools directly using a file as the backing device. The operator attempts to validate any device path supplied in the pool specification as an accessible block device attached to the corresponding Mayastor node. In the case of a file store, there is no block device and the validation fails, causing provisioning of the pool to be aborted. This will be addressed in a future release

    • workaround: Mount the file/image as a loopback device (losetup) and use the device path of the loopback device in the pool spec
  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version 5.13 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from versions of Mayastor prior to v1.0.0 are not supported. Any release earlier than v1.0.3 should be removed prior to installing this version.

Upgrades are disruptive - data plane and control plane pods must be unscheduled, and hence all applications using Mayastor volumes must be stopped prior to performing the update. The upgrade process is manual. The K8s definition files corresponding to the deployment of Mayastor components should be patched to reflect the versions of images from this release (see the /deploy) folder in the appropriate repositories and/or the GitBook Quickstart instruction for details of which definition files are affected, and check the v1.0.3 versions to find the appropriate image tag values.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.3

1 year ago

Release v1.0.3

Release Date: 11th October 2022

Summary

This patch release contains important fixes and supportability enhancements for issues identified after the release of V1.0.2 Users of prior versions are advised to upgrade to this version. New users are advised to install only this version.

Fixes

Supportability Enhancements

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.4_LTS (kernel: ubuntu-5.13.0.27-generic)

  • Tested k8s versions
    • 1.23.7

Known Issues

  • The Pool Operator is unable to provision pools directly using a file as the backing device. The operator attempts to validate any device path supplied in the pool specification as an accessible block device attached to the corresponding Mayastor node. In the case of a file store, there is no block device and the validation fails, causing provisioning of the pool to be aborted. This will be addressed in a future release

    • workaround: Mount the file/image as a loopback device (losetup) and use the device path of the loopback device in the pool spec
  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version 5.13 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from versions of Mayastor prior to v1.0.0 are not supported. Any release earlier than v1.0.3 should be removed prior to installing this version.

Upgrades are disruptive - data plane and control plane pods must be unscheduled, and hence all applications using Mayastor must be volumes stopped prior to performing the update. The upgrade process is manual. The k8s definition files corresponding to the deployment of Mayastor components should be patched to reflect the versions of images from this release (see the /deploy) folder in the appropriate repositories and/or the GitBook Quickstart instruction for details of which definition files are affected, and check the v1.0.3 versions to find the appropriate image tag values.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux, on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86-64 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.2

1 year ago

Release v1.0.2

Release Date: 4th August 2022

Summary

This patch release contains important fixes for issues identified after the release of V1.0.1 Users of V1.0.1 are advised to upgrade to this version. New users are advised to install only this version.

Features

  • feat(rebuild): system-wide maximum
    • Introduce a system-wide maximum number of rebuilds. The maximum is specified as an argument (max_rebuilds) to the core agent. If a maximum is not specified, the number of rebuilds will not be limited. This behaviour ensures backwards compatibility.

Fixes

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.4_LTS (kernel: ubuntu-5.13.0.27-generic)

  • Tested k8s versions
    • 1.21.8

Known Issues

  • The Pool Operator is unable to provision pools directly using a file as the backing device. The operator attempts to validate any device path supplied in the pool specification as an accessible block device attached to the corresponding Mayastor node. In the case of a file store, there is no block device and the validation fails, causing provisioning of the pool to be aborted. This will be addressed in a future release

    • workaround: Mount the file/image as a loopback device (losetup) and use the device path of the loopback device in the pool spec
  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version 5.13 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from versions of Mayastor prior to v1.0.0 are not supported. Any release earlier than v1.0.0 should be removed prior to installing this version.

Upgrades from v1.0.1 are disruptive - data plane and control plane pods must be unscheduled, and hence all applications using Mayastor must be volumes stopped prior to performing the update. The upgrade process is manual. The k8s definition files corresponding to the deployment of Mayastor components should be patched to reflect the versions of images from this release (see the /deploy) folder in the appropriate repositories and/or the GitBook Quickstart instruction for details of which definition files are affected, and check the v1.0.1 versions to find the appropriate image tag values.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.1

2 years ago

Release v1.0.1

Release Date: 22nd February 2022

Summary

This patch release contains important fixes for issues identified after the release of V1.0.0 Users of V1.0.0 are advised to upgrade to this version. New users are advised to install only V1.0.1

Fixes

  • Critical fix(nexus): do not persist faulted state of the last replica
    • Replica retirement logic in the nexus allowed the last remaining replica of a volume to be marked as faulted in both the nexus and the persistent store (etcd). If this occurs, even if the device last retired is returned to normal service, the volume remains inaccessible and in a faulted state. This is a terminal condition which the user cannot rectify.
  • Major fix(helm chart): remove local pool config store
    • The V1.0.0 release incorrectly included a deprecated argument for the Mayastor container in both the prepared daemonset definition file and the Helm chart template from which it is generated. When used, this causes an unexpected duplication of stored configuration between local (file) and remote (etcd) representations.
  • fix(nexus): recreate faulted nexuses when appropriate
    • If healthy replicas of a faulted nexus are Online, the control plane will now attempt to destroy the faulty instance and recreate a new nexus in order to restore access to the affected volume
  • fix(nexus): serialised nexus i/o suspend/resume
    • Suspend/resume operations on NVMe subsystems are now serialised for nexuses, which properly handles simultaneous I/O suspension/resume operations in the case where multiple replicas are being retired simultaneously
  • chore: add env variable to control max number of qpairs
    • Added an environment variable to Mayastor, NVMF_TCP_MAX_QPAIRS_PER_CTRL, to allow control over the maximum number of qpairs per controller. This allows a user to tune the configuration for better stability in scenarios where there is a significant imbalance between the CPU core count used by the Mayastor process and that of the host on which it is scheduled. EXPERIMENTAL USE ONLY
  • Sending a node online event should not block
    • On startup if the cluster had more than 5 Nodes the send event notification per node would block. This is because the queue has only 5 elements. With this fix, if the queue is full additional events are dropped, which has only marginal impact on startup performance
  • fix(jaeger): reduce the OTEL_BSP_MAX_EXPORT_BATCH_SIZE
    • Some traces can be too long for export: OpenTelemetry trace error occurred. Exporter jaeger encountered the following error(s): thrift agent failed with message too long. Batch size has been reduced from 512 to 64.
  • fix: use dns name to reach rest
    • Using the host name created a race as the REST server's node port must start ahead of its consumers. With this fix the DNS name is used, which will be updated whenever REST is ready. Resolves: openebs/mayastor#1076
  • fix(node): node status overridden with stale status
    • Instead of using a copy of the node to reload, use the node itself with a grpc locked client to update the nodes when the registry is polling Mayastor.
  • fix(node): don't stall during (re-)registration of flaky nodes
    • Ensure that a node is alive and loaded before adding it to the configuration.
  • chore: don't trace reconciliation unless TRACE is set or there is work to do
    • For clusters with high number of volumes, the volume of traces can overwhelm the (Open)telemetry exporter. When in reconciliation loops do not create spans needlessly unless TRACE level is set, or unless the reconciler actually did work.

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.3_LTS (kernel: ubuntu-5.13.0.27-generic)

  • Tested k8s versions
    • 1.21.7

Known Issues

  • The Pool Operator is unable to provision pools directly using a file as the backing device. The operator attempts to validate any device path supplied in the pool specification as an accessible block device attached to the corresponding Mayastor node. In the case of a file store, there is no block device and the validation fails, causing provisioning of the pool to be aborted. This will be addressed in a future release

    • workaround: Mount the file/image as a loopback device (losetup) and use the device path of the loopback device in the pool spec
  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version extra-5.31.0 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from versions of Mayastor prior to V1.0.0 are not supported. Any earlier release should be removed prior to installing this version.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

"Unsupported" Architectures and Operating Systems (inc. ARM, Raspberry Pi, MacOS)

As described in the section on software testing above, the maintainers build and test Mayastor only on linux on x86-64. The use of Mayastor in other environments is therefore not necessarily possible, at least without modification. Where possible, this is currently largely coincidental - it is not "fully" tested and therefore this should be considered an entirely experimental use-case.

The maintainers will be pleased to receive contributions in this area, with the following understanding:

  • Such PR's will be reviewed for correctness, good practice, licensing compliance and general quality
  • PR's will be accepted on the basis that testing by the maintainers is restricted to demonstrating no negative affect on the stability of x86 builds
  • The maintainers will not perform acceptance testing or "positive release" of such functionality on any other OS or architecture, which is in accordance with their designation of these environments as experimental use cases at this time.
  • The maintainers will not provide build artifacts or container images for these environments

v1.0.0

2 years ago

Release v1.0.0

Release Date: 19th January 2022 Codename: New Horizons

Summary

With this release Mayastor is considered graduated from pre-release / beta status.

Features

  • Complete reimplementation of the control plane, focused on modularity, future extensibility and scaling

    • Now written in Rust
    • Public RESTful API
    • k8s-like reconciliation loop behavior for Mayastor managed objects (volumes, pools)
  • Extensive bug fixing and stabilization

    • Supported by 1000's of hours of automated system testing
  • New Mayastor kubectl plugin for management and monitoring

Testing

This release has been subject to E2E system testing by MayaData / DataCore Software, running under Ubuntu 20.04.3_LTS (kernel: ubuntu-5.8.0.63-generic)

  • Tested k8s versions
    • 1.20.9
    • 1.21.8
    • 1.22.5
    • 1.23.1

Known Issues

  • A Mayastor container may fault and restart if a disk device used by one of its associated disk pools becomes inaccessible. This is currently under investigation, with the intention of providing a fix in the next release.

  • Deploying an application pod on a worker node which hosts both Mayastor and Prometheus exporter causes that node to restart.

    • workaround: Use kernel version extra-5.31.0 or later

Getting Started

Mayastor user documentation, including a quick deployment guide, can be found here

Upgrade

Upgrades from previous versions of Mayastor are not supported. Any earlier release should be removed prior to installing this version. It is intended that releases forward of v1.0.0 will allow in-place upgrades.

Support

If you are having issues during installation, configuration or upgrade, you can contact us via:

v0.8.1

2 years ago

Various stability fixes