发布日期: 2026-06-02
版本号: v1.12.0

Longhorn v1.12.0 已发布,这是一个重要的功能版本,其核心亮点是 V2 数据引擎正式进入生产可用(GA)阶段。此版本在 V2 引擎的稳定性、安全性和功能上取得了重大进展,同时引入了拓扑感知的动态卷供应、双栈和 V2 IPv6 网络支持,并增强了可观测性与运维工具。其他关键更新包括:移除了 V2 后备镜像功能(需在升级前迁移)、优化了 CPU 资源分配默认值、添加了按需快照校验功能、改进了复制副本的稳定性,并修复了大量已知问题,显著提升了系统的整体可靠性和性能。

更新内容 (中文)

Longhorn v1.12.0 发布说明

Longhorn 团队很高兴宣布发布 Longhorn v1.12.0。此功能版本标志着 Longhorn 的一个重要里程碑:V2 数据引擎现已正式通用可用 (GA)

随着 V2 数据引擎达到 GA 状态,Longhorn v1.12.0 通过拓扑感知供应、双栈和 V2 IPv6 支持、改进的可观测性和运维工具,以及关于 V1 和 V2 行为及功能对等性的更清晰指南,强化了现代工作负载的生产环境就绪性。

有关 Longhorn 版本的术语和背景,请参阅 版本发布

移除内容

V2 备份镜像移除

Longhorn v1.12.0 中移除了 V2 备份镜像。建议使用 容器化数据导入器 (CDI) 将虚拟机磁盘镜像导入 V2 卷,以实现相同目的。

如果您有从备份镜像创建的 V2 卷,则必须在升级到 v1.12.0 之前进行迁移:

  1. 备份并重新创建(推荐):为 V2 卷创建备份,删除原始卷,然后从备份中还原。还原后的卷将不再有备份镜像依赖。
  2. 删除卷:如果数据不需要,直接删除 V2 卷。

具有备份镜像依赖的 V2 卷无法就地升级。在未迁移的情况下尝试升级可能导致卷连接失败。

GitHub Issue #13181

主要亮点

V2 数据引擎

通用可用

我们很高兴宣布 V2 数据引擎在 Longhorn v1.12.0 中正式达到 通用可用 状态。

这一里程碑反映了在稳定性、运维安全性、网络支持和功能成熟度方面的重大进展。与早期版本相比,V2 卷更适合生产环境使用,结合了 GA 就绪性、现代网络支持、更精确的调度行为,以及对 V2 已经匹配 V1 行为和差异仍然重要的地方更清晰的可见性。

[!IMPORTANT] V2 在线升级:

V2 卷不支持 Longhorn v1.12 补丁版本之间的在线升级,升级前必须断开连接。计划在从 Longhorn v1.12 版本升级到 Longhorn v1.13 版本时提供支持。

大规模环境下 V2 卷的连接延迟:

在已连接 V2 卷数量不断增加的环境中,观察到后续卷的连接延迟增加。初步分析表明这可能与大规模环境下的 NVMe-TCP 连接处理有关,尽管确切层次(SPDK 用户空间或 Linux 内核)尚未确定。正在进一步调查中。有关跟进状态,请参阅 Issue #13241

ARM64 NVMe 支持的块类型节点磁盘限制:

在 ARM64 系统上,当 SPDK 配置了两个或更多 CPU 核心且节点磁盘使用 NVMe 驱动程序时,V2 卷可能会遇到 I/O 卡住的问题。根本原因可能在 Linux 内核或 SPDK 本身,需要进一步调查。作为解决方法,在 ARM64 系统上请使用 AIO 支持的节点磁盘 代替 NVMe 支持的节点磁盘。有关跟进状态,请参阅 Issue #13243

有关当前 V1 和 V2 卷行为差异及功能对等性的摘要,请参阅 V1 和 V2 卷功能支持

展望未来,路线图依然活跃:V2 数据引擎的快速卷克隆 (#12552) 和 分片存储(实验性功能) (#1061) 计划在 Longhorn v1.12.1 中推出。

更智能的供应和现代网络

拓扑感知 PV 节点亲和性控制

Longhorn v1.12.0 添加了 csi-allowed-topology-keys 设置和 strictTopology StorageClass 参数,以更精确地控制 PV 的 nodeAffinity。这些选项允许用户限制传播哪些拓扑键,并在需要时通过 WaitForFirstConsumer 将 PV 固定到选定的节点拓扑。

GitHub Issue #12684

V2 卷的 IPv6 支持

V2 卷现在支持单栈 IPv6 Kubernetes 集群。

GitHub Issue #10928

双栈集群支持

Longhorn 现在支持双栈 Kubernetes 集群,前提是所有节点配置的 IP 族顺序相同,即全部为 IPv4 优先或全部为 IPv6 优先。这适用于 V1 和 V2 数据引擎。

警告: 不支持节点间 IP 族顺序混合的双栈集群,这可能导致副本和引擎之间出现连接故障。

GitHub Issue #11531

更好的运维和可观测性

默认 CPU 分配

Longhorn v1.12.0 将默认的 data-engine-cpu-mask0x1(一个 CPU 核心)更改为 0x3(两个 CPU 核心)。V2 数据引擎使用忙轮询反应器模型,其中主反应器同时处理 I/O 轮询和管理 RPC。当仅分配一个核心时,繁重的 I/O 工作负载可能会延迟或挤占 RPC 处理,导致延迟增加、超时事件和运维不稳定。

分配两个或更多核心允许 I/O 和管理任务在单独的反应器上运行,提高响应能力和运维稳定性。

GitHub Issue #13237

按需快照校验和计算

Longhorn v1.12.0 添加了 longhornctl 支持以触发按需快照校验和计算。该命令可以针对特定卷、特定节点上的所有卷或集群中的所有卷,校验和操作在后台异步运行。

GitHub Issue #11442

切换 Kubernetes Metrics Server 集成

Longhorn v1.12.0 添加了 Kubernetes Metrics Server Metrics Enabled 设置,以便在 Kubernetes Metrics Server API 不可用时禁用依赖于 metrics-server 的指标。这减少了重复的抓取警告和不必要的 API 调用,同时保留了其他 Longhorn 指标。

GitHub Issue #13011

Longhorn Manager 内存优化

Longhorn v1.12.0 优化了 longhorn-manager informer 缓存以减少内存使用,特别是在具有高 Pod 数量的大型集群中。这降低了由于每个管理器实例重复缓存非 Longhorn Pod 数据而导致的集群级内存开销。

GitHub Issue #12771

可配置的引擎镜像 Pod 存活探针

Longhorn v1.12.0 添加了设置,以配置引擎镜像 DaemonSet 存活探针的周期、超时和失败阈值。这些设置有助于减少资源受限集群(尤其是在升级或瞬时 CPU 峰值期间)上不必要的引擎镜像 Pod 重启。

GitHub Issue #12846

关键稳定性修复

副本重建风暴期间实例管理器稳定性

Longhorn v1.12.0 修复了在副本重建风暴期间可能发生的实例管理器 panic。在受影响的环境中,该 panic 可能会终止实例管理器提供的所有 iSCSI 目标,并触发多个 PVC 的级联卷分离。

GitHub Issue #13087

副本重建进度报告

Longhorn v1.12.0 修复了副本重建进度报告的 bug,在不稳定网络上文件同步重试后,该 bug 可能显示超过 100% 的值。进度计算现在为重试的文件正确重置,因此重建进度保持在有效的 0% 到 100% 范围内。

GitHub Issue #12949

副本自动平衡调度循环

Longhorn v1.12.0 修复了副本自动平衡中的一个回归问题,当 Replica Auto Balance 设置为 best-effort 时,该问题可能触发重复的副本创建和删除循环。在受影响的集群中,Longhorn 可能会持续调度额外的副本,而不是稳定在配置的副本数量上。

GitHub Issue #12926

失败本地调度期间的副本 CR 泄漏

Longhorn v1.12.0 修复了一个副本调度问题,当 dataLocality 设置为 best-effort 且节点没有足够的合格本地磁盘空间用于另一个副本时,可能会积累大量停止的 Replica CR。在受影响的集群中,持续的 reconciliation 可能会不断创建占位符 Replica CR,而不是重用单个失败调度的占位符。

GitHub Issue #13152

CSI 存储容量跟踪

Longhorn v1.12.0 修复了 CSIStorageCapacity 调度问题,该问题可能导致没有 Longhorn 磁盘的计算节点报告零容量,并被 WaitForFirstConsumer 调度拒绝。在具有分离的计算和存储节点的受影响集群中,即使存储节点上有合格的存储,新的 PVC 也可能保持挂起状态。

GitHub Issue #12807

加密卷大小修正

Longhorn v1.12.0 在副本后端文件中为加密卷预分配了 16 MiB LUKS2 头,因此在升级引擎镜像后,dm-crypt 设备现在向工作负载公开完整的请求大小。

此更改还为加密的可迁移卷引入了升级约束:当使用 CLI API 版本早于 12 的引擎镜像时,不支持在线迁移。在尝试在线迁移加密卷之前,请将引擎镜像升级到 v1.12.0 或更高版本。

GitHub Issue #9205

UBLK 前端内核限制

用于 V2 数据引擎卷的 UBLK 前端仍然是实验性的,并且仅在低于 v6.17 的 Linux 内核上运行。在内核 v6.17.0 及以上版本上,UBLK 会因为上游 UBLK API 变更导致 EINVAL 错误而失败,无法启动 UBLK 设备。

GitHub Issue #11977

安装

[!IMPORTANT] 在安装 Longhorn v1.12.0 之前,请确保您的集群运行的是 Kubernetes v1.25 或更高版本。

您可以使用多种工具安装 Longhorn,包括 Rancher、Kubectl 和 Helm。有关安装方法和要求的更多信息,请参阅 Longhorn 文档中的 快速安装

升级

[!IMPORTANT] 在从 Longhorn v1.11.x 升级到 v1.12.0 之前,请确保您的集群运行的是 Kubernetes v1.25 或更高版本。

Longhorn 仅允许从受支持的版本进行升级。有关升级路径和过程的更多信息,请参阅 Longhorn 文档中的 升级

发布后已知问题

有关此版本后发现的问题信息,请参阅 发布已知问题

本版本解决的问题

亮点

  • [FEATURE] 解耦 V2 数据引擎发起方和目标放置 7124 - @derekbit @shuo-wu @chriscchien
  • [FEATURE] V2 数据引擎的 IPv6 支持 10928 - @COLDTURNIP @chriscchien
  • [FEATURE] 支持 IPv4/IPv6 双栈,IPv6 族优先或 IPv4 族优先 11531 - @COLDTURNIP @c3y1huang @chriscchien
  • [FEATURE] 支持 V2 数据引擎(GA) 6229 - @derekbit

功能

  • [FEATURE] 支持按需快照校验和计算 11442 - @yangchiu @davidcheng0922
  • [FEATURE] 为 longhornctl 添加 --tolerations 标志,以在污点节点上调度 DaemonSet Pod 12993 - @chriscchien @bachmanity1

改进

  • [IMPROVEMENT] 使用每卷文件锁消除 NVMe/TCP 发起方操作中的跨卷阻塞 13236 - @derekbit @chriscchien
  • [IMPROVEMENT] 增加默认 SPDK CPU 掩码,为 V2 数据引擎使用 2+ 个 CPU 核心 13237 - @derekbit @mantissahz @chriscchien
  • [IMPROVEMENT] 移除 v2 备份镜像监控 13181 - @COLDTURNIP @derekbit @chriscchien
  • [IMPROVEMENT] 在停止前清理期间等待 spdk_tgt 进程终止 13179 - @derekbit @chriscchien
  • [IMPROVEMENT] 当大页设置更改且没有实例运行时重启实例管理器 Pod 13170 - @derekbit @chriscchien
  • [IMPROVEMENT] 支持 V2 数据引擎 CPU 掩码设置的 CPU 列表格式并自动转换为十六进制掩码 13166 - @derekbit @chriscchien
  • [IMPROVEMENT] 将 Helm chart 中的 Longhorn distro 更新为 longhorn 13160 - @derekbit @chriscchien
  • [IMPROVEMENT] 误导性的存储值 12633 - @elTwingo @davidcheng0922 @houhoucoop @roger-ryao
  • [IMPROVEMENT] 实现网络重连以增强副本重建弹性 9626 - @yangchiu @mschneider82
  • [IMPROVEMENT] 在 Helm chart 中添加对新 StorageClass 参数的支持 9324 - @yangchiu @TheFutonEng
  • [IMPROVEMENT] 使 Kubernetes Metrics Server (metrics.k8s.io) 集成可切换 13011 - @yangchiu @mantissahz @hookak
  • [IMPROVEMENT] 通过优化集群级 informer 缓存减少 longhorn-manager 内存使用 12771 - @hookak @roger-ryao
  • [IMPROVEMENT] 拓扑感知 PV 节点亲和性控制:allowedTopologies 键 + strictTopology 12684 - @hookak @roger-ryao
  • [IMPROVEMENT] 使用 Helm 值设置 StorageClass 注释 13137 - @yangchiu @Profiidev
  • [IMPROVEMENT] longhorn-manager Pod 在大规模环境下竞争 webhook TLS Secret 13012 - @yangchiu @hookak
  • [IMPROVEMENT] 改进 Longhorn 自动拯救可观测性 13018 - @yangchiu @derekbit
  • [IMPROVEMENT] 在卷扩展期间移除 Scheduled 条件检查 12606 - @yangchiu @davidcheng0922
  • [IMPROVEMENT] TooManySnapshots 卷条件尽管可配置快照最大数量,却使用硬编码阈值 12396 - @COLDTURNIP @yangchiu
  • [IMPROVEMENT] 将 v2 卷备份还原从副本移至引擎 9277 - @davidcheng0922 @roger-ryao
  • [IMPROVEMENT] 是否有方法在没有 python 的情况下使用 longhorn 12679 - @roger-ryao
  • [IMPROVEMENT] sparse-tools API 不得对现有 API 引入破坏性更改。 12967 - @yangchiu @derekbit
  • [UI][IMPROVEMENT] TooManySnapshots 卷条件尽管可配置快照最大数量,却使用硬编码阈值 12922 - @chriscchien @houhoucoop
  • [IMPROVEMENT] 将 Backup Target 添加到卷列表 custom column 选项中 12619 - @yangchiu @houhoucoop
  • [IMPROVEMENT] 允许通过 Helm 禁用默认 longhorn StorageClass 的创建 12906 - @hookak @roger-ryao
  • [IMPROVEMENT][TEST] 为实用程序解析和字符串转换辅助函数添加单元测试 12898 - @archy-rock3t-cloud @chriscchien
  • [IMPROVEMENT] 备份指标 11387 - @yangchiu @mantissahz @Copilot
  • [IMPROVEMENT] chart:允许在 ServiceMonitor 上指定 spec.sampleLimit 12671 - @grelland @yangchiu
  • [IMPROVEMENT] 为非加密和加密卷添加指标 12462 - @derekbit @mantissahz @chriscchien @Copilot
  • [IMPROVEMENT] 在 generate-longhorn-yaml 错误消息中阐明 Helm 版本 12630 - @luojiyin1987 @chriscchien
  • [IMPROVEMENT][UI] 将版本号链接到 git 发布 11132 - @chriscchien @houhoucoop
  • [IMPROVEMENT] 在 Share Manager CR 状态中记录当前 share manager 镜像 11203 - @derekbit @roger-ryao @Copilot
  • [IMPROVEMENT] 快照树颜色说明 12247 - @houhoucoop
  • [IMPROVEMENT] 拒绝将 strict-local 卷连接到错误节点 8546 - @yangchiu @derekbit @mantissahz @Copilot
  • [IMPROVEMENT] 确保 V2 引擎 ReplicaAdd 遵守 fast-replica-rebuild-enabled 设置 12540 - @davidcheng0922 @roger-ryao
  • [IMPROVEMENT] 放宽可迁移块模式卷的 endpoint-network-for-rwx-volume 验证 12644 - @c3y1huang @chriscchien
  • [IMPROVEMENT] 为节点控制器删除备份镜像副本的原因提供详细日志 12584 - @COLDTURNIP @yangchiu
  • [IMPROVEMENT] csi-resizer 的 RBAC 权限 12681 - @yangchiu @konstantin-kelemen
  • [IMPROVEMENT] 添加消息提示用户清理备份镜像 CR 中不存在的磁盘 10617 - @chriscchien @Copilot
  • [IMPROVEMENT] 将工作负载 Pod 保留在原始区域和地域 12517 - @bachmanity1
  • [IMPROVEMENT] 调度带有现有 PV 的 Pod 时考虑节点存储容量 12398 - @bachmanity1
  • [IMPROVEMENT] 当备份镜像大小不匹配时,卷可能以无明确原因进入故障状态 11673 - @COLDTURNIP @derekbit @roger-ryao @Copilot

错误修复

  • [BUG] 使用 /dev/disk/by-path/pci-* 路径添加 V2 磁盘失败(应使用 aio 驱动程序,但错误地认为它是 BDF 路径) 13228 - @tserong @chriscchien
  • [BUG] 删除并重启 Longhorn 组件后,v2 RWX 工作负载 IO 超时 13217 - @yangchiu @derekbit
  • [BUG] 删除并重启实例管理器后,v2 卷卡在 Degraded 状态 13215 - @yangchiu @derekbit
  • [BUG] 副本重建期间实例管理器中的空指针解引用 panic。 13087 - @derekbit @shuo-wu @roger-ryao
  • [BUG] 测试加密卷升级:旧引擎 RWO 卷在扩展至 2 GiB 后显示 1008 MiB 而非预期的 2032 MiB 13194 - @derekbit @mantissahz @roger-ryao
  • [BUG] v2 卷删除前清除了 Spec.NodeID,当 Status.InstanceManagerName 为空时可能导致副本孤立 13198 - @derekbit @chriscchien
  • [BUG] 重置备份目标为空后,备份目标仍显示 Available 13195 - @yangchiu @derekbit
  • [BUG] 当引擎前端恢复阻止 gRPC 启动时,v2 实例管理器 Pod 卡在创建/删除循环中 13185 - @derekbit @chriscchien
  • [BUG] 在 108.2.1+up1.10.2 中,global.cattle.systemDefaultRegistry 未作为镜像注册表前缀应用 13071 - @COLDTURNIP @yangchiu
  • [BUG] longhorn-instance-manager 中潜在的资源泄漏 13143 - @derekbit @chriscchien
  • [BUG] 加密卷提供的大小比声明的大小短 16MB 9205 - @mantissahz @roger-ryao
  • [BUG] CSIStorageCapacity 对于没有 Longhorn 磁盘的计算节点报告 0,破坏了 WaitForFirstConsumer 调度 12807 - @bachmanity1 @roger-ryao
  • [BUG] 由于 AWS SDK Go v2 CRC32 校验和不兼容,Google Cloud Storage (GCS) 备份目标始终因 SignatureDoesNotMatch 而失败 12676 - @mantissahz @chriscchien
  • [BUG] Longhorn 无法在启用了 FIPS 的系统上启用卷安全性 12721 - @davidcheng0922 @chriscchien
  • [BUG] 副本自动平衡导致无限副本调度循环 12926 - @yangchiu @shuo-wu
  • [BUG] 副本重建进度可能超过 100% 12949 - @yangchiu @mschneider82 @davidcheng0922
  • [BUG] v2 备份/还原打开失败路径可能泄漏 NVMe 发起方和暴露的 bdev 13114 - @derekbit @roger-ryao
  • [BUG] longhorn-spdk-engine 中的连接泄漏 13101 - @derekbit @roger-ryao @Copilot
  • [BUG] 支持包状态轮询和 webhook 就绪检查中的 HTTP 响应体泄漏 13115 - @derekbit @roger-ryao
  • [BUG] 节点重启和实例管理器删除后,加密卷卡在连接/分离循环中 11510 - @yangchiu @mantissahz
  • [BUG] 测试用例 test_cleanup_system_generated_snapshots 在 v2 卷上失败 13123 - @yangchiu @davidcheng0922
  • [BUG] 测试用例 test_drain_with_block_for_eviction_if_contains_last_replica_success 在 v1 卷上失败 13103 - @derekbit @chriscchien
  • [BUG] 当快照 CR 删除无法处理时,卷可能卡住 12489 - @COLDTURNIP @yangchiu
  • [BUG] snapshot-max-count 在 v2 卷上不起作用 12921 - @yangchiu @davidcheng0922
  • [BUG][v1.12.0-rc1] 在 v2 数据引擎上进行大量写入和定期作业时,重启副本节点后 RWX 卷卡在分离/连接循环中 13062 - @derekbit @chriscchien
  • [BUG] 节点重启后将 v2 卷连接到重启的节点,卷卡在 Attaching 状态 13084 - @yangchiu @derekbit
  • [BUG] [v1.12.0-rc1] longhornctl 在 sle-micro 6.1 上失败 13048 - @COLDTURNIP @roger-ryao
  • [BUG] [longhorn-engine/dataserver] 健壮地处理 io.ReadFull 返回的 EOF 12964 - @yangchiu @apoorvajagtap
  • [BUG] 指标 longhorn_rest_client_rate_limiter_latency_seconds_bucket 的 PrometheusTimeseriesCardinality 13085 - @derekbit @chriscchien
  • [BUG] [v1.12.0-rc1] longhornctl 在 Ubuntu 26.04 上失败 13072 - @derekbit @roger-ryao
  • [BUG] longhorn-spdk-engine verify() 竞争覆盖 replicaMap,破坏并发副本重建 13074 - @derekbit @roger-ryao
  • [BUG] 重建清理期间 spdk_tgt 崩溃 13076 - @derekbit @roger-ryao
  • [BUG] 在 v2 卷扩展期间停止 spdk_tgt 会导致卷卡在分离状态,并且未在 Engine CR 中记录失败 12903 - @davidcheng0922 @chriscchien
  • [BUG] 节点关闭并在新节点上重新创建 share manager 后,RWX 工作负载变为只读 12986 - @yangchiu @davidcheng0922
  • [BUG] test_support_bundle.py 测试用例在具有 IPv6 模式硬编码集群 上失败 13066 - @COLDTURNIP @yangchiu
  • [BUG] [v1.12.0-rc1] test_delete_backup_during_restoring_volume 在 v2 卷上失败,卷未故障且条件 Restore 为 True 13061 - @derekbit @chriscchien
  • [BUG] test_engine_upgrade.py 中的测试用例失败 13014 - @mantissahz @roger-ryao
  • [BUG] 如果在增量还原期间触发副本重建,v2 DR 卷可能卡在 Degraded 状态 12515 - @davidcheng0922 @chriscchien
  • [BUG] 所有卷清理后节点上仍保留意外的副本,导致意外的计划内存储 11177 - @yangchiu @c3y1huang
  • [BUG] 从备份创建的 V2 卷在还原过程中一个副本崩溃后变得数据损坏 12830 - @chriscchien
  • [BUG] [UI] v2 卷引擎在线切换后副本显示为灰色 13029 - @derekbit @chriscchien
  • [BUG] test_rebuild_with_restoration 在 v2 卷上不稳定 11447 - @derekbit @chriscchien
  • [BUG] 创建备份后,v2 卷的 lastBackup 可能保持为空 12542 - @mantissahz @roger-ryao
  • [BUG] dd && sync 命令在 v2 rwx 加密卷上挂起 12649 - @mantissahz @chriscchien
  • [BUG] VolumeSnapshot snapshot.storage.k8s.io/v1 报告过时错误 11429 - @COLDTURNIP @yangchiu
  • [BUG] 测试用例 test_storage_capacity_aware_pod_scheduling 失败 13001 - @yangchiu @bachmanity1
  • [BUG] 在还原 RWO 加密卷备份时崩溃单个实例管理器在 v2 卷上失败 12938 - @chriscchien
  • [BUG] 加密的 V2 卷无法挂载并保持未知健壮性 12924 - @derekbit @chriscchien
  • [BUG] 备份到 S3 在 95% 时失败 12713 - @yangchiu @mantissahz
  • [BUG] 由 NFS 延迟引起的备份检查构建导致节点耗尽 12896 - @COLDTURNIP @roger-ryao
  • [BUG] 当磁盘路径是 /dev/disk/by-id 符号链接时,未能收集块磁盘 (AIO) 的健康数据 12910 - @yangchiu @hookak
  • [BUG] 在预期备份后的自动清理期间发出“快照变得无法使用”警告事件 12850 - @yangchiu @EpochBoy
  • [BUG] V1.11.0 实例管理器内存消耗非常高 12573 - @derekbit @roger-ryao
  • [BUG] (chart) image.openshift.oauthProxy.registry 被静默忽略 - global.imageRegistry: "docker.io" 默认值始终生效 12685 - @drewmullen @roger-ryao
  • [BUG] 注释未应用于 ingress 4014 - @DodoLeDev @roger-ryao
  • [BUG] 回归测试用例 test_replica_scheduler_rebuild_restore_is_too_big 创建了具有不正确数据引擎类型的卷。 12776 - @derekbit @chriscchien
  • [BUG] 当启用 HTTP 代理时,备份镜像数据源 Pod 失败 12779 - @c3y1huang @chriscchien
  • [BUG] 在 SLES 16.0 上的 v2 回归期间,块磁盘变为不可调度 12404 - @davidcheng0922 @chriscchien
  • [BUG] 如果在还原期间重启卷连接的节点,v2 DR 卷可能变得故障并无法从备份还原 12412 - @c3y1huang @chriscchien
  • [BUG] 孤立控制器未在具有多个实例管理器的节点上清理相应实例管理器上的实例 12786 - @COLDTURNIP @roger-ryao
  • [BUG] V2 卷克隆状态随时间变化 12746 - @davidcheng0922 @roger-ryao
  • [BUG] spdk_tgt 在 CI 测试运行期间在 longhorn-spdk-helper 中遇到断言失败 10599 - @derekbit @roger-ryao
  • [BUG] 能够设置 defaultSettings.nodeDiskHealthMonitoring 12729 - @Turgon37 @chriscchien
  • [BUG] nsmounter get_pid 中的过时名称变量 12703 - @ionfury @chriscchien
  • [BUG] 升级到 1.11.0 后,新的持久卷具有 nodeAffinity 12656 - @hookak @chriscchien
  • [BUG] 不正确的存储重复计算导致当多个副本存在于同一节点上时调度失败 12653 - @yangchiu @davidcheng0922
  • [BUG] Longhorn 验证 webhook 阻止 k3s 服务器节点加入 - flannel CNI 无法初始化 12578 - @yangchiu @mantissahz
  • [BUG] [v2] 不能使用分区作为块设备 12599 - @chriscchien @bachmanity1
  • [BUG] 删除相应的实例管理器 Pod 后,v2 加密卷卡在连接-分离循环中 12648 - @mantissahz
  • [BUG] 卷扩展期间重启节点,将导致 Pod 卡在创建状态 5171 - @roger-ryao
  • [BUG] Longhorn v1.10 Volume API 与 v1.8.1 清单不兼容 12613 - @mantissahz @roger-ryao
  • [BUG] 升级到 v1.10.x 及后续版本后 Volume.Spec.CloneMode 为空 12614 - @mantissahz
  • [BUG] 系统备份可能无法创建或删除 12472 - @yangchiu @mantissahz
  • [BUG] 之前的副本重建完成后,再次触发意外的副本重建 12510 - @chriscchien

性能

  • [TASK] 评估 Longhorn 引擎和副本实例的 CPU 和内存消耗 12936 - @roger-ryao

弹性

  • [DOC] 增强关于实例管理器的 Longhorn 文档 13197 - @Felipalds
  • [IMPROVEMENT] 使引擎镜像 DaemonSet 的存活探针参数可配置 12846 - @roger-ryao @aviralgarg05

稳定性

  • [BUG] longhorn-manager 在备份删除期间 BackupController.setInprogressDeletionMap 中 panic 13245 - @EpochBoy @chriscchien @roger-ryao
  • [BUG] v1.10.2:dataLocality=best-effort 且本地存储不足时,每次定期作业触发都会泄漏 N 个 Replica CR(#12488 后续) 13152 - @derekbit @roger-ryao

杂项

  • [TASK] 在升级响应者请求中添加发行版信息 12778 - @yangchiu @davidcheng0922
  • [DOC] v1 和 v2 卷之间的预期不一致行为 7624 - @yangchiu @derekbit @sushant-suse
  • [EPIC] 将“V2 数据引擎”内容集成到标准文档结构中 13054 - @mantissahz @chriscchien @sushant-suse
  • [BUG] UI 未将 v2 备份状态从错误更新为完成 12842 - @derekbit @mantissahz @chriscchien
  • [BUG] v1.11.1 升级到 v1.12.x-head 失败,因为 v2 卷快照未知字段 status.requestedTime 13113 - @chriscchien
  • [DOC] 为 Longhorn 节点滚动替换期间的节点驱逐工作流创建知识库文章 12870 - @COLDTURNIP @yangchiu
  • [DOC] 优雅移除节点的文档 12961 - @roger-ryao @sushant-suse
  • [BUG] 当存在调度失败的副本时,v2 卷无法在现有副本上重建 12664 - @shuo-wu @chriscchien
  • [WEBSITE][DOC] 更新网站页脚至新的 LF Projects Series LLC 商标免责声明 12982 - @sushant-suse
  • [DOC] Helm chart:v4 兼容性? 12894 - @COLDTURNIP
  • [TASK] 确保所有剩余的 GitHub Actions 都固定到特定的提交 SHA 12920 - @carterli0407-cell
  • [DOC] nginx ingress 弃用通知中的断开链接 12904 - @Copilot
  • [IMPROVEMENT] 添加验证以防止通过 kubectl 修补节点时磁盘 路径 重复 12480 - @yangchiu @carterli0407-cell
  • [REFACTOR] 移除冗余类型转换 12316 - @futhgar @roger-ryao
  • [DOC] 添加关于空间不足问题的知识库 8785 - @mantissahz @roger-ryao @sushant-suse
  • [BUG] 无效字符 ‘<’ 寻找值的开头 12569 - @COLDTURNIP @roger-ryao
  • [DOC] 添加使用 CR 而不仅仅是 UI 文档的还原备份文档 12810 - @chriscchien @sushant-suse
  • [DOC] 更新文档,因为 ingress-nginx 将被弃用 12758 - @yangchiu @sushant-suse
  • [DOC] 改进 可配置 CPU 核心 描述 12740 - @chriscchien @sushant-suse
  • [DOC] iSCSI 环回连接问题的知识库 12548 - @COLDTURNIP @roger-ryao
  • [DOC] 修复文档和增强文件中的错别字 12628 - @luojiyin1987
  • [TASK] 为 longhorn/ 仓库添加 FOSSA 操作工作流 12506 - @derekbit
  • [DOC] 评估 Longhorn V2 卷的大页使用情况 12504 - @derekbit

新贡献者

  • @DodoLeDev
  • @Edo78
  • @Flou21
  • @Nemric
  • @Profiidev
  • @SquaredPotato
  • @TheFutonEng
  • @Turgon37
  • @abacef
  • @adarmi
  • @apoorvajagtap
  • @archy-rock3t-cloud
  • @aviralgarg05
  • @carterli0407-cell
  • @chamarakera
  • @drewmullen
  • @elTwingo
  • @farukheaver
  • @flori4n
  • @futhgar
  • @grelland
  • @ionfury
  • @jeven2016
  • @jimmy-wei
  • @johnwc
  • @konstantin-kelemen
  • @kudodenko
  • @lelgenio
  • @luojiyin1987
  • @mschneider82
  • @mzac
  • @peyremorgan
  • @rrishabh6172
  • @thisisobate
  • @tomklapka
  • @wstutt

贡献者

  • @COLDTURNIP
  • @EpochBoy
  • @Felipalds
  • @PhanLe1010
  • @WebberHuang1118
  • @bachmanity1
  • @boomam
  • @brandboat
  • @c3y1huang
  • @chriscchien
  • @davepgreene
  • @davidcheng0922
  • @derekbit
  • @ejweber
  • @hoo29
  • @hookak
  • @houhoucoop
  • @innobead
  • @mantissahz
  • @roger-ryao
  • @shuo-wu
  • @sushant-suse
  • @yangchiu
  • @tserong
  • @rebeccazzzz
  • @forbesguthrie

更新内容 (原始)

Longhorn v1.12.0 Release Notes

The Longhorn team is excited to announce the release of Longhorn v1.12.0. This feature release marks a major milestone for Longhorn: the V2 Data Engine is now officially Generally Available (GA).

With the V2 Data Engine reaching GA, Longhorn v1.12.0 strengthens the production story for modern workloads with topology-aware provisioning, dual-stack and V2 IPv6 support, improved observability and operational tooling, and clearer guidance around V1 and V2 behavior and feature parity.

For terminology and background on Longhorn releases, see Releases.

Removal

V2 Backing Image Removal

V2 Backing Images are removed in Longhorn v1.12.0. Suggest using the Containerized Data Importer (CDI) to import VM disk images into V2 volumes to achieve the same purpose.

If you have V2 volumes that were created from backing images, you must migrate them before upgrading to v1.12.0:

  1. Backup and recreate (recommended): Create a backup of the V2 volume, delete the original volume, then restore from backup. The restored volume will not have a backing image dependency.
  2. Delete the volume: If the data is not needed, delete the V2 volume directly.

V2 volumes with backing image dependencies cannot be upgraded in-place. Attempting to upgrade without migration may result in volume attachment failures.

GitHub Issue #13181

Primary Highlights

V2 Data Engine

Generally Available

We are pleased to announce that the V2 Data Engine has officially graduated to General Availability in Longhorn v1.12.0.

This milestone reflects major progress in stability, operational safety, networking support, and feature maturity. Compared with earlier releases, V2 volumes are better positioned for production use, combining GA readiness with modern networking support, more precise scheduling behavior, and clearer visibility into where V2 already matches V1 behavior and where differences still matter.

[!IMPORTANT] V2 Live Upgrade:

V2 volumes do not support live upgrades between Longhorn v1.12 patch releases and must be detached before upgrading. Support is planned when upgrading from a Longhorn v1.12 release to a Longhorn v1.13 release.

V2 Volume Attach Latency at Scale:

In environments with a growing number of attached V2 volumes, increased attach latency has been observed for subsequent volumes. Initial analysis suggests this may be related to NVMe-TCP connection handling at scale, though the precise layer, SPDK user-space or Linux kernel, has not yet been identified. Further investigation is in progress. For follow-up status, see Issue #13241.

ARM64 NVMe-backed Block-Type Node Disk Limitation:

On ARM64 systems, V2 volumes may experience stuck I/O when SPDK is configured with two or more CPU cores and node disks use the NVMe driver. The root cause may lie in either the Linux kernel or SPDK itself, and further investigation is required. As a workaround, use AIO-backed node disks instead of NVMe-backed node disks on ARM64 systems. For follow-up status, see Issue #13243.

For a summary of the current V1 and V2 volume behavior differences and feature parity, see V1 and V2 Volume Feature Support.

Looking ahead, the roadmap remains active: fast volume cloning for V2 data engine (#12552) and Sharding Storage (Experimental Feature) (#1061) are planned for Longhorn v1.12.1.

Smarter Provisioning and Modern Networking

Topology-Aware PV Node Affinity Control

Longhorn v1.12.0 adds the csi-allowed-topology-keys setting and strictTopology StorageClass parameter for more precise control of PV nodeAffinity. These options allow users to limit which topology keys are propagated and, with WaitForFirstConsumer, pin the PV to the selected node topology when needed.

GitHub Issue #12684

IPv6 Support for V2 Volumes

V2 volumes now support single-stack IPv6 Kubernetes clusters.

GitHub Issue #10928

Dual-Stack Cluster Support

Longhorn now supports dual-stack Kubernetes clusters when all nodes are configured with their IP families in the same order, either all IPv4-first or all IPv6-first. This applies to both the V1 and V2 data engines.

Warning: Dual-stack clusters with mixed IP family ordering across nodes are not supported and may result in connectivity failures between replicas and the engine.

GitHub Issue #11531

Better Operations and Observability

Default CPU Allocation

Longhorn v1.12.0 changes the default data-engine-cpu-mask from 0x1, one CPU core, to 0x3, two CPU cores. V2 Data Engine uses a busy-polling reactor model where the master reactor handles both I/O polling and management RPCs. When only a single core is assigned, heavy I/O workloads can delay or starve RPC processing, resulting in increased latency, timeout events, and operational instability.

Assigning two or more cores allows I/O and management tasks to run on separate reactors, improving responsiveness and operational stability.

GitHub Issue #13237

On-Demand Snapshot Checksum Calculation

Longhorn v1.12.0 adds longhornctl support for triggering on-demand snapshot checksum calculation. The command can target a specific volume, all volumes on a specific node, or all volumes in the cluster, and the checksum operation runs asynchronously in the background.

GitHub Issue #11442

Toggle Kubernetes Metrics Server Integration

Longhorn v1.12.0 adds the Kubernetes Metrics Server Metrics Enabled setting to disable metrics-server-dependent metrics when the Kubernetes Metrics Server API is unavailable. This reduces repeated scrape warnings and unnecessary API calls while preserving other Longhorn metrics.

GitHub Issue #13011

Longhorn Manager Memory Optimization

Longhorn v1.12.0 optimizes longhorn-manager informer caching to reduce memory usage, especially in large clusters with high pod counts. This lowers cluster-wide memory overhead caused by repeated caching of non-Longhorn pod data on every manager instance.

GitHub Issue #12771

Configurable Engine Image Pod Liveness Probe

Longhorn v1.12.0 adds settings to configure the engine-image DaemonSet liveness probe period, timeout, and failure threshold. These settings help reduce unnecessary engine-image pod restarts on resource-constrained clusters, especially during upgrades or transient CPU spikes.

GitHub Issue #12846

Critical Stability Fixes

Instance Manager Stability During Replica Rebuild Storms

Longhorn v1.12.0 fixes an instance-manager panic that could occur during replica rebuild storms. In affected environments, the panic could terminate all iSCSI targets served by the instance-manager and trigger cascading volume detachments across multiple PVCs.

GitHub Issue #13087

Replica Rebuild Progress Reporting

Longhorn v1.12.0 fixes a replica rebuild progress reporting bug that could display values greater than 100% after file-sync retries on unstable networks. Progress accounting is now reset correctly for retried files, so rebuild progress remains within the valid 0% to 100% range.

GitHub Issue #12949

Replica Auto-Balance Scheduling Loop

Longhorn v1.12.0 fixes a regression in replica auto-balance that could trigger a repeated replica create-and-delete loop when Replica Auto Balance was set to best-effort. In affected clusters, Longhorn could keep scheduling an extra replica instead of stabilizing at the configured replica count.

GitHub Issue #12926

Replica CR Leak During Failed Local Scheduling

Longhorn v1.12.0 fixes a replica scheduling issue where large numbers of stopped Replica CRs could accumulate when dataLocality was set to best-effort and the node did not have enough eligible local disk space for another replica. In affected clusters, recurring reconciliation could keep creating placeholder Replica CRs instead of reusing a single failed-schedule placeholder.

GitHub Issue #13152

CSI Storage Capacity Tracking

Longhorn v1.12.0 fixes a CSIStorageCapacity scheduling issue that could cause compute nodes without Longhorn disks to report zero capacity and be rejected by WaitForFirstConsumer scheduling. In affected clusters with separated compute and storage nodes, new PVCs could remain pending even though eligible storage was available on storage nodes.

GitHub Issue #12807

Encrypted Volume Size Correction

Longhorn v1.12.0 pre-allocates the 16 MiB LUKS2 header in the replica backend file for encrypted volumes, so the dm-crypt device now exposes the full requested size to workloads after the engine image is upgraded.

This change also introduces an upgrade constraint for encrypted migratable volumes: live migration is not supported when using an engine image with a CLI API version older than 12. Upgrade the engine image to v1.12.0 or later before attempting live migration of encrypted volumes.

GitHub Issue #9205

UBLK Frontend Kernel Limitation

The UBLK frontend for V2 data engine volumes remains experimental and is only functional on Linux kernels below v6.17. On kernel v6.17.0 and above, UBLK fails due to upstream UBLK API changes that cause EINVAL errors when starting UBLK devices.

GitHub Issue #11977

Installation

[!IMPORTANT] Ensure that your cluster is running Kubernetes v1.25 or later before installing Longhorn v1.12.0.

You can install Longhorn using a variety of tools, including Rancher, Kubectl, and Helm. For more information about installation methods and requirements, see Quick Installation in the Longhorn documentation.

Upgrade

[!IMPORTANT] Ensure that your cluster is running Kubernetes v1.25 or later before upgrading from Longhorn v1.11.x to v1.12.0.

Longhorn only allows upgrades from supported versions. For more information about upgrade paths and procedures, see Upgrade in the Longhorn documentation.

Post-Release Known Issues

For information about issues identified after this release, see Release-Known-Issues.

Resolved Issues in this release

Highlight

  • [FEATURE] Decouple V2 Data Engine Initiator and Target Placement 7124 - @derekbit @shuo-wu @chriscchien
  • [FEATURE] IPv6 for V2 Data Engine 10928 - @COLDTURNIP @chriscchien
  • [FEATURE] Support IPv4/IPv6 Dual-Stack with IPv6 Family First or IPv4 Family First 11531 - @COLDTURNIP @c3y1huang @chriscchien
  • [FEATURE] Support v2 Data Engine (GA) 6229 - @derekbit

Feature

  • [FEATURE] Support on-demand snapshot checksum calculation 11442 - @yangchiu @davidcheng0922
  • [FEATURE] Add --tolerations flag to longhornctl for scheduling DaemonSet pods on tainted nodes 12993 - @chriscchien @bachmanity1

Improvement

  • [IMPROVEMENT] Use per-volume file lock to eliminate cross-volume blocking in NVMe/TCP initiator operations 13236 - @derekbit @chriscchien
  • [IMPROVEMENT] Increase Default SPDK CPU Mask to Use 2+ CPU Cores for V2 Data Engine 13237 - @derekbit @mantissahz @chriscchien
  • [IMPROVEMENT] Remove v2 backing image monitoring 13181 - @COLDTURNIP @derekbit @chriscchien
  • [IMPROVEMENT] Wait for spdk_tgt process to terminate during pre-stop cleanup 13179 - @derekbit @chriscchien
  • [IMPROVEMENT] Restart Instance Manager pod when hugepage settings change and no instances are running 13170 - @derekbit @chriscchien
  • [IMPROVEMENT] Support CPU list format for V2 Data Engine CPU Mask setting with automatic conversion to hex mask 13166 - @derekbit @chriscchien
  • [IMPROVEMENT] Update Longhorn distro in chart to longhorn 13160 - @derekbit @chriscchien
  • [IMPROVEMENT] Misleading storage values 12633 - @elTwingo @davidcheng0922 @houhoucoop @roger-ryao
  • [IMPROVEMENT] Implement Network Reconnection for Enhancing Replica Rebuilding Resilience 9626 - @yangchiu @mschneider82
  • [IMPROVEMENT] Add support of new StorageClass parameters to helm chart 9324 - @yangchiu @TheFutonEng
  • [IMPROVEMENT] Make Kubernetes Metrics Server (metrics.k8s.io) integration toggleable 13011 - @yangchiu @mantissahz @hookak
  • [IMPROVEMENT] Reduce longhorn-manager memory usage by optimizing cluster-wide informer caching 12771 - @hookak @roger-ryao
  • [IMPROVEMENT] Topology-aware PV nodeAffinity control: allowedTopologies keys + strictTopology 12684 - @hookak @roger-ryao
  • [IMPROVEMENT] Set storage class annotations using helm values 13137 - @yangchiu @Profiidev
  • [IMPROVEMENT] longhorn-manager pods race on webhook TLS Secret at scale 13012 - @yangchiu @hookak
  • [IMPROVEMENT] Improve Longhorn auto-salvage observability 13018 - @yangchiu @derekbit
  • [IMPROVEMENT] Removing Scheduled condition check during volume expansion 12606 - @yangchiu @davidcheng0922
  • [IMPROVEMENT] TooManySnapshots volume condition uses a hard-coded threshold despite configurable snapshot max count 12396 - @COLDTURNIP @yangchiu
  • [IMPROVEMENT] Move v2 volume backup restore from replica to engine 9277 - @davidcheng0922 @roger-ryao
  • [IMPROVEMENT] Is there any way to have longhorn without python 12679 - @roger-ryao
  • [IMPROVEMENT] sparse-tools APIs must not introduce breaking changes to existing APIs. 12967 - @yangchiu @derekbit
  • [UI][IMPROVEMENT] TooManySnapshots volume condition uses a hard-coded threshold despite configurable snapshot max count 12922 - @chriscchien @houhoucoop
  • [IMPROVEMENT] Add Backup Target to volume list custom column options 12619 - @yangchiu @houhoucoop
  • [IMPROVEMENT] Allow disabling creation of the default longhorn StorageClass via Helm 12906 - @hookak @roger-ryao
  • [IMPROVEMENT][TEST] Add unit tests for util parsing and string conversion helpers 12898 - @archy-rock3t-cloud @chriscchien
  • [IMPROVEMENT] Metrics for backups 11387 - @yangchiu @mantissahz @Copilot
  • [IMPROVEMENT] chart: allow specifying spec.sampleLimit on ServiceMonitor 12671 - @grelland @yangchiu
  • [IMPROVEMENT] Add metrics for non-Encrypted and encrypted volumes 12462 - @derekbit @mantissahz @chriscchien @Copilot
  • [IMPROVEMENT] Clarify helm version in generate-longhorn-yaml error message 12630 - @luojiyin1987 @chriscchien
  • [IMPROVEMENT][UI] Link version number to git releases 11132 - @chriscchien @houhoucoop
  • [IMPROVEMENT] Record the current share manager image in the Share Manager CR status 11203 - @derekbit @roger-ryao @Copilot
  • [IMPROVEMENT] Snapshot tree color explanation 12247 - @houhoucoop
  • [IMPROVEMENT] Refuse to attach strict-local volume to the wrong node 8546 - @yangchiu @derekbit @mantissahz @Copilot
  • [IMPROVEMENT] Ensure V2 Engine ReplicaAdd respects the fast-replica-rebuild-enabled setting 12540 - @davidcheng0922 @roger-ryao
  • [IMPROVEMENT] Relax endpoint-network-for-rwx-volume validation for migratable block-mode volumes 12644 - @c3y1huang @chriscchien
  • [IMPROVEMENT] detailed log for the reason of node controller deleting backing image copies 12584 - @COLDTURNIP @yangchiu
  • [IMPROVEMENT] RBAC permissions for csi-resizer 12681 - @yangchiu @konstantin-kelemen
  • [IMPROVEMENT] Adding a message to hint users to clean up non-existing disks in Backing Image CR 10617 - @chriscchien @Copilot
  • [IMPROVEMENT] Keep workload pod in the original zone and region 12517 - @bachmanity1
  • [IMPROVEMENT] Consider node storage capacity when scheduling pods with existing PVs 12398 - @bachmanity1
  • [IMPROVEMENT] Volume may enter faulty state without clear reason when backing image size mismatches 11673 - @COLDTURNIP @derekbit @roger-ryao @Copilot

Bug

  • [BUG] Adding V2 disk using /dev/disk/by-path/pci-* path fails (should use aio driver, but incorrectly thinks it’s a BDF path) 13228 - @tserong @chriscchien
  • [BUG] v2 RWX workload IO timed out after Longhorn components are deleted and restarted 13217 - @yangchiu @derekbit
  • [BUG] v2 volume gets stuck in Degraded state after instance manager is deleted and restarted 13215 - @yangchiu @derekbit
  • [BUG] nil pointer dereference panic in instance-manager during replica rebuild. 13087 - @derekbit @shuo-wu @roger-ryao
  • [BUG] Test Encrypted Volume Upgrade: Old-engine RWO volume shows 1008 MiB after expansion to 2 GiB instead of expected 2032 MiB 13194 - @derekbit @mantissahz @roger-ryao
  • [BUG] v2 volume deletion clears Spec.NodeID before delete, potentially orphaning replicas when Status.InstanceManagerName is empty 13198 - @derekbit @chriscchien
  • [BUG] Backup target still shows Available after being reset to empty 13195 - @yangchiu @derekbit
  • [BUG] v2 instance-manager pod stuck in create/delete loop when engine frontend recovery blocks gRPC startup 13185 - @derekbit @chriscchien
  • [BUG] global.cattle.systemDefaultRegistry is not applied as the image registry prefix in 108.2.1+up1.10.2 13071 - @COLDTURNIP @yangchiu
  • [BUG] Potential resource leak in longhorn-instance-manager 13143 - @derekbit @chriscchien
  • [BUG] Encrypt volume provided size is 16MB shorter than the claimed size 9205 - @mantissahz @roger-ryao
  • [BUG] CSIStorageCapacity reports 0 for compute nodes without Longhorn disks, breaking WaitForFirstConsumer scheduling 12807 - @bachmanity1 @roger-ryao
  • [BUG] Google Cloud Storage (GCS) backup target always fails with SignatureDoesNotMatch due to AWS SDK Go v2 CRC32 checksum incompatibility 12676 - @mantissahz @chriscchien
  • [BUG] Longhorn Fails to enable volume security on FIPS enabled systems 12721 - @davidcheng0922 @chriscchien
  • [BUG] Replica Auto-Balance Causes Infinite Replica Scheduling Loop 12926 - @yangchiu @shuo-wu
  • [BUG] Replica rebuild progress can go over 100% 12949 - @yangchiu @mschneider82 @davidcheng0922
  • [BUG] v2 backup/restore open failure paths can leak NVMe initiators and exposed bdevs 13114 - @derekbit @roger-ryao
  • [BUG] Connection leak in longhorn-spdk-engine 13101 - @derekbit @roger-ryao @Copilot
  • [BUG] HTTP response body leaks in support bundle status polling and webhook readiness checks 13115 - @derekbit @roger-ryao
  • [BUG] Encrypted volume stuck in Attaching/Detaching loop after node reboot and instance manager deletion 11510 - @yangchiu @mantissahz
  • [BUG] Test case test_cleanup_system_generated_snapshots fails on v2 volumes 13123 - @yangchiu @davidcheng0922
  • [BUG] Test case test_drain_with_block_for_eviction_if_contains_last_replica_success failed on v1 volumes 13103 - @derekbit @chriscchien
  • [BUG] Volume may get stuck when the snapshot CR deletion cannot be handled 12489 - @COLDTURNIP @yangchiu
  • [BUG] snapshot-max-count doesn’t work on v2 volumes 12921 - @yangchiu @davidcheng0922
  • [BUG][v1.12.0-rc1] RWX Volume Gets Stuck in Detaching/Attaching Loop After Reboot Replica Node While Heavy Writing And Recurring Jobs on v2 Data Engine 13062 - @derekbit @chriscchien
  • [BUG] After a node is rebooted and attach a v2 volume to the rebooted node, the volume gets stuck in the Attaching state 13084 - @yangchiu @derekbit
  • [BUG] [v1.12.0-rc1] longhornctl fails on sle-micro 6.1 13048 - @COLDTURNIP @roger-ryao
  • [BUG] [longhorn-engine/dataserver] Handling EOF returned by io.ReadFull robustly 12964 - @yangchiu @apoorvajagtap
  • [BUG] PrometheusTimeseriesCardinality for metric longhorn_rest_client_rate_limiter_latency_seconds_bucket 13085 - @derekbit @chriscchien
  • [BUG] [v1.12.0-rc1] longhornctl fails on Ubuntu 26.04 13072 - @derekbit @roger-ryao
  • [BUG] longhorn-spdk-engine verify() race overwrites replicaMap, breaking concurrent replica rebuild 13074 - @derekbit @roger-ryao
  • [BUG] spdk_tgt crash during rebuild cleanup 13076 - @derekbit @roger-ryao
  • [BUG] Stopping spdk_tgt during v2 volume expansion leaves the volume stuck in detaching and does not record the failure in the Engine CR 12903 - @davidcheng0922 @chriscchien
  • [BUG] RWX Workload becomes Read-only after nodes shutdown and share manager is recreated on a new node 12986 - @yangchiu @davidcheng0922
  • [BUG] test_support_bundle.py test cases fail on hardened cluster with IPv6 mode 13066 - @COLDTURNIP @yangchiu
  • [BUG] [v1.12.0-rc1] test_delete_backup_during_restoring_volume fails on v2 volume, volume not faulted and condition Restore is True 13061 - @derekbit @chriscchien
  • [BUG] Test cases in test_engine_upgrade.py failed 13014 - @mantissahz @roger-ryao
  • [BUG] v2 DR volume may get stuck in Degraded state if replica rebuilding is triggered during incremental restoration 12515 - @davidcheng0922 @chriscchien
  • [BUG] Unexpected replica remains on node after all volumes have been cleaned up and causing unexpected scheduled storage 11177 - @yangchiu @c3y1huang
  • [BUG] V2 volume created from backup become data corrupted after crashing one replica during restore 12830 - @chriscchien
  • [BUG] [UI] replica shown as gray when v2 volume engine live switchover 13029 - @derekbit @chriscchien
  • [Bug] test_rebuild_with_restoration is flaky on v2 volume 11447 - @derekbit @chriscchien
  • [BUG] lastBackup of a v2 volume may remain empty after a backup is created 12542 - @mantissahz @roger-ryao
  • [BUG] dd && sync command hangs on v2 rwx encrypted volume 12649 - @mantissahz @chriscchien
  • [BUG] VolumeSnapshot snapshot.storage.k8s.io/v1 report stale error 11429 - @COLDTURNIP @yangchiu
  • [BUG] Test case test_storage_capacity_aware_pod_scheduling fails 13001 - @yangchiu @bachmanity1
  • [BUG] Crash Single Instance Manager While RWO Encrypted Volume Backup Is Restoring fails on v2 volume 12938 - @chriscchien
  • [BUG] Encrypted V2 volume cannot be mounted and stays in unknown robustness 12924 - @derekbit @chriscchien
  • [BUG] Backup to S3 fails at 95% 12713 - @yangchiu @mantissahz
  • [BUG] Node exhaustion caused by backup inspect buildup induced due to NFS latency 12896 - @COLDTURNIP @roger-ryao
  • [BUG] Failed to collect health data for block disk (AIO) when disk path is a /dev/disk/by-id symlink 12910 - @yangchiu @hookak
  • [BUG] “snapshot becomes not ready to use” Warning events emitted during expected auto-cleanup after backup 12850 - @yangchiu @EpochBoy
  • [BUG] V1.11.0 very high memory consumption for instance manager 12573 - @derekbit @roger-ryao
  • [BUG] (chart) image.openshift.oauthProxy.registry is silently ignored - global.imageRegistry: “docker.io” default always wins 12685 - @drewmullen @roger-ryao
  • [BUG] Annotations not being applied to ingress 4014 - @DodoLeDev @roger-ryao
  • [BUG] Regression test case test_replica_scheduler_rebuild_restore_is_too_big creates a volume with an incorrect data engine type. 12776 - @derekbit @chriscchien
  • [BUG] Backing image data source pod fails when HTTP proxy is enabled 12779 - @c3y1huang @chriscchien
  • [BUG] Block disks become Unschedulable on SLES 16.0 during v2 regression 12404 - @davidcheng0922 @chriscchien
  • [BUG] v2 DR volume could become faulted and fail to restore from backups if volume attached node is rebooted during restoration 12412 - @c3y1huang @chriscchien
  • [BUG] orphan controller does not cleanup the instance on the corresponding instance manager on a multiple IM node 12786 - @COLDTURNIP @roger-ryao
  • [BUG] V2 Volume Clone Status is Changed Over Time 12746 - @davidcheng0922 @roger-ryao
  • [BUG] spdk_tgt encountered an assertion failure in longhorn-spdk-helper during a CI test run 10599 - @derekbit @roger-ryao
  • [BUG] Enable to set defaultSettings.nodeDiskHealthMonitoring 12729 - @Turgon37 @chriscchien
  • [BUG] stale name variable in nsmounter get_pid 12703 - @ionfury @chriscchien
  • [BUG] After upgrading to 1.11.0, new persistent volumes have nodeAffinity 12656 - @hookak @chriscchien
  • [BUG] Incorrect storage double-counting causes scheduling failure when multiple replicas exist on the same node 12653 - @yangchiu @davidcheng0922
  • [BUG] Longhorn validating webhook blocks k3s server node joins - flannel CNI fails to initialize 12578 - @yangchiu @mantissahz
  • [BUG] [v2] Can’t use partition as block device 12599 - @chriscchien @bachmanity1
  • [BUG] v2 encrypted volume stuck at attach-detach loop after delete correspond instance manager pod 12648 - @mantissahz
  • [BUG] Reboot node while volume expansion, will cause pod stuck at creating state 5171 - @roger-ryao
  • [BUG] Longhorn v1.10 Volume API is not compatible with the v1.8.1 manifest 12613 - @mantissahz @roger-ryao
  • [BUG] Volume.Spec.CloneMode is empty after upgrading to v1.10.x and following version 12614 - @mantissahz
  • [BUG] System backup may fail to be created or deleted 12472 - @yangchiu @mantissahz
  • [BUG] Unexpected replica rebuilding is triggered again after a previous replica rebuilding has completed 12510 - @chriscchien

Performance

  • [TASK] Evaluate the CPU and memory consumption of the Longhorn engine and replica instances 12936 - @roger-ryao

Resilience

  • [DOC] Enhance Longhorn docs about Instance Manager 13197 - @Felipalds
  • [IMPROVEMENT] Make liveness probe parameters of engine-image DaemonSet configurable 12846 - @roger-ryao @aviralgarg05

Stability

  • [BUG] longhorn-manager panic in BackupController.setInprogressDeletionMap during backup deletion 13245 - @EpochBoy @chriscchien @roger-ryao
  • [BUG] v1.10.2: dataLocality=best-effort with insufficient local storage leaks N Replica CRs per recurring-job firing (#12488 follow-up) 13152 - @derekbit @roger-ryao

Misc

  • [TASK] Add distro information to upgrade responder requests 12778 - @yangchiu @davidcheng0922
  • [DOC] Expected inconsistent behavior of between v1 and v2 volume 7624 - @yangchiu @derekbit @sushant-suse
  • [EPIC] Integrate “V2 Data Engine” content into standard documentation structure 13054 - @mantissahz @chriscchien @sushant-suse
  • [BUG] UI does not update v2 backup state from Error to Completed 12842 - @derekbit @mantissahz @chriscchien
  • [BUG] v1.11.1 upgrade to v1.12.x-head fail due to v2 volume snapshot unknown field status.requestedTime 13113 - @chriscchien
  • [DOC] Create a KB post for Longhorn node eviction workflows during node rolling replacement 12870 - @COLDTURNIP @yangchiu
  • [DOC] Document for gracefully node removing 12961 - @roger-ryao @sushant-suse
  • [BUG] v2 Volume fails to rebuild on existing replica when a scheduling-failed replica exists 12664 - @shuo-wu @chriscchien
  • [WEBSITE][DOC] Update website footer to new LF Projects Series LLC trademark disclaimer 12982 - @sushant-suse
  • [DOC] Helm chart: v4 compatibility? 12894 - @COLDTURNIP
  • [TASK] Ensure all remaining GitHub Actions are pinned to specific commit SHAs 12920 - @carterli0407-cell
  • [DOC] Broken links in the nginx ingress deprecation notice 12904 - @Copilot
  • [IMPROVEMENT] Add validation to prevent duplicate disk paths when patching node via kubectl 12480 - @yangchiu @carterli0407-cell
  • [REFACTOR] Remove redundant type casts 12316 - @futhgar @roger-ryao
  • [DOC] Add a KB for the insufficient space issue 8785 - @mantissahz @roger-ryao @sushant-suse
  • [BUG] invalid character ‘<’ looking for beginning of value 12569 - @COLDTURNIP @roger-ryao
  • [DOC] Add documentation to restore a backup using CRs instead of only documenting the UI 12810 - @chriscchien @sushant-suse
  • [DOC] Update doc as ingress-nginx will be deprecated 12758 - @yangchiu @sushant-suse
  • [DOC] Improve Configurable CPU Cores description 12740 - @chriscchien @sushant-suse
  • [DOC] KB for iSCSI loop back connection issues 12548 - @COLDTURNIP @roger-ryao
  • [DOC] Fix typos in documentation and enhancement files 12628 - @luojiyin1987
  • [TASK] Add FOSSA action workflow to longhorn/ repos 12506 - @derekbit
  • [DOC] Evaluate HugePage Usage of Longhorn V2 Volumes 12504 - @derekbit

New Contributors

  • @DodoLeDev
  • @Edo78
  • @Flou21
  • @Nemric
  • @Profiidev
  • @SquaredPotato
  • @TheFutonEng
  • @Turgon37
  • @abacef
  • @adarmi
  • @apoorvajagtap
  • @archy-rock3t-cloud
  • @aviralgarg05
  • @carterli0407-cell
  • @chamarakera
  • @drewmullen
  • @elTwingo
  • @farukheaver
  • @flori4n
  • @futhgar
  • @grelland
  • @ionfury
  • @jeven2016
  • @jimmy-wei
  • @johnwc
  • @konstantin-kelemen
  • @kudodenko
  • @lelgenio
  • @luojiyin1987
  • @mschneider82
  • @mzac
  • @peyremorgan
  • @rrishabh6172
  • @thisisobate
  • @tomklapka
  • @wstutt

Contributors

  • @COLDTURNIP
  • @EpochBoy
  • @Felipalds
  • @PhanLe1010
  • @WebberHuang1118
  • @bachmanity1
  • @boomam
  • @brandboat
  • @c3y1huang
  • @chriscchien
  • @davepgreene
  • @davidcheng0922
  • @derekbit
  • @ejweber
  • @hoo29
  • @hookak
  • @houhoucoop
  • @innobead
  • @mantissahz
  • @roger-ryao
  • @shuo-wu
  • @sushant-suse
  • @yangchiu
  • @tserong
  • @rebeccazzzz
  • @forbesguthrie

下载链接