Ceph与Bacula运维实战:数据迁移与备份配置优化指南
#作者:猎人
文章目录
- 1ceph数据迁移&&bacula配置调整
- 1.1ceph数据迁移&&bacula配置调整
- 1.2在备份服务器的ceph-client上mount cephfs文件系统
- 1.2.1迁移数据
- 1.2.2调整bacula-sd配置
1ceph数据迁移&&bacula配置调整
1.1ceph数据迁移&&bacula配置调整
为了规避因单个OSD利用率达90%而导致整个集群错误无法访问,ceph集群现已在原ceph块设备的基础上建立了cephfs文件系统用于存储数据,需要把原备份到块设备上的设备迁移到新建的cephfs上,迁移完毕后把ceph rbd回收,后续所有的备份数据直接写到cephfs。
- rbd分配的指定空间满了之后需要新创建,cephpfs的空间可以横向扩容,也可以避免单个OSD引起集群故障
1.2在备份服务器的ceph-client上mount cephfs文件系统
- T机房(1xx.xxx.xxx.x3):ceph-fuse -m 1x.xxx.xx.x9:6789 -r /tt_bacula /cephfs/
- Y机房(1x.xxx.xx.x1):ceph-fuse -m 1x.xxx.xx.51:6789 /cephfs/
1.2.1迁移数据
- T:/data1/backup_disk0*/下的数全部数据迁移到/cephfs/tt_bacula/backup_disk0*/
- Y:/data1/backup_disk0*/下的数全部数据迁移到/cephfs/yz_bacula/backup_disk0*/
特别注意:在做数据恢复的时候需要把数据还原到原/data1/backup_disk0*/下才能恢复数据
1.2.2调整bacula-sd配置
1.2.2.1T机房:
bacula-sd.conf中添加7个Device FileChgr8/9/10/11/12/13/14分别指向/cephfs/tt_bacula/下的7个目录
bacula-sd.conf新加配置如下:
Autochanger {Name = FileChgr8Device = FileChgr8-Dev1, FileChgr8-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr8-Dev1Media Type = File8Archive Device = /cephfs/tt_bacula/backup_disk03/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr8-Dev2Media Type = File8Archive Device = /cephfs/tt_bacula/backup_disk03/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr9Device = FileChgr9-Dev1, FileChgr9-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr9-Dev1Media Type = File9Archive Device = /cephfs/tt_bacula/backup_disk01/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr9-Dev2Media Type = File9Archive Device = /cephfs/tt_bacula/backup_disk01/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr10Device = FileChgr10-Dev1, FileChgr10-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr10-Dev1Media Type = File10Archive Device = /cephfs/tt_bacula/backup_disk02/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr10-Dev2Media Type = File10Archive Device = /cephfs/tt_bacula/backup_disk02/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr11Device = FileChgr11-Dev1, FileChgr11-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr11-Dev1Media Type = File11Archive Device = /cephfs/tt_bacula/backup_disk04/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr11-Dev2Media Type = File11Archive Device = /cephfs/tt_bacula/backup_disk04/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr12Device = FileChgr12-Dev1, FileChgr12-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr12-Dev1Media Type = File12Archive Device = /cephfs/tt_bacula/backup_disk05/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr12-Dev2Media Type = File12Archive Device = /cephfs/tt_bacula/backup_disk05/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr13Device = FileChgr13-Dev1, FileChgr13-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr13-Dev1Media Type = File13Archive Device = /cephfs/tt_bacula/backup_disk06/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr13-Dev2Media Type = File13Archive Device = /cephfs/tt_bacula/backup_disk06/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}Autochanger {Name = FileChgr14Device = FileChgr14-Dev1, FileChgr14-Dev2Changer Command = ""Changer Device = /dev/null
}
Device {Name = FileChgr14-Dev1Media Type = File14Archive Device = /cephfs/tt_bacula/backup_disk07/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
Device {Name = FileChgr14-Dev2Media Type = File14Archive Device = /cephfs/tt_bacula/backup_disk07/LabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 10
}
1.2.2.2Y机房:
bacula-sd.conf中添加1个Device FileChgr3分别指向/cephfs/yz_bacula/目录
bacula-sd.conf新加配置如下:
Autochanger {Name = FileChgr3Device = FileChgr3-Dev1, FileChgr3-Dev2Changer Command = ""Changer Device = /dev/null
}Device {Name = FileChgr3-Dev1Media Type = File3Archive Device = /cephfs/yz_baculaLabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 5
}Device {Name = FileChgr3-Dev2Media Type = File3Archive Device = /cephfs/yz_baculaLabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;Maximum Concurrent Jobs = 5
}
1.2.2.3调整bacula-dir配置
- 把前面新添加的7个SD加到bacula-dir.conf中
- T机房:把原来Job中的 Storage 都换成对应新建的Storage,例如原Storage = tiantan-ceph-sd7(/data1/backup_disk07/)替换成现在Storage = tiantan-ceph-sd14(/cephfs/tt_bacula/backup_disk07/)
- Y机房:把原来Job中的 Storage 都换成对应新建的Storage = yizhuang-ceph-sd3(亦庄把yizhuang-ceph-sd1和yizhuang-ceph-sd2在此做一个合并,合并到yizhuang-ceph-sd3)
bacula-dir.conf新加配置如下:
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd8SDPort = 9103Address = xxxxxxxxDevice = FileChgr8Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File8
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd9SDPort = 9103Address = xxxxxxxxDevice = FileChgr9Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File9
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd10SDPort = 9103Address = xxxxxxxxDevice = FileChgr10Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File10
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd11SDPort = 9103Address = xxxxxxxxDevice = FileChgr11Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File11
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd12SDPort = 9103Address = xxxxxxxxDevice = FileChgr12Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File12
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd13SDPort = 9103Address = xxxxxxxxDevice = FileChgr13Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File13
}
Storage {Maximum Concurrent Jobs = 10Name = tiantan-ceph-sd14SDPort = 9103Address = xxxxxxxxDevice = FileChgr14Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File14
}
Storage {Maximum Concurrent Jobs = 10Name = yizhuang-ceph-sd3SDPort = 9103Address = xxxDevice = FileChgr3Password = "TFDkggO6cIG/PL6P4mRYHjlBvAjckn2eOd7f5l5Zn32o"Media Type = File3
}
相关文章:
Ceph与Bacula运维实战:数据迁移与备份配置优化指南
#作者:猎人 文章目录 1ceph数据迁移&&bacula配置调整1.1ceph数据迁移&&bacula配置调整1.2在备份服务器的ceph-client上mount cephfs文件系统1.2.1迁移数据1.2.2调整bacula-sd配置 1ceph数据迁移&&bacula配置调整 1.1ceph数据迁移&&am…...
Spring Boot分布式项目重试实战:九种失效场景与正确打开方式
在分布式系统架构中,网络抖动、服务瞬时过载、数据库死锁等临时性故障时有发生。本文将通过真实项目案例,深入讲解Spring Boot项目中如何正确实施重试机制,避免因简单粗暴的重试引发雪崩效应。 以下是使用Mermaid语法绘制的重试架构图和决策…...
Android OTA升级中SettingsProvider数据库升级的深度解析与完美解决方案
一、问题场景:OTA升级引发的系统属性"失效"之谜 在某Android 12.0系统定制项目中,我们遭遇了一个棘手问题:当通过OTA升级新增/修改SettingsProvider系统属性后,必须恢复出厂设置才能生效。这不仅导致用户数据丢失风险&…...
[Html]overflow: auto 失效原因,flex 1却未设置min-height overflow的几个属性以及应用场景
一、overflow: auto 失效原因分析 1. 未设置固定高度或宽度 • 当容器未定义具体尺寸时,浏览器无法判断内容是否溢出,导致滚动条不生效。需为容器添加 height 或 width 属性(如 height: 300px)。 • 示例: css .cont…...
SpringBoot整合LogStash,LogStash采集服务器日志
LogStash 1. 下载 版本支持兼容表https://www.elastic.co/cn/support/matrix 版本: 7.16.x 的最后一个版本 https://www.elastic.co/downloads/past-releases/logstash-7-16-3 需要提前安装好jdk1.8和ES, 此处不在演示 2. 安装 tar -xvf logstash-7.16.3-linux-x86_64.tar.gz…...
LLM - 推理大语言模型 DeepSeek-R1 论文简读
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146840732 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 DeepSeek-R1 通过强化学习,显著提升大语言模型推理能力,使用特殊的训…...
目前市场上,好用的校招系统是哪个?
在数字化浪潮的推动下,校园招聘已从传统的“海投简历线下宣讲”模式全面转向智能化、数据化。面对每年数百万应届生的激烈竞争,企业如何在短时间内精准筛选人才、优化招聘流程、降低人力成本?答案或许藏在AI驱动的校招管理系统中。而在这场技…...
Oracle logminer详解
Oracle LogMiner 是 Oracle 数据库提供的一个内置工具,用于分析和挖掘数据库的在线重做日志文件(Online Redo Log Files)和归档日志文件(Archive Log Files)。通过 LogMiner,用户可以查看数据库的历史操…...
SharpBrowser:用C#打造超快的个性化开源浏览器!
推荐一个基于.Net 8 和 CefSharp开发的开源浏览器。 01 项目简介 SharpBrowser 是一个用 C# 和 CefSharp 开发的全功能网页浏览器。它声称是最快的开源 C# 网页浏览器,渲染网页的速度比谷歌浏览器还快,因为其使用轻量级的 CEF 渲染器。 经过比较所有可…...
【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】
企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理 1. 引言:一个看似简单的下载功能背后 在开发企业级Web应用时,文件下载功能看似简单,却常常隐藏着诸多技术挑战。近期,我们在一个xx申报系统项目中&#…...
【新模型速递】PAI一键云上零门槛部署DeepSeek-V3-0324、Qwen2.5-VL-32B
DeepSeek近期推出了“DeepSeek-V3-0324”版本,据测试在数学推理和前端开发方面的表现已优于 Claude 3.5 和 Claude 3.7 Sonnet。 阿里也推出了多模态大模型Qwen2.5-VL的新版本--“Qwen2.5-VL-32B-Instruct”,32B参数量实现72B级性能,通杀图文…...
[原创](Modern C++)现代C++的关键性概念: 如何利用多维数组的指针安全地遍历所有元素
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...
flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)
如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数),你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…...
【Elasticsearch基础】基本核心概念介绍
Elasticsearch作为当前最流行的分布式搜索和分析引擎,其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念,帮助开发者构建坚实的技术基础,并为高效使用ES提供理论支撑。 1 索引(Index&…...
Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!
【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万! ① 百宝箱式服务模块:AI能直接操作浏览器、读文件、连数据库,比如让AI助手自动整理Excel表格,三分钟搞定全天报表; ② 跨领域实战利器:…...
SpringMVC 拦截器(Interceptor)
一.拦截器 假设有这么一个场景,一个系统需要用户登录才能进入,在检验完用户的信息后对页面进行了跳转。但是如果我们直接输入跳转的url,可以绕过用户信息校验(用户登录),直接进入系统。 因此我们引入了使…...
【NLP】16. NLP推理方法重点回顾 -- 52道多选题
Which of the following problems are commonly solved using sequence tagging? A) Named Entity Recognition (NER) B) Part-of-Speech (POS) Tagging C) Word Embedding Training D) Syntactic Dependency Parsing 序列标注是一种 NLP 任务,常用于 命名实体…...
Redisson分布式锁深度解析:原理与实现机制
Redisson作为Redis Java客户端中的分布式解决方案佼佼者,其分布式锁实现被广泛应用于生产环境。以下从底层设计到源码实现进行全面剖析。 一、核心架构设计 1. 整体架构图 graph LRA[客户端] --> B[RLock接口]B --> C[RedissonLock]C --> D[Redis命令执…...
Linux 系统调用实现机制详解
Linux 系统调用实现机制详解 —— fork()、execve()、waitpid() 内核层面的秘密 在 Linux 内核中,fork()、execve() 和 waitpid() 是构建多任务操作系统的三大基石,它们涉及进程控制、内存管理、文件系统等多个子系统。本文将带你一探它们在 内核层面的…...
责任链模式_行为型_GOF23
责任链模式 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,核心思想是将多个处理请求的对象连成一条链,请求沿链传递直到被处理。它像现实中的“多级审批流程”——请假或报销时,申请会逐级提交给…...
03-SpringBoot3入门-配置文件(自定义配置及读取)
1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1)User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…...
学习记录-软件测试基础
一、软件测试分类 1.按阶段:单元测试(一般开发自测)、集成测试、系统测试、验收测试 2.按代码可见度测试:黑盒测试、灰盒测试、白盒测试 3.其他:冒烟测试(冒烟测试主要是在开发提测后进行,主要是测试主流…...
【蓝桥杯每日一题】3.28
🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x "今天熬的夜,会变成明天奖状的闪光点!" 目录 一、唯一的雪花 题目链接 题目描述 解题思路 解题代码 二、逛画展 题目链接 题目描述 解题思路 解题代…...
优秀的 React 入门开源项目推荐
以下是一些优秀的 React 入门开源项目推荐,涵盖不同应用场景和功能模块,适合学习和实践: 1. Jira Clone 仓库地址:GitHub - oldboyxx/jira_clone 亮点: 基于 React Hooks 实现,模仿 Jira 的任务管理功能。…...
万字长文详解Text-to-SQL
什么是Text-to-SQL 在各个企业数据量暴涨的现在,Text-to-SQL越来越重要了,所以今天就来聊聊Text-to-SQL。 Text-to-SQL是一种将自然语言查询转换为数据库查询的技术。它可以让用户通过自然语言来查询数据库,而不需要编写复杂的SQL语句。 T…...
【Linux】动静态库的制作与使用
一.对软硬链接的补充 1、无法对目录进行硬链接 为什么呢? 首先,我们在访问文件时,每一个文件都会有自己的dentry结构,这些结构会在内存中维护一棵路径树,来快速进行路径查找。但是如果某个节点直接使用硬链接到了根节…...
ubuntu22.04 如何安装 ch341 驱动
前言 本篇是介绍ubuntu22.04如何安装 ch341 驱动,并对其中遇到的问题进行整理。 一、流程 1.1 查看CH340驱动 首先是查看ubuntu22.04系统自带的驱动,用以下命令即可 ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial 然后会跳出以下界面&…...
个人博客网站从搭建到上线教程
步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...
android 一步完成 aab 安装到手机
家人们谁懂!在 Android 系统安装 aab 应用超麻烦。满心期待快速体验,却发现 aab 无法直装,得先转为 apks 格式,这过程复杂易错。好不容易转好,还得安装 apks,一番折腾,时间与耐心全耗尽。别愁&a…...
c#使用forms实现屏幕截图
说明: c#使用forms实现屏幕截图 step1: 点击按钮,拖拽,截图,保存本地 C:\Users\wangrusheng\RiderProjects\WinFormsApp1\WinFormsApp1\Form1.cs using System; using System.Drawing; using System.Drawing.Imaging; using Syst…...
