云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载导读本文基于 Longhorn 开源仓库中的增强设计文档enhancements/20230601-forcibly-activate-a-restoring-dr-volume.md展开。它解决的是一个真实痛点当用户尝试激活一个正在恢复中restoring或灾备DRDisaster Recovery卷时如果该卷存在部分副本replica因故失败卷会卡在 attaching挂载中状态用户除了删除卷之外别无选择——尽管只要还有一块健康副本卷完全有机会重新构建回正常状态。本文梳理该功能的动机、前置条件、两种激活路径kubectl 与 Longhorn UI、底层设计流程与官方测试方案并结合仓库中的全局设置、CRD 与 Helm Chart 配置给出可落地的操作指引。1. 背景与动机为什么需要强制激活能力1.1 问题场景DR 卷灾备卷是 Longhorn 基于备份目标backup target创建的卷它持续从远端备份存储同步增量数据平时处于standby待命状态、不对外提供服务。当用户决定正式启用该卷例如主集群故障、切换流量到备集群需要将volume.spec.Standby从true改为false完成激活。问题在于如果卷在同步/恢复过程中已有部分副本失败例如节点宕机、磁盘异常卷可能只剩部分健康副本。此时用户触发激活卷会卡在 attaching 状态既无法继续使用也无法轻易恢复最终只能删除卷重建数据服务被迫中断。1.2 目标设计文档明确了本功能的核心目标Allow users to activate a restoring/DR volume as long as there is a healthy replica and the volume works well.即只要卷存在至少一块健康副本、并且卷本身可以正常工作就允许用户激活正在恢复中的 DR 卷即使该卷处于降级degraded状态。该功能在 Longhorn 1.5.0 版本中正式落地对应功能 issue #1512由 mantissahz 与 weizhe0422 实现。配套修复还包括DR 卷在存在一个或多个失败副本时激活后仍停留在 standby 模式issue #3069确保激活行为在降级场景下也完整生效。2. 提案由全局设置开关控制的强制激活功能的实现方式非常克制默认行为不变只有用户显式开启全局设置allow-volume-creation-with-degraded-availability后强制激活才被允许。Forcibly activate a restoring/DR volume if there is a healthy replica and users enable the global setting allow-volume-creation-with-degraded-availability.这样既解决了降级 DR 卷的可用性问题又不会破坏原有的数据安全语义——用户需要对创建降级可用性卷这一行为主动授权。2.1 相关全局设置allow-volume-creation-with-degraded-availability该设置允许用户在创建卷时不必等所有副本都完成调度即可创建并挂载卷即容忍降级可用性。它的定义可以在 Helm Chart 中找到chart/templates/default-setting.yaml将用户配置值写入 Longhorn 默认设置allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }}chart/values.yaml对应 Helm 参数allowVolumeCreationWithDegradedAvailability注释明确说明其语义——允许在创建卷时不必等待所有副本调度完成即可创建并挂载deploy/longhorn.yaml 与 deploy/longhorn-okd.yaml通过 Longhorn Manager Deployment 的 env 注入该设置的默认值供 longhorn-manager 读取。值得注意的是该设置原本是针对创建卷的降级容忍本功能将其语义延伸到了激活恢复中/DR 卷这一操作上——两者本质上都是允许卷以降级副本数投入运行。2.2 API 变化设计文档明确指出 API 层面没有任何变化None。激活动作依然走既有的 VolumeactivateAPI只是激活时的前置校验逻辑发生了改变不再强制要求卷拥有全部健康副本而是允许在设置开启 至少一块健康副本的条件下放行。3. 用户故事与操作路径3.1 前置条件搭建双集群 DR 环境按设计文档给出的完整流程准备测试/使用环境准备两个 Kubernetes 集群下文称集群 A 与集群 B在两个集群上都安装 Longhorn在两个集群上配置相同的备份目标backup target保证 A 的备份在 B 上可见在集群 A 中确保原始卷 X 已创建过备份或已配置了定期备份recurring backups任务在集群 B 的 Backup备份页面中选中备份卷 X创建灾备卷 Y。此时卷 Y 处于 standby 状态持续从备份目标拉取并同步最新增量数据但不对工作负载提供服务。3.2 激活方式一kubectl用户通过编辑卷 CR 将volume.spec.Standby设置为false即可触发激活kubectl -n longhorn-system edit volume dr-volume-name把 manifest 中的字段改为apiVersion: longhorn.io/v1beta2 kind: Volume metadata: name: dr-volume-name namespace: longhorn-system spec: standby: false # 由 true 改为 false触发激活也可以直接修改创建卷时使用的 YAML 清单后再 apply。需要注意的是若卷存在失败副本且全局设置allow-volume-creation-with-degraded-availability未开启或没有健康副本激活流程仍会按原逻辑处理无法完成激活这正是本功能要改变的行为。3.3 激活方式二Longhorn UI在 Longhorn UI 的Volume或Volume Details页面中用户点击Activate Disaster Recovery Volume激活灾备卷按钮即可完成激活效果与 kubectl 修改standby字段一致。UI 的按钮操作最终也会落到对 Volume CR 的activate调用上。4. 设计实现概览与判断逻辑设计文档给出的实现概览非常简洁共三步1. Check if volume.Spec.Standby is set to false 2. Get the global setting allow-volume-creation-with-degraded-availability 3. Activate the DR volume if allow-volume-creation-with-degraded-availability is set to true and there are one or more ready replicas.对应到激活流程的判定逻辑可形式化为条件含义满足后动作volume.Spec.Standby false用户发起激活意图进入激活校验流程全局设置allow-volume-creation-with-degraded-availability true用户允许降级可用性卷允许降级激活存在 ≥1 个 ready健康/就绪副本卷有可用的数据基础放行激活三者都满足时longhorn-manager 允许该 DR 卷以降级副本数完成激活卷随后进入可用状态剩余副本可以继续重建rebuild将卷恢复为完整副本数。若设置未开启则维持原有严格行为要求副本齐全才允许激活。4.1 从源码结构看激活的实现落点从当前仓库的源码结构可以推断该逻辑实现在 longhorn-manager 的卷控制器volume controller中激活动作经由 Volume CR 的activate操作触发控制器在 reconcile 流程中读取volume.Spec.Standby与全局设置allow-volume-creation-with-degraded-availability并检查副本的 ready 状态通过 replica CR 的spec.HealthyAt/运行状态等字段判断来决定是否放行。由于本仓库以发行版 manifests 与文档为主具体 Go 实现细节以实际安装的 longhorn-manager 版本为准行为语义与上述三步判断一致。4.2 激活后的副本重建激活成功后卷会进入正常运行状态并可以被挂载到节点。由于激活时可能只存在部分健康副本longhorn-manager 会通过副本重建流程把卷补全到期望副本数。重建期间卷以降级degraded状态对外提供读写这不影响数据一致性——降级卷的所有读写都会经过引擎engine代理到健康副本。5. 测试方案如何验证强制激活设计文档附带的官方测试计划可作为功能验证含自动化 e2e 测试的完整步骤Test Forcibly Activating A Restoring/DR Volume 1. Create a DR volume 2. Set the global setting concurrent-replica-rebuild-per-node-limit to be 0 3. Fail some replicas 4. Check if there is at least one healthy replica 5. Call the API activate 6. The volume could be activated 7. Attach the volume to a node and check if data is correct逐条解读测试设计意图创建 DR 卷从备份目标创建 DR 卷使其处于 standby 恢复状态设置concurrent-replica-rebuild-per-node-limit为 0通过将该设置每节点并发副本重建数上限设为 0暂时禁止副本重建从而冻结副本状态、避免失败副本被自动重建掩盖问题这是精确复现降级卷激活场景的关键手段。该设置定义见 chart/values.yamlconcurrentReplicaRebuildPerNodeLimit使部分副本失败模拟真实故障如驱逐副本所在节点/磁盘制造降级场景确认至少存在一块健康副本这是强制激活成功的前提条件调用 activate API等价于 UI 按钮或 kubectl 将standby置为false卷能够成功激活验证在设置开启的前提下降级卷不再卡在 attaching 状态挂载卷并校验数据将激活后的卷挂载到节点比对数据验证强制激活后卷的数据完整性不受影响。该测试覆盖了降级副本 激活 数据正确性三个关键维度与功能目标healthy replica 存在时卷可用一一对应。6. 升级策略与后续演进设计文档明确本功能不涉及升级策略变更Upgrade strategy: None也没有额外的注意事项Note: None即对已部署的 Longhorn 集群无需特殊迁移步骤。不过后续版本演进中社区仍在持续加固 DR 卷激活相关行为从 CHANGELOG 目录可以看到一系列相关修复与增强例如v1.4.x修复激活 DR 卷时与备份目标同步的问题、修复存在失败副本时激活后仍停留 standby的问题v1.5.x修复激活后的 DR 卷未包含最新数据、最新备份被删除后无法激活等问题v1.10/v1.11/v1.12持续修复 v2 数据引擎SPDKDR 卷在节点重启、引擎镜像删除、增量恢复期间重建触发等场景下的卡死与 faulted 问题。这些变更说明DR 卷激活是一条仍在持续打磨的关键链路使用时应关注当前版本对应的 CHANGELOG。7. 实操建议与注意事项默认不开按需开启allow-volume-creation-with-degraded-availability默认不启用。只有当你的灾备切换场景可以接受卷以降级副本数先行可用、副本后续重建时才开启该设置。可通过 Longhorn UI 的 Settings 页面或 Helm 安装时设置defaultSettings.allowVolumeCreationWithDegradedAvailability: true开启参考 chart/values.yaml。健康副本是硬前提强制激活只在至少存在一块 ready 副本时生效若所有副本均失败卷无法被激活仍需走删除重建路径。激活后立即验证数据参考官方测试步骤激活后务必挂载卷并执行数据一致性检查如文件系统 fsck、应用层校验。重建限额可作测试开关concurrent-replica-rebuild-per-node-limit设为 0 可用于临时冻结副本重建复现/调试降级场景排查完毕记得恢复。关注版本差异不同 Longhorn 版本对 DR 卷激活的边界行为如备份同步时机、增量恢复中断处理存在差异生产环境请结合你所使用版本的 CHANGELOG 与 support-versions.txt 确认行为。小结Longhorn 通过全局设置开关 健康副本存在性检查两个条件把降级 DR 卷的强制激活变成一种安全、可控、可回退的能力默认行为严格用户显式授权后才允许降级激活激活后的卷保持数据可用并通过副本重建逐步恢复完整度。对于依赖跨集群备份进行灾备切换的团队这一能力显著提升了故障切换场景下的可用性避免删卷重建这一最后手段成为唯一选项。赞分享云原生存储高可用容器编排【免费下载链接】longhornCloud-Native distributed storage built on and for Kubernetes项目地址https://gitcode.com/gh_mirrors/lo/longhorn点击查看免费下载相关推荐Longhorn 自动离线副本重建Offline Replica RebuildingV2 Data Engine 降级卷的自动恢复机制Longhorn 自动离线副本重建Offline Replica RebuildingV2 Data Engine 降级卷的自动恢复机制 导读 本文围绕云原生存储高可用容器编排Longhorn健康检查终极指南如何全方位监控节点、卷与副本状态Longhorn健康检查终极指南如何全方位监控节点、卷与副本状态 Longhorn作为Kubernetes的云原生分布式存储系统其健康检查机制是确保数据可靠云原生存储高可用容器编排揭秘texture-vs-shape项目为什么ImageNet训练的CNN更偏爱纹理而非形状揭秘texture vs shape项目为什么ImageNet训练的CNN更偏爱纹理而非形状 texture vs shape项目是一个开源研究项目提供了上一篇网盘直链获取实战指南一个脚本打通八大网盘把下载交给专业工具下一篇如何在CTF流量分析中快速找到隐藏flag一次深夜参赛实录创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
CH32L103工业低功耗设计:双域电源与RISC-V唤醒精度实战 1. 为什么CH32L103正在成为工业级低功耗设计的新锚点最近三个月,我在三个不同行业的工业项目里反复遇到同一个问题:客户拿着旧款STM32L0系列MCU的BOM清单来找我,说“电池供电的现场传感器节点,标称续航6个月,实测撑不过… · 2026/9/27 11:01:12
嵌入式开发学习路线:从通信协议到内核源码的实战指南 聊到嵌入式开发,很多人的第一反应是杂、难、门槛高。我做这行十几年,带过团队,也手把手带过不少新人,最大的感受是:嵌入式从来不缺资料,缺的是一张能串起来的地图。今天这篇就当是给同行们的一份福音&#… · 2026/9/27 11:01:00
使用 AWS SDK for PHP 调用 AWS STS 获取临时凭证:AssumeRole 实战指南 示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地… · 2026/9/27 11:01:00
STM32CubeMX从安装到生成工程:避开时钟树与固件包的那些坑 1. 为什么要用STM32CubeMX:它到底解决了什么问题做过几年STM32开发的人应该都有体会:寄存器操作太繁琐,标准外设库虽然比寄存器友好,但每次新建工程都要手动添加启动文件、配置时钟树、管理中断优先级,一个灯点不亮可能… · 2026/9/27 11:53:36
5个免费工具搞定手机网站模板psd,拒绝丑到爆 5个免费工具搞定手机网站模板psd,拒绝丑到爆 别再信什么“一键生成”了,那些套出来的手机网站模板psd,丑得让人想砸电脑。 甲方盯着屏幕直摇头,你说“再改改”,心里在滴血。 用对免费工具,把psd变成真能用的代码,才是正经事。… · 2026/9/27 11:53:30
短视频公司网站建设方案多少钱?安全落地避坑指南 短视频公司网站建设方案多少钱?安全落地避坑指南 自己不会代码想做网站,最怕的不是贵,而是花了几千块做个“裸奔”站,上线三天就被挂马。很多短视频公司老板觉得,做个展示型官网或者接单落地页,找外包搞定就行,至于多少钱,市场上从3000到5万都有… · 2026/9/27 11:53:18
毕业季AI论文工具怎么选?TaoToken统一Key接入8款论文软件实测配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 11:53:12
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01