尧图精选

Longhorn v1.6.0 版本深度解读:V2 数据引擎进阶、快照空间管理与跨平台部署

🕒 发布时间:2026/9/26 17:26:08 📁 来源:尧图网络
云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载本指南以 Longhorn v1.6.0 官方发布说明CHANGELOG/CHANGELOG-1.6.0.md为主体结合仓库内的增强设计文档enhancements/与 Helm Chart 配置源码chart/系统解读该版本的核心特性V2 数据引擎的成熟化快照/回滚、备份/恢复、ARM64、平台无关部署Talos/OKD、可配置的快照空间管理、GitOps 友好化、块卷加密、新的节点排空策略以及 Backing Image 备份恢复。读完本文你将掌握 v1.6.0 的升级前提、关键新设置的配置方法与底层实现原理并理解每个核心功能的源码级支撑。版本概览v1.6.0 的核心主题Longhorn v1.6.0 是面向稳定性、性能与韧性的重要版本发布说明将其亮点归纳为六个方向V2 数据引擎新特性快照与回滚、备份与恢复、V1/V2 数据面分离、ARM64 支持平台无关部署正式支持 Talos 与 OKD空间效率引入可配置的快照最大数量与最大总大小限制GitOps 友好与 Flux、Argo CD、Fleet 完成验证数据保护支持块设备卷VolumeMode: Block加密节点维护新增两种节点排空drain策略选项Backing Image 管理支持 Backing Image 的备份与恢复。需要强调的是v1.6.0 中 V2 数据引擎仍属于 preview预览特性但核心功能已显著增强尤其是 V1 与 V2 数据引擎之间的备份/恢复互通为未来两个引擎之间的卷迁移铺平了道路。安装与升级前提v1.6.0 的安装与升级都有明确的 Kubernetes 版本门槛确保集群运行 Kubernetes v1.21 或更高版本再安装 Longhorn v1.6.0。从 v1.5.x 升级到 v1.6.0 前同样要求 Kubernetes v1.21 或更高版本。安装可通过 Rancher、kubectl、Helm 等多种工具安装部署清单见 deploy/longhorn.yamlHelm Chart 见 chart/Chart.yaml对应版本号可在该文件确认。升级Longhorn 只允许从受支持的版本升级官方要求按照受支持的升级路径执行详见发布说明的 Upgrade 一节。废弃与不兼容项涉及功能不兼容、废弃与移除的重要变化请以发布说明的 Deprecation Incompatibilities 与 Post-Release Known Issues 两节为准——这两个章节列举了版本演进中需要用户特别关注的风险点。V2 数据引擎从预览走向可用v1.6.0 对 V2 数据引擎基于 SPDK即 Storage Performance Development Kit投入了大量工作。其底层架构在设计文档 enhancements/20230619-spdk-engine.md 中有完整描述与传统引擎不同V2 引擎的数据流由 spdk_tgt 接管磁盘被抽象为 aio bdev lvstore快照与卷头文件是 lvstore 内的逻辑卷lvol远程副本以 NVMe-oF 子系统形式暴露引擎后端是 SPDK RAID1 bdev前端是 NVMe-oF initiator。v1.6.0 在这一架构之上补齐了下列用户可见能力。卷快照与回滚Issue #6137V2 卷现在支持快照创建与回滚操作这是 V2 引擎可用性的关键一步。结合设计文档可知SPDK 引擎服务通过 gRPC 提供SnapshotCreate/SnapshotDelete接口见 enhancements/20230619-spdk-engine.md并由 Longhorn Manager 侧的统一控制器编排使 v2 卷的快照行为与 v1 卷趋同。卷备份与恢复Issue #6138v1.6.0 实现了V2 卷的备份/恢复并且支持V1 与 V2 数据引擎之间无缝进行卷备份与恢复操作UI 备份恢复也同时支持 v1 与 v2 数据引擎见 Improvements 中的 Issue #6597。这意味着你可以从 V1 卷创建备份再恢复到 V2 卷反之亦然为引擎间迁移提供了数据通道。配套改进还包括支持仅启用 v2 数据引擎时列出备份Issue #7486删除 v2 卷重建快照、删除恢复中的备份、备份损坏等场景下的状态卡死问题修复Issue #7573、#7575、#7583、#7584v2 卷恢复过程中删除实例管理器导致卷卡在 detaching 状态的问题修复Issue #7581。V1/V2 数据面分离独立的实例管理器Issue #6984、#7015v1.6.0 将v1 与 v2 卷的实例管理器instance manager分开部署并允许按需启用/禁用数据引擎即 Selective V2 Data Engine Activation。这一设计可以从 enhancements/20230303-consolidate-instance-managers.md 中找到脉络Longhorn 曾将 engine/replica 实例管理器合并为单一个体aio而 v1.6.0 进一步让 V1/V2 引擎各用各自的实例管理器避免相互干扰。对应地chart/values.yaml 中提供了全局开关defaultSettings: # 允许启用 V1 数据引擎 v1DataEngine: ~ # 允许启用 V2 数据引擎基于 SPDK v2DataEngine: ~ # V2 专属为 SPDK 目标守护进程启用 hugepages dataEngineHugepageEnabled: ~ # V2 专属SPDK 目标守护进程的 hugepage 大小MiB默认 {v2:2048} dataEngineMemorySize: ~这些设置同样可以在 chart/templates/default-setting.yaml 中看到被渲染为 Longhorn Setting CR 的逻辑。UI 侧也会根据已启用的数据引擎校验卷创建Issue #7505。ARM64 支持Issue #6021v2 卷正式支持在 ARM64 平台运行进一步拓展了 V2 引擎的硬件适用面。其他 V2 相关增强在 v2 卷之上叠加线性 dm 设备Issue #7357通过 device-mapper 暴露逻辑卷实际大小Issue #5947并让 UI 显示 v2 卷的实际大小Issue #7524基于 SPDK 的副本重建Replica rebuild over SPDKIssue #5216并修复首次重建失败后卷永远无法重建成功的问题Issue #7723为 spdk_tgt 增加 2GiB hugepageIssue #7606并优雅关闭 spdk_tgtIssue #7263spdk_tgt 死亡时自动重建 v2 实例管理器 PodIssue #7551为 v2 卷新增 guaranteedInstanceManagerCPU 设置Issue #7361修复 v2 卷在spdk_tgt异常时的各种卡死/循环Issue #7579、#7608以及读写带宽提升Issue #5759见下文性能部分。平台无关部署Talos 与 OKDv1.6.0 进一步兑现了在各类环境中可用的承诺TalosIssue #3161Talos 是一个安全、不可变、极简的 Kubernetes 操作系统。此前 Longhorn 组件安装到 Talos 上存在诸多阻碍v1.6.0 做了针对性适配允许在 Talos 上安装全部 Longhorn 组件。OKDOpenShift OriginIssue #1831由社区成员 ArthurVardevanyan 贡献v1.6.0 加入了对 OKD 的支持。Helm Chart 中也相应提供了 OpenShift 相关的 OAuth Proxy 镜像配置见 chart/values.yaml。这些适配使得 Longhorn 在通用 Linux 发行版、容器优化系统如 SLE Micro以及 Talos、OKD 上都能运行。快照空间管理让快照占用变得可预测这是 v1.6.0 最具操作价值的特性之一。在此之前单个卷的默认最大快照数为固定常量250写死在引擎源码中用户既无法控制也无法预估快照空间占用而 v1.6.0 允许用户全局与按卷配置最大快照数量与最大快照总大小详见设计文档 enhancements/20230905-snapshot-space-management.md。核心机制新增全局设置snapshot-max-count类型为整型合法范围2 到 250默认值250。最小值取 2 的原因是在 Longhorn 中所有快照最终可以合并为一个快照至少需要一个可删除的快照来腾出名额因此要创建新快照至少需要 2 个名额。VolumeSpec 新增两个字段设计文档 enhancements/20230905-snapshot-space-management.mdtype VolumeSpec struct { // ... SnapshotMaxCount int json:snapshotMaxCount SnapshotMaxSize int64 json:snapshotMaxSize,string }若SnapshotMaxSize为0表示该卷不设快照大小上限若SnapshotMaxCount为0卷的 mutator 会用全局snapshot-max-count设置的值补齐卷扩容时若snapshot-max-size小于size * 2mutator 会将其更新为size * 2——因为一个卷至少可以存在两个快照快照大小下限为卷大小的两倍。校验规则validatorSnapshotMaxCount必须在2到250之间包含用户快照与系统快照若SnapshotMaxSize非零其最小值必须等于该卷Size * 2。副本侧实现Replica 新增snapshotMaxCount/snapshotMaxSize字段并提供GetSnapshotCountUsage/GetSnapshotSizeUsage统计实际占用跳过 volume head、backing disk 与被移除的磁盘ReplicaServer 的 gRPC proto 新增remain_snapshot_size字段引擎控制器通过新增的canDoSnapshot函数在创建快照前校验配额Manager API 新增updateSnapshotMaxCount/updateSnapshotMaxSize两个动作。配置方式全局默认在 Longhorn UI 的 Settings 中修改 Snapshot Maximum Count或在 Helm Chart 的defaultSettings中配置对应项chart/values.yaml 中snapshotDataIntegrity等快照相关设置亦在同一分组。按卷配置创建/编辑卷时直接指定该卷的最大快照数与最大快照大小适合为重要卷预留更多快照空间。设计文档还给出了可执行的集成测试预期例如1G 卷、最大快照数 2、无大小限制时创建第 1、2 个快照成功、第 3 个失败删除一个快照后即可再次创建。这套行为也是用户在 v1.6.0 中可以直接验证的。GitOps 友好Flux、Argo CD 与 Fleetv1.6.0 已与主流 GitOps 方案完成验证FluxIssue #6343Argo CDIssue #6434FleetIssue #6935关键改动是移除/改造 Helm 预升级 hook 以支持 Argo CDIssue #6415预升级检查 Job 在 GitOps 场景下容易造成部署漂移或阻塞因此改为可禁用。对应地chart/values.yaml 提供了显式开关preUpgradeChecker: # 使用 Argo CD 或其他 GitOps 方案安装 Longhorn 时建议关闭 jobEnabled: true # 升级版本检查关闭该项会同时禁用 jobEnabled upgradeVersionCheck: true此外还修复了 Rancher 无法导入 longhorn 1.5 chart 的 YAML 解析问题Issue #7496等 Chart 层面的兼容性问题。数据保护块卷加密v1.6.0 正式支持VolumeMode: Block 的卷加密Issue #4883对 Harvester、KubeVirt 等虚拟化场景尤其有用。加密基于 device-mappercrypt实现仓库中提供了完整示例加密全局 Secret 与 StorageClass 见 examples/crypto/secret-crypto-global.yaml 与 examples/crypto/storageclass-crypto-global.yaml按卷独立加密的示例见 examples/crypto/storageclass-crypto-per-volume.yaml块设备卷 加密组合示例见 examples/block/crypto/。同时 v1.6.0 修复了 Amazon Linux 2、mTLS 场景下的加密卷挂载失败问题Issue #5944、#7040并清理了 RWX 可迁移加密卷的 crypt device mapper 残留Issue #7678。节点维护新的节点排空策略v1.6.0 为节点维护引入两个新的node drain policy选项Block For Eviction在节点被 cordon 之前自动驱逐evict并迁移该节点上的健康副本Block For Eviction If Contains Last Replica仅当节点包含某卷的最后一个健康副本时才阻止排空允许在其他情况下自动迁移副本。这两项由 Issue #2238 落地核心价值是在排空节点时自动驱逐并搬迁健康副本降低卷变为 degraded 的风险。官方建议仅在计划维护期间启用以最小化数据移动的影响。对应设置在 Helm Chart 中可以直接配置defaultSettings: # 定义当包含卷最后一个健康副本的节点被排空时Longhorn 采取的动作 nodeDrainPolicy: ~ # 节点被 cordon 时是否自动分离手动挂载的卷 detachManuallyAttachedVolumesWhenCordoned: ~见 chart/values.yaml并由 chart/templates/default-setting.yaml 渲染为node-drain-policy设置。相关改进还包括允许kubectl drain停止手动挂载的卷Issue #6978、节点排空时自动驱逐副本等。Backing Image 管理备份与恢复v1.6.0 允许创建并恢复 Backing Image 的备份Issue #4165可显著简化跨集群的 Backing Image 管理同样利好 Harvester/KubeVirt 虚拟化场景。设计文档 enhancements/20230807-backingimage-backup-support.md 说明了实现要点带 Backing Image 的卷备份时Backing Image自动随卷备份恢复时也自动恢复无需在目标集群手工重建 Backing Image所有 Backing Image 共享备份存储中的同一块池相同数据块复用提速且省空间备份按块默认 2MB最后一块可能不足 2MB上传恢复时按块映射写回正确偏移qcow2 格式由于无法探测空洞全量备份所有块新增backupbackingimage.longhorn.ioCRD 承载备份状态Pending/InProgress/Completed 等状态机修复了导出自 Backing Image 卷的数据不一致Issue #6899、下载服务器错误Issue #7288、存储网络下 502 错误Issue #7236等问题。稳定性、性能与其他值得关注的能力性能V2 卷读带宽提升允许从所有下游副本同时读取显著提升 v2 卷读带宽Issue #5759补充了 1.5 性能基准数据到官方性能基准 WIKIIssue #6203。关键改进Improvements 精选内存与资源优化资源缓存解决 longhorn-manager 高内存占用Issue #6954对应此前 v1.5 的 20GB RAM 问题 #6866默认priorityClass防止意外驱逐Issue #6528对应设置见 chart/values.yamlpriorityClass: longhorn-critical为系统托管 CSI 组件提供资源限制配置Issue #7325 相关设置项见 chart/values.yamlRWX 卷回退到 NFS v4.1Issue #7741并支持 NFS v4.2 与自定义挂载选项Issue #7638支持自定义 NFShard/soft与timeo/retransIssue #6655修复 share-manager 死锁与 RWX 卸载 I/O 错误Issue #7183、#6829CSI 与组件升级CSI 组件升级到最新补丁版本Issue #7384、#6916csi-snapshotter 升级以缓解快速重试 bugIssue #6506支持在 Helm Chart 中为 StorageClass 设置挂载选项Issue #7351与日志级别Issue #3655监控可观测性磁盘状态 Prometheus 指标Issue #6858卷指标增加 PVC 命名空间与名称Issue #7077、#5297快照指标包含大小与类型系统/用户Issue #5869Helm Chart 支持部署 Prometheus ServiceMonitorIssue #7041数据面与恢复意外只读的 RWO 卷自动重挂载为读写Issue #6386upgradeVersionCheck决定版本升级强制策略Issue #7539环境检查脚本识别 iscsid.socketIssue #5380default-data-path支持块设备Issue #7234。重点 Bug 修复Bug Fixes 精选引擎与实例管理器引擎进程被杀后卷无法重新挂载Issue #7751崩溃后卷卡在 Unknown 状态Issue #6699实例管理器内存泄漏Issue #6481v2 卷在spdk_tgt异常下的 attach/detach 循环Issue #7579加密与安全mTLS 下卷无法挂载Issue #7040加密卷挂载失败Issue #7033、#7045加密在 Amazon Linux 2 上不生效Issue #5944备份/恢复错误备份导致 v2 卷卡死Issue #7575恢复期间删除备份导致卷 faultedIssue #7584备份目标未设置时无法删除 volumesnapshotIssue #4979备份执行遇错仍返回 CompletedIssue #4255调度与副本创建卷时找不到具备默认引擎镜像的节点Issue #7413单节点磁盘亲和性相关修复Issue #3823 特性落地副本调度失败信息增强Issue #6461升级兼容v1.5.x 引擎卷在 v1.6.0-rc1 下工作异常Issue #7642升级后副本不重建Issue #7631、#7555UI批量删除对话框可读性Issue #4080、窗口缩放事件处理Issue #7036等。完整列表以 CHANGELOG/CHANGELOG-1.6.0.md 的 Bug Fixes 一节为准。杂项与工程化CRD 演进将 volume/engine/replica CRD 中的engineImage字段替换为imageIssue #6647、#6685移除不必要的 Kubernetes 版本检查Issue #7601最低支持的 Kubernetes 版本上探Issue #7224基础镜像Longhorn 组件基础镜像更新为 BCI 15.5Issue #6206支持包support-bundle-kit 升级至 v0.0.33Issue #7277并将/var/log/messages纳入 syslog 采集Issue #6544日志统一日志附带 module/method/function/line 等静态信息Issue #5509修复设置同步失败日志刷屏Issue #7654部署清单 deploy/longhorn.yaml 在此版本中保持与 Chart 同步对应 Issue #6428 的修复。社区与贡献v1.6.0 由 27 位贡献者共同完成包括 derekbit、yangchiu、PhanLe1010、mantissahz、ejweber、james-munson、c3y1huang、chriscchien、roger-ryao、shuo-wu、ChanYiLin、smallteeths、votdev 等以及社区贡献者 ArthurVardevanyanOKD 支持、sfacklermTLS 修复、m-ildefons、antoninferrand 等。完整名单见发布说明末尾的 Contributors 一节。升级与运维建议检查版本门槛升级前确认 Kubernetes ≥ v1.21且当前 Longhorn 版本在受支持的升级路径内。关注废弃项升级前阅读 Deprecation Incompatibilities 与 Post-Release Known Issues 两节尤其是 CRD 字段变更engineImage→image与实例管理器行为变化。按需启用新特性V2 数据引擎、快照空间管理等均为新增能力建议先在测试环境验证启用v2DataEngine设置、为重要卷配置snapshotMaxCount/snapshotMaxSize、评估节点维护期间启用新的 drain policy 的影响。GitOps 场景使用 Argo CD 等方案时按需关闭preUpgradeChecker.jobEnabled避免预升级 hook 阻塞持续交付。备份 Backing Image跨集群迁移带 Backing Image 的卷时可直接依赖 v1.6.0 的自动备份/恢复能力无需手工重建镜像。赞分享云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载相关推荐Longhorn跨版本迁移终极指南从v1到v2数据引擎平滑过渡Longhorn跨版本迁移终极指南从v1到v2数据引擎平滑过渡 想要将Longhorn存储系统从v1版本无缝升级到v2数据引擎这份完整迁移指南将带你完成从传云原生存储高可用容器编排Longhorn v1.12.1 版本深度解析V2 数据引擎快速克隆、实验性存储分片与数据面稳定性增强Longhorn v1.12.1 版本深度解析V2 数据引擎快速克隆、实验性存储分片与数据面稳定性增强 Longhorn v1.12.1 是 v1.12 系列云原生存储高可用容器编排PhoneVR架构解析从SteamVR到手机显示的完整流程PhoneVR架构解析从SteamVR到手机显示的完整流程 PhoneVR是一款创新的开源虚拟现实解决方案它允许您将智能手机作为VR头显使用配合Steam创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →