0

0

Linux Longhorn 的分布式块存储与快照备份策略

舞夢輝影

舞夢輝影

发布时间:2026-02-24 19:28:02

|

971人浏览过

|

来源于php中文网

原创

longhorn快照非备份,仅存本地增量;必须执行backup操作才能上传至s3/nfs等远程存储;snapshot与backup是独立对象,backup依赖snapshot但可单独保留;recurringjobs需用标准utc cron且注意时区换算。

linux longhorn 的分布式块存储与快照备份策略

Longhorn 卷的快照不是备份,snapshot create 只存增量差量

很多人在 longhorn-ui 点完 Create Snapshot 就以为数据“已备份”,结果节点宕机后发现快照全丢了。因为 Longhorn 的快照默认只存在本地磁盘(对应 volume 所在节点的 /var/lib/longhorn/replicas/),不跨节点复制,也不上传到任何外部存储。

实操建议:

  • 快照必须配合 backup 操作才真正落盘到 S3/NFS 等远程后端;单独调用 longhorn backup create 或在 UI 点 “Create Backup” 才会触发上传
  • snapshotbackup 是两个独立对象:一个在内存+本地磁盘,一个在远程存储;backup 依赖某次 snapshot 作为源,但删掉 snapshot 不一定删 backup(取决于是否启用 backupStorePollInterval 自动清理)
  • 注意 backupTarget 配置路径末尾必须带 /,比如 s3://longhorn-backup@cn-north-1/,少斜杠会导致静默失败,日志里只报 failed to list backups

设置 recurrentBackup 时,cron 格式不支持秒级,且时区是 UTC

想每 5 分钟自动备份?写成 */5 * * * * 是对的;但写成 *\/5 * * * *0 */5 * * *(想每 5 小时)就完全不会触发——Longhorn 的 cron 解析器只兼容标准 vixie-cron,不支持秒字段,也不识别 0 */5 这种写法(它会当成 0 分、每 5 小时一次,实际是每天 0:00、5:00、10:00…)。

实操建议:

  • 所有 recurrentBackup 的时间都按 UTC 解析,和集群节点本地时区无关;如果集群在东八区,想每天凌晨 2 点备份,得设成 0 2 * * *(UTC 时间 2 点 = 北京时间 10 点),所以应填 0 18 * * *
  • 通过 kubectl edit volumes.longhorn.io <vol-name></vol-name> 直接改 recurringJobs 字段最可靠;UI 上编辑容易丢参数,尤其当同时配 retention 和 labels 时
  • Retention 数值设为 0 不代表“保留全部”,而是“不清理”,长期运行会导致 backup 对象堆积,S3 费用和 list 延迟上升

从 backup 恢复 volume 时,restore 不等于 clone,不能直接替换原 volume

看到 backup 列表里有个可用的 backup-xxx,就想点 “Restore” 回原 volume?不行。Longhorn 的 restore 操作本质是创建一个全新 volume(名字带 -restore- 后缀),并把 backup 数据拉取回来;它不会覆盖、卸载或停用原 volume,也不会自动绑定 PVC。

梯子AI
梯子AI

百度推出的AI智能搜索

下载

实操建议:

  • 恢复前先确认目标 backup 的 stateCompleted,且 messages 为空;FailedDeleting 状态下 restore 会卡住或报 backup is not ready
  • 恢复后的 volume 默认是 detached 状态,需手动 attach;如果原 PVC 还绑着旧 volume,Kubernetes 不会自动切换,得先 kubectl delete pvc 再重建,或用 clone 方式新建 PVC 指向新 volume
  • 跨集群 restore 要求目标集群的 Longhorn 版本 ≥ 源集群版本,否则可能因 backupConfig 字段不兼容而报 cannot restore from backup created by newer version

使用 NFS 作 backup target 时,mountOptions 必须含 nfsvers=4.1,且服务端要开 rpcbind

很多用户用 NAS 挂 NFS 当 backup target,配置完却一直卡在 Connecting to backup target...longhorn-manager 日志反复刷 failed to ping backup target。根本原因常是 NFS 协议协商失败:Longhorn 3.x+ 默认要求 NFSv4.1+,而多数 NAS 默认开的是 v3 或 v4.0。

实操建议:

  • 在 Longhorn Settings 里设 backupTargetnfs://192.168.1.100:/longhorn-backup/,再额外加 backupTargetCredentialSecret(哪怕空 secret,用来触发 mount)
  • 必须在 Settings → General → backup-target-credential-secret 下挂一个 Secret,内容至少含 mountOptions: nfsvers=4.1,hard,intr,rsize=1048576,wsize=1048576;缺 nfsvers=4.1 就连不上
  • NAS 服务端除了共享目录,还要确保 rpcbind 服务运行(NFSv4.1 仍依赖它做初始端口映射),CentOS/RHEL 上执行 systemctl enable --now rpcbind

快照链深度、backup target 权限、跨节点网络 MTU —— 这些地方不出错时没人提,一出就是恢复不了。盯紧 longhorn-backup 这个 namespace 里的 pod 日志,比看 UI 红绿灯管用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

397

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

247

2023.10.07

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

422

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

595

2023.08.10

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

287

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.12.29

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

27

2025.12.22

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1541

2023.06.21

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号