4.7. 迁移池


有时,需要将所有对象从一个池迁移到另一个池。这是在需要更改无法修改特定池中的参数的情况下完成的。例如,需要减少池的 PG 数量。

重要

当工作负载 只使用 Ceph 块设备镜像时,请按照在 Red Hat Ceph Storage Block Device Guide 中移动和迁移池的步骤进行操作:

Ceph 块设备描述的迁移方法比此处记录的迁移方法更高。使用 cppool 不保留所有快照和快照相关的元数据,从而导致数据异常副本。例如,复制 RBD 池不会完全复制镜像。在这种情况下,snaps 不存在,且无法正常工作。cppool 也不会保留某些 librados 用户可能依赖的 user_version 字段。

如果迁移池是必要的,并且您的用户工作负载包含 Ceph 块设备以外的镜像,请继续按照这里介绍的步骤之一。

先决条件

  • 如果使用 rados cppool 命令:

    • 需要对池进行只读访问。
    • 只有当您没有 RBD 镜像及其 snaps 以及 librados 消耗的 user_version 时,才使用此命令。
  • 如果使用本地驱动器 RADOS 命令,请验证是否有足够的集群空间可用。随着池复制因子,存在两个、三个或更多的数据副本。

流程

方法一 - 推荐的直接方法

使用 rados cppool 命令复制所有对象。

重要

复制过程中需要对池的只读访问权限。

语法

ceph osd pool create NEW_POOL PG_NUM [ <other new pool parameters> ]
rados cppool SOURCE_POOL NEW_POOL
ceph osd pool rename SOURCE_POOL NEW_SOURCE_POOL_NAME
ceph osd pool rename NEW_POOL SOURCE_POOL

示例

[ceph: root@host01 /]# ceph osd pool create pool1 250
[ceph: root@host01 /]# rados cppool pool2 pool1
[ceph: root@host01 /]# ceph osd pool rename pool2 pool3
[ceph: root@host01 /]# ceph osd pool rename pool1 pool2

方法 2 - 使用本地驱动器

  1. 使用 rados exportrados 导入 命令和一个临时本地目录来保存所有导出的数据。

    语法

    ceph osd pool create NEW_POOL PG_NUM [ <other new pool parameters> ]
    rados export --create SOURCE_POOL FILE_PATH
    rados import FILE_PATH NEW_POOL

    示例

    [ceph: root@host01 /]# ceph osd pool create pool1 250
    [ceph: root@host01 /]# rados export --create pool2 <path of export file>
    [ceph: root@host01 /]# rados import <path of export file> pool1

  2. 必需。停止到源池的所有 I/O。
  3. 必需。重新同步所有修改的对象。

    语法

    rados export --workers 5 SOURCE_POOL FILE_PATH
    rados import --workers 5 FILE_PATH NEW_POOL

    示例

    [ceph: root@host01 /]# rados export --workers 5 pool2 <path of export file>
    [ceph: root@host01 /]# rados import --workers 5 <path of export file> pool1

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.