Release 3.21.1
Release Date
v3.21.1 was released to the public on October 29, 2026.
New in This Release
This release introduces the following changes since version 3.20.x. A change is classified as either a new feature, an enhancement, a major issue (e.g., an issue that could lead to potential data loss or service loss), or a minor issue.
Issue Type | Description | ID |
|---|---|---|
New Feature (GA) | Added Rebuild and Rebalance Throttle Controls, a cluster-wide setting that caps the bandwidth used by rebuild and rebalance traffic on each node and sets whether this background I/O or user I/O takes priority, so operators can protect application performance during recovery or let recovery run faster when needed. | LBM1-49133 |
New Feature (GA) | Added Spare Capacity Reservation, a cluster-level setting ( | LBM1-49135 |
New Feature (GA) | Server eviction (evict data), introduced as a Technology Preview, is now generally available and officially supported for production use. Evicting a server migrates all of its volumes and snapshots to other servers in the cluster before planned maintenance or removal, keeping volumes fully protected throughout, and can also be used to move data off a server whose nodes have become unavailable without waiting for them to reach a permanently failed state. | LBM1-49135 |
New Feature (Tech Preview) | Added Tech Preview support for installing the Lightbits storage cluster on Red Hat Enterprise Linux (RHEL) 10, extending the server OS options beyond the existing RHEL family and Ubuntu releases (RHEL 10 has been supported on the client side since earlier releases). This Tech Preview is intended for evaluation only: customers are encouraged to validate and test their workloads with Lightbits deployed on RHEL 10 in non-production environments. It is not supported for production use and is not generally available in this release. | LBM1-49136 |
Enhancement | Clarified the event raised when a container upgrade partially fails to refresh configuration files: the description no longer truncates mid-path, and a genuine error reading the target image is now surfaced as a warning instead of being silently treated as ‘nothing to refresh’. | LBM1-45797 |
Enhancement | Fixed a packaging issue where an upgrade could overwrite a cluster's customized | LBM1-45583 |
Enhancement | Fixed a rare race condition that could cause a volume replica to serve outdated data. It required a volume with two or more replicas whose primary server had become read-only after running out of storage capacity or metadata space, while another replica finished rebuilding and took over as primary. If the first server's read-only state cleared within the same fraction of a second as that takeover, it could return as primary without the rebuild it needed. | LBM1-39499 |
Enhancement | Fixed an issue where a Protection Group could remain stuck as read-only for an extended period after a node migration, even once the affected node had become writable again. A node whose rebuild had actually completed was still counted as 'not yet synced' until it reached the up-to-date state, which kept the count of synced nodes below the threshold needed to leave read-only mode. | LBM1-34456 |
Enhancement | Hardened the OpenStack Cinder driver: a process-global TLS-warning suppression that could silence certificate-verification warnings for every other backend sharing the same cinder-volume process has been removed, the management-channel help text no longer contradicts the driver's HTTPS-only behavior, and the API JWT can no longer appear in logs at DEBUG level or in a generated sample config. | LBM1-47383 |
Enhancement | Improved cluster rebalance performance on large clusters: the per-node selection pass used to do far more work than its answer needed, which could make a drain or rebalance take too long to finish on clusters with many nodes and protection groups. (Measured: roughly 3.4x fewer allocations for a 32-node, 480-group rebalance pass.) | LBM1-47484 |
Enhancement | K8S CSI driver IP-ACL enforcement support: the new opt-in | LBM1-40422 |
Enhancement | Lightbits CSI plugin: Added support for NVMe in-band authentication (DH-HMAC-CHAP). When the new | LBM1-48471 |
Enhancement | List snapshots now allows filtering by a volume_uuid; e.g., lbcli list snapshots --project-name X --volume-uuid Y. | LBM1-47642 |
Enhancement | Log streaming: when an rsyslog target's endpoint includes a port or a scheme (for example "host.example.net:24712" or "tcp://host.example.net"), the API now returns a clear error saying the endpoint must be a hostname or IP address only and the port must be set in the separate port field. Other invalid endpoint values now report the expected format (IP address or RFC 1123 hostname). FQDNs are supported. The API reference now documents the rsyslog endpoint, port, timeout and debug fields. lbcli is not affected: its --endpoint flag still accepts host:port. | LBM1-48175 |
Enhancement | Protection groups left behind when nodes become permanently failed are now removed automatically, every 12 hours by default. On long-running clusters these leftover protection groups can build up and slow down switchovers. Upgrade note: after upgrading from 3.20.1, the cleanup is enabled on every cluster, including clusters where it had been turned off. To keep it off, set the cleanup interval back to 0 after the upgrade. | LBM1-47138 |
Enhancement | The installation TUI can now deploy Lightbits in container mode on Ubuntu and Debian. It detects the target operating system, signs in to the container registry and pulls the images, checks before deployment that the selected Lightbits version supports the target servers, and verifies the installation with lbcli when it finishes. | LBM1-45442 |
Enhancement | The installation TUI's Remote Targets step now supports bulk server entry: paste a list of addresses, including ranges and CIDR blocks, instead of adding hosts one at a time. | LBM1-46424 |
Enhancement | The KATO grace period, previously hardcoded to 10 seconds, is now configurable via | LBM1-47388 |
Enhancement | The Node dashboard now includes a panel showing metadata utilization as a percentage. | LBM1-46712 |
Enhancement | When a node's journal device fails, the node now automatically creates and uses a new journal device on restart, provided it can shut down gracefully and enough devices remain. This reduces node downtime after a journal device failure. | LBM1-42323 |
Enhancement | When installing on Ubuntu, the installer now automatically opens the ports that Lightbits requires in the ufw firewall. | LBM1-47495 |
Major | Fixed a bug where deleting a snapshot during a rebuild could cause a damaged object to be read on the primary, triggering data-integrity alerts and preventing the affected data from being correctly persisted on the secondary. | LBM1-47343 |
Major | Fixed an edge case where the frontend could hang for up to 120 seconds due to a missing timeout on the replicator connection. | LBM1-46486 |
Major | Fixed an issue where a trim (deallocate) request that arrived during a replica configuration change, such as a node failure, could be reported to the host as successful even though a replica had not applied it, leaving the replicas inconsistent. Such requests now fail back to the host and are retried on the new primary through an ANA path change. | LBM1-48806 |
Major | Fixed an issue where aborted client-kernel NVMe commands triggered unexpected node down/up state transitions in VMware environments. | LBM1-45998 |
Major | Fixed an issue where, after a node was restarted or replaced, volume recovery on that node could stall indefinitely on clusters with many clone volumes created from a small number of shared snapshots. Clone volumes could be processed before the snapshots they depend on and use up all available recovery workers, so the source snapshots were never processed and the affected protection groups could not finish rebuilding. Source snapshots are now processed before their clones. | LBM1-48205 |
Major | Fixed failing node-manager start when the number of healthy SSDs is lower than the | LBM1-48532 |
Major | PEERMON (connectivity report) now fails a node if any of the replication connections to it has more than 15s of down time with no live link (configurable in | LBM1-45912 |
Major | Proactive rebalance algorithm priority tweak. No difference in behavior should be perceivable externally. | LBM1-47330 |
Minor | An edge case during migration would allow migration to continue even if the target node was permanently failed. Migration will now exit when its target node is permanently failed. | LBM1-44464 |
Minor | Fixed a failure in cluster root key rotation on TPM-backed clusters, where the rotation could time out and report an internal error. TPM operations are now given a longer default timeout and are bounded so that a stalled helper process cannot block the rotation. | LBM1-46100 |
Minor | Fixed a false | LBM1-48646 |
Minor | Fixed a volume leak when retyping an OpenStack Cinder volume between projects. | LBM1-44442 |
Minor | Fixed an issue in the management services where an operation that kept failing was eventually retried with almost no delay. After enough consecutive failures (about 1.5 minutes of retries on 3.18.x, or about 16 hours on 3.19.x and 3.20.x), the delay between retries dropped to nearly zero. The continuous retries could keep a CPU core busy and flood the logs, pushing out the older log entries needed to investigate the original failure. | LBM1-48041 |
Minor | Fixed an issue where a node that had just restarted could briefly report its power-up as already 100% complete, based on a leftover value from before the restart; this could let a recovery step proceed before the node was actually ready. A node that cannot currently be queried now correctly reports unknown progress instead of a stale value. | LBM1-47398 |
Minor | Fixed an issue where a snapshot or volume created while a node was inactive, and deleted while that node was still powering up, could stay behind on the node. The leftover could block deletion of the snapshot it was created from, or prevent volumes on that node from rebuilding correctly. | LBM1-48012 |
Minor | Fixed an issue where a volume rebuild could fail if a snapshot was deleted during the rebuild. | LBM1-46869 |
Minor | Fixed an issue where the node manager completed its shutdown before the data-path service had stopped, which delayed the server's shutdown. The data-path service now has dedicated time to stop. | LBM1-44334 |
Minor | Fixed an RPM upgrade issue where the Lightbits package's etcd version requirement (>= v3.5.30) could be satisfied by version-string comparison even against an older installed etcd package (such as 3.5.18), so an upgrade from v3.18.3 or v3.20.1 could leave the cluster on an outdated etcd. Upgrades now pull in the correct etcd version. | LBM1-48605 |
Minor | Fixed an upgrade preflight check that could intermittently pin its etcd snapshot to an already-down etcd member and fail with a timeout even though cluster quorum was intact; the preflight now selects a healthy member so cluster upgrades start deterministically. | LBM1-46187 |
Minor | Fixed incorrect file permissions on container service unit files (e.g., a .service file marked executable when it should not be), which could trigger incorrect systemd warnings during installation. | LBM1-46294 |
Minor | Fixed node cleanup (Ansible) not stopping and removing leftover journaling RAID (mdadm) devices, which could cause a subsequent install to fail due to insufficient available NVMe drives. | LBM1-45625 |
Minor | Fixed the Chrony and Cluster dashboards in the monitoring stack, which showed no data because of an incorrect data-source reference. | LBM1-45884 |
Minor | Fixed the TCP segments re-transmitted panel in the monitoring dashboard showing negative values after a counter reset. | LBM1-43755 |
Minor | Fixed the volume-state panel on the Cluster dashboard, which reported an incorrect number of volumes in the migrating state. | LBM1-46295 |
Minor | Fixed volumes configured with a specific IP-ACL (not allow-any) being invisible to an allowed host when the node is set to listen on all interfaces; an allowed IPv4 host address arriving as an IPv4-mapped IPv6 address no longer fails the ACL match. | LBM1-46207 |
Minor | OpenStack Cinder: retyping a volume to change only its QoS policy now updates the policy in place, without migrating the volume's data. | LBM1-47082 |
Minor | Reduced logging noise from lightbox-exporter: a repeated SMART or NVMe error-log collection failure is now logged as a warning once, and again only when the failure changes or clears. | LBM1-44531 |
Minor | Removed an incorrect profile-generator startup failure seen on some installs when node-manager already held the shared local database lock; profile-generator no longer depends on that lock and will not fail to start for this reason. | LBM1-46174 |
Minor | SSD SMART alert reliability. Aligned the for: durations of the SSD SMART gauge-threshold alerts ( | LBM1-44667 |
Minor | The API now returns a conflict (HTTP 409) instead of an internal server error (HTTP 500) when a request is rejected because another task is already running on the same resource. | LBM1-46814 |
Installation and Upgradeability
You can upgrade to this release from all previous Lightbits 3.18.x, 3.19.x, and 3.20.x releases.
© 2026 Lightbits Labs™