Ceph 基于快照的备份与远程容灾方法
2026-05-18
Proxmox 是一款功能强大的虚拟化管理平台,可高效管理虚拟机和容器。为实现高性能与高可用性存储,许多用户选择与 Proxmox 无缝集成的 Ceph。Ceph 是一种分布式存储系统,提供对象存储、块存储和文件系统存储,以保障数据安全与可扩展性。它是 Proxmox 环境下的理想存储解决方案。
可选的 Ceph 备份方案
备份 Ceph 数据的方法多种多样,包括快照和复制。快照是一种非常便捷高效的备份方式,可在短时间内快速创建数据镜像,保障数据的完整性与一致性。借助快照功能,我们能够实现在 Ceph 集群中对数据进行实时备份,并在需要时迅速恢复数据。此外,Ceph 还支持数据远程复制,可将数据备份至不同数据中心或云存储服务,从而确保数据的安全性与可靠性。
1. RBD 镜像
这涉及两个独立 Ceph 集群之间的实时数据镜像,但要求 Ceph 安装版本为 Jewel 或更新版本。
2. 基于快照的备份
利用 Ceph RBD 的快照技术,系统通过差异文件定期将数据备份至灾备中心。当主数据中心发生故障时,可从灾备中心恢复最新的备份数据,并重启相应的虚拟机,从而最大限度缩短灾难发生时的数据恢复时间。该备份机制可将虚拟机镜像回滚至某一快照状态,但从该快照时刻到故障发生期间的所有数据更新均会丢失。
基于快照的 Ceph 备份
Ceph 的快照技术最初用于 RBD 或存储池回滚,但管理员也可利用快照实现远程镜像备份与灾难恢复。
Ceph 快照
Ceph 支持两种快照功能:存储池级快照和 RBD 级快照。这两种快照均采用写时复制(Copy On Write)机制。创建快照时,并不会立即执行数据复制操作,而是指示服务器保留所有相关磁盘块,防止其被覆盖。当发生写入或删除操作时,原始磁盘块中存储的数据不会被修改,而仅将变更部分写入其他可用的磁盘块中。
1)RBD
基于当前镜像状态创建快照
# rbd create <image-name> --size 1024 -p <pool-name>
实际上,librbd 仅创建与镜像相关的元数据,并不在 Ceph 中实际分配存储空间。
基于当前镜像状态创建快照
# rbd snap create <pool-name/image-name> --snap <snap-name>
将镜像回滚至创建快照时的状态
# rbd snap rollback <pool-name/image-name> --snap <snap-name>
Ceph 中创建 RBD 快照包含以下步骤:
a) 向 Ceph 监控器发送请求以获取最新的快照序列号(“snap_seq”)。
b) 将 snap_name 和 snap_seq 保存到 RBD 元数据中。
2)泳池
池(Pool)可被视为 Ceph 中用于存储数据的逻辑分区,类似于命名空间。一个 Ceph 集群可以包含多个池,每个池拥有一定数量的归置组(PG)。归置组中的对象被映射到不同的 OSD 上。
不同的存储池可以拥有各自独立的设置,例如副本数量、数据清理频率、快照大小、所有者等。
创建快照
# rados mksnap <snap_name> -p <pool_name># rados lssnap -p <pool_name>
将存储池恢复到创建快照时的状态
请注意,这两种快照级别是互斥的,Ceph集群中只能使用其中一种。因此,如果某个存储池中已创建了RBD对象(即使当前所有镜像实例都已被删除),则无法为该存储池创建快照;反之,如果某个存储池已创建了快照,则无法为该存储池中的RBD镜像创建快照。
RBD 增量快照的导入与导出
此外,Ceph 还支持 RBD 增量快照的导入与导出,详情如下:
导出增量镜像:
a) 从创建镜像到当前的导出与导入变更:
保存自创建以来 <pool-name/image-name> 的增量更改至 <image_diff> 文件
# rbd export-diff <pool-name/image-name> <image_diff>
导入从创建到特定时刻的图像差异
执行此命令后,`image-name` 将反映 `image-diff` 在创建 `image-name` 时的状态。
b) 从创建到特定快照导出图像的变更:
导出从创建到 <snap_name> 创建期间 <pool-name/image-name> 的变更至 <image_diff> 文件
# rbd export-diff <pool-name/image-name>@<snap-name> <image_diff>
c) 从当前状态导出图像到特定快照的更改:
将当前 <pool-name/image-name> 状态与 <snap_name> 创建时的状态之间的更改保存到 <image_diff> 文件中
# rbd export-diff <pool-name/image-name> --from-snap <snap_name> <image_diff>
导入增量镜像:
a) 从创建起导入差异至特定时刻
# rbd import-diff <image_diff> <pool-name/image-name>
基于快照的 Ceph 远程容灾解决方案
假设有两个数据中心:主数据中心(master_dc)和备份数据中心(backup_dc),每个数据中心均部署独立的 Ceph 存储系统。
首次备份:
1. 在 backup_dc 中创建一个 img_bak 作为初始镜像。
# rbd create <img_bak> --size 1024 -p <pool-bak>
2. 在 master_dc 中创建一个镜像快照。
# rbd snap create <pool-mas/image-mas> --snap <snap-mas>
3. 导出镜像与快照之间的增量差异。
# rbd export-diff <pool-mas/image-mas>@<snap-mas> <image-snap-diff>
4. 使用 scp 或其他方法将导出的增量文件“<image-snap-diff>”传输至 backup_dc。
5. 将增量快照文件导入 backup_dc 中的镜像。
# rbd import-diff <image-snap-diff> <pool-bak/image-bak>
后续备份:
假设 master_dc 和 backup_dc 中最新的快照均为 snap-1。
1. 在 master_dc 中创建一个新的镜像快照。
# rbd snap create <pool-mas/image-mas> --snap <snap-2>
2. 导出快照-1 与最新快照-2 之间的增量差异。
# rbd export-diff --from-snap <snap-1> <pool-mas/image-mas@snap-2> <image-snap1-snap2-diff>
3. 将导出的增量文件传输到 backup_dc。
4. 将增量文件导入 backup_dc 中的镜像。
# rbd import-diff <image-snap1-snap2-diff> <pool-bak/image-bak>
上述步骤概述了基于快照技术的备份方案的关键要点。您可以以此为基础编写自己的自动化备份与恢复脚本,从而构建更加完善、智能的两地备份解决方案。
Vinchin备份与恢复——您的虚拟化守护者
在构建现代化IT基础设施时,许多组织选择将Ceph集成到Proxmox等虚拟化平台中。在Proxmox环境中,为确保整个IT基础设施的稳定运行及数据安全,对虚拟机进行备份与恢复至关重要。
Vinchin备份与恢复 是一款功能强大的Proxmox VE 环境保护解决方案,提供高级备份功能,包括自动虚拟机备份、无代理备份、局域网/局域网免传输备份、异地副本、高效数据缩减、云归档、即时恢复、细粒度恢复等,严格遵循3-2-1黄金备份架构,全面保障您的数据安全与完整性。
此外,数据加密和防勒索软件保护可为您提供双重保障,保护 Proxmox VE 虚拟机备份。您还可以轻松将数据从 Proxmox 主机迁移至其他虚拟平台,反之亦然。
只需 4 个步骤,即可备份 Proxmox VE 虚拟机:
1. 选择备份对象。
2. 选择备份目标位置。
3. 配置备份策略。
4. 审核并提交任务。
快来开始使用这一功能强大的系统,享受为期15天的全功能试用期! 此外,您可联系我们并告知您的需求,我们将根据您的IT环境为您提供相应解决方案。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Ceph 备份常见问题解答
1. 问:Ceph 的缺点是什么?
A:Ceph 的缺点在于其部署和管理的复杂性,这对经验较少的用户来说可能颇具挑战性。此外,若未经过恰当调优,Ceph 在某些工作负载下的性能可能下降;同时,它还需要持续的监控与维护,以确保系统平稳运行。
2. 问:Proxmox Ceph 与 ZFS 有何区别?
A:Proxmox Ceph 是一种可扩展的分布式存储系统,适用于大规模、容错能力强的部署环境。ZFS 是一种功能强大的文件系统和卷管理器,以数据完整性、快照和压缩功能著称,最适合单节点部署。
结论
Ceph 备份与恢复是企业数据管理中不可或缺的组成部分,可保障数据的安全性与可靠性,提升业务的稳定性与可用性。在实际应用中,我们需要根据具体需求和实际情况选择合适的备份与恢复策略,充分发挥 Ceph 分布式存储系统的优势。