Hi!
Here is the final release of Linstor 1.34.0, we have fixed a few more bugs
and sneaked in a nice regex filtering feature for all list commands.
Biggest new feature of this release is API token authentication, if
enabled, it would restart the controller with a self-signed HTTPS
certificate and any further requests need to provide a HTTP Bearer
token in the headers. If setup through the client most of this will
automatically done in the background, plugins are already released
or will be released soon with support for this new feature.
Another "feature" is that we finally improved our timeout checks for
external commands.
As long as the external commands report some I/O usage, they will not
strictly time out after 45s.
Then we added a new Clone/BalanceAfterClone property, that allows the
controller to place an additional resource during cloning. This will
help distribute space in situation where you have a template that is
often cloned from so it doesn't always end up on the same nodes, in
the beginning it will take an additional resource, but as soon as the
BalanceResourceTask runs it will remove the excessive resource from
the most used node.
We also added support for DRBD's variable bitmap block size,
exposed through a new BitmapBlockSizeNewResource property.
Instead of the fixed 4 KiB granularity, each bitmap bit can now cover up to 1 MiB,
which noticeably shrinks the DRBD metadata on very large volumes
at the cost of a coarser resync granularity — it needs drbd-utils 9.33+ and
only takes effect for newly created resources.
Linstor can now create diskless resources as DRBD clients,
i.e. a diskless that intentionally holds no quorum vote. This keeps quorum balanced
in stretched/multi-datacenter clusters: a diskless client running
where the diskful peers already live no longer makes Linstor drop
the dedicated tiebreaker in the third site — resources created via make-available
now become clients automatically, and you can switch a resource between plain diskless
and client through toggle-disk or the resource modify API.
And finally Linstor now will detect blocked ports and add those ports
to a blocked range list property, it is now also possible to define
multiple TCP port ranges.
Also the linstor-controller is no longer started as root user, instead
we leverage the DynamicUser functionallity from systemd.
To mention it again, this build requires now java-21 AND we finally
removed ETCD support from this version on.
[1.34.0] - 2026-06-29
Added
- REST list endpoints now support regular-expression matching in their name filters (
nodes,resources,resource_definitions,resource_groups,storage_pools,snapshots) and inpropsfilters (on both the property key and value); thepropsfilter is now also available on the per-node storage-pool and per-resource volume list endpoints
Fixed
- Fixed ZFS clone deletion not cleaning up the clone's source snapshot that was marked for deletion, leaving orphaned
CF_*snapshots behind after the cloned resource was deleted - Fixed DRBD auto verify algorithm being recomputed over an incomplete node set while satellites reconnect, which could change the algorithm and force an already connected resource into StandAlone without automatic reconnect
- Fixed implementation error ("attempt to replace an active transMgr") during L2L backup shipping when a new shipment created its snapshot or temporary satellite-remote concurrently with the cleanup of a finished shipment deleting its temporary satellite-remote
- Fixed implementation error ("attempt to replace an active transMgr") when creating or modifying a resource group concurrently with a backup restore/shipment that moves a resource definition into its target resource group
- Fixed BalanceResources counting an unhealthy diskful and possibly deleting therefore a healthy diskful
- Fixed implementation error during DRBD .res file regeneration when the existing on-disk file was empty or truncated, which aborted the regeneration instead of rewriting the file
- Fixed regular snapshot restore not setting DRBD_INITIALIZED on the restored volume definition, which could cause spurious metadata re-creation and split-brain
- Another attempt to fix rare bug causing "shipping in progress" that can only be cleared by restarting the controller
- Release the target-side restore-lock when a backup receive is aborted (both while still preparing and while actively shipping), so a stuck "backup is currently being restored" no longer blocks further shipments to a resource until the controller is restarted
- Fixed shipmentFailed always being false in AbsBackupShippingService.waitForSnapCreateFinished
- Fixed NullPointerException on the satellite when concurrently deleting multiple volumes with a
FileSystem/Typeproperty, which marked the resource as failed and returned the delete as an internal error
[1.34.0-rc.1] - 2026-05-28
Added
- Toggle-disk can now be retried or aborted.
- Added export-db API
- Satellites report platform and OS variant and Controller exposes that on the REST API.
- Added property "ExtCmd/WaitTimeout"
- Added property "ExtCmd/TermTimeout"
- Added property "ExtCmd/KillTimeout"
- Added property "ExtCmd/IoStallTimeout"
- Added property "ExtCmd/IoPollInterval"
- Added "Linstor/Drbd/OutsideAddress" property for DRBD's outside-address for setups using a NAT
- Added optional alternative suffixes for external files
- Added status check (current path + content as expected) for external files
- Added property "Rest/AutoHTTPs", if enabled will automatically create a SSL certificate and re-start SSL server
- Added token authentication API and implementation, if enabled only allows Authentication Bearer token access
- Added property "Clone/DdBlocksize" to configure the DD clone blocksize used
- Added "BalanceResourcesSkipDiskLimit" property to skip balancing resources with more than X skipDisk resources (default 1)
- Added property "Autoplacer/MinThinFreeSpace" that disqualifies storPools with less free space than specified
- Added linstor-config disable-token-auth command
- Property Clone/BalanceAfterClone to autoplace an extra diskful resource after a clone operation
- Property Snapshot/BalanceAfterRestore to autoplace an extra diskful resource after a snapshot restore
- Added property "Luks/AllowDiscards" to enable discard/TRIM pass-through on LUKS volumes; when LUKS sits below DRBD, rs-discard-granularity is also set automatically
- Added "Client" as DRBD state (non-voting diskless peer)
- Added property "TcpPortsBlocked" on node level
Changed
- SOS report now uses export-db instead of non-JSON database dump
- Minimum java version is now java-21, please upgrade if you want to continue building/running LINSTOR.
- DRBD: create-md now only times out if there was no IO for 45s
- mkfs: mkfs.ext4 and mkfs.xfs now only time out if there was no IO for 45s
- Moved old property "ExtCmdWaitTimeout" -> "ExtCmd/WaitTimeout"
- SOS report: 'tar' command now only times out if there was no IO for 45s
- Don't call shred on ZFS devices as those are guaranteed to always read 0
- Upated debian package compat version to 11
- linstor-controller.service: switch to DynamicUser (i.e., execute as non-root user).
- Systemd-notify: Use SDNotify library instead of calling "systemd-notify"
- Thick LVM: New volumes are now placed on the least-used PVs by default. This behavior can be customized via the new "StorDriver/LvcreatePvSelection" property.
- Check for valid storage pool names on resource-group select filter
- Controller now ignores case when checking if a NetCom is enabled or not
- Default evict timeout was increased from 1h to 12h
- Property "TcpPortAutoRange" can now also be set on node level
Removed
- ETCD database support is now removed, please convert to SQL or CRD DB, before upgrade
- Removed K8s migrations older than 2023 / LINSTOR v1.21.0-rc1
- Removed SQL migrations older than 2023 / LINSTOR v1.21.0-rc1
Fixed
- Fixed incorrect default LUKS2 header size calculation
- Parse errors during ctrl -> stlt authentication now result in "AUTHENTICATION_ERROR" instead of "OFFLINE" (regression introduced in 1.32.0-rc.1)
- Fixed free space reporting of thin storage spaces (Windows) pool
- Fixed race condition where after a reconnect storage pools might not show correct capacities and freespaces.
- Fixed PREPARE_SHIPPING backups didn't count as active shippings
- If a satellite cannot decrypt a LUKS key it no longer goes into FULLSYNC_FAILED, but just marks the resource to have corrupted crypt key
- Fixed auto-rs-discard-granularity staying set on devices that don't support discards (e.g. LUKS without AllowDiscards)
- Throw a CriticalError(restart) if a JDK spawn helper exception was caught (usually a JDK version mismatch)
- Fixed bug where taking a snapshot on a not-only-DRBD resource could hang indefinitely
- Attempt to fix rare bug causing "shipping in progress" that can only be cleared by restarting the controller
- Fixed rare race condition when changing the LUKS passphrase
- Fixed bug where trying to start a backup shipment of a rsc that isn't UpToDate lead to an AccessToDeletedDataException