附录 G. 手动从 Red Hat Ceph Storage 2 升级到 3


您可以滚动方式将 Ceph 存储集群从版本 2 升级到 3,并在集群运行时升级到 3。按顺序升级集群中的每个节点,仅在完成上一个节点后继续下一个节点。

红帽建议按照以下顺序升级 Ceph 组件:

  • 监控节点
  • OSD 节点
  • Ceph 对象网关节点
  • 所有其他 Ceph 客户端节点

Red Hat Ceph Storage 3 引入了一个新的守护进程 Ceph 管理器(ceph-mgr)。在升级 monitor 节点后安装 ceph-mgr

有两种方法可用来将 Red Hat Ceph Storage 2 升级到 3:

  • 使用红帽的内容交付网络(CDN)
  • 使用红帽提供的 ISO 镜像文件

在升级存储集群后,您可以使用传统的可调项,显示 CRUSH map 的运行状况警告。详情请参阅 Red Hat Ceph Storage 3 的存储策略指南中的 CRUSH Tunables 部分。

示例

$ ceph -s
    cluster 848135d7-cdb9-4084-8df2-fb5e41ae60bd
     health HEALTH_WARN
            crush map has legacy tunables (require bobtail, min is firefly)
     monmap e1: 1 mons at {ceph1=192.168.0.121:6789/0}
            election epoch 2, quorum 0 ceph1
     osdmap e83: 2 osds: 2 up, 2 in
      pgmap v1864: 64 pgs, 1 pools, 38192 kB data, 17 objects
            10376 MB used, 10083 MB / 20460 MB avail
                  64 active+clean
Copy to Clipboard Toggle word wrap

重要

红帽建议所有 Ceph 客户端运行与 Ceph 存储集群相同的版本。

先决条件

  • 如果要升级的集群包含使用 exclusive-lock 功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有将客户端列入黑名单的权限:

    ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
    Copy to Clipboard Toggle word wrap

升级监控节点

本节介绍将 Ceph 监控节点升级到更新版本的步骤。monitor 的数量必须是奇数。当您升级一个 monitor 时,存储群集仍会拥有仲裁。

流程

在存储集群中的每个 monitor 节点上执行以下步骤。一次仅升级一个 monitor 节点。

  1. 如果使用软件存储库安装 Red Hat Ceph Storage 2,请禁用软件仓库:

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-mon-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
    Copy to Clipboard Toggle word wrap
  2. 启用 Red Hat Ceph Storage 3 monitor 存储库:

    [root@monitor ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
    Copy to Clipboard Toggle word wrap
  3. root 用户身份,停止 monitor 进程:

    语法

    # service ceph stop <daemon_type>.<monitor_host_name>
    Copy to Clipboard Toggle word wrap

    示例

    # service ceph stop mon.node1
    Copy to Clipboard Toggle word wrap

  4. root 用户身份,更新 ceph-mon 软件包:

    # yum update ceph-mon
    Copy to Clipboard Toggle word wrap
  5. root 用户身份,更新所有者和组权限:

    语法

    # chown -R <owner>:<group> <path_to_directory>
    Copy to Clipboard Toggle word wrap

    示例

    # chown -R ceph:ceph /var/lib/ceph/mon
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring
    # chown ceph:ceph /etc/ceph/ceph.conf
    # chown ceph:ceph /etc/ceph/rbdmap
    Copy to Clipboard Toggle word wrap

    注意

    如果 Ceph 监控节点与 OpenStack 控制器节点在一起,则 Glance 和 Cinder 密钥环文件必须分别归 glancecinder 所有。例如:

    # ls -l /etc/ceph/
    ...
    -rw-------.  1 glance glance      64 <date> ceph.client.glance.keyring
    -rw-------.  1 cinder cinder      64 <date> ceph.client.cinder.keyring
    ...
    Copy to Clipboard Toggle word wrap
  6. 如果 SELinux 处于 enforcing 或 permissive 模式,请在下次重启时重新标记 SELinux 上下文。

    # touch /.autorelabel
    Copy to Clipboard Toggle word wrap
    警告

    重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将目录添加到 /etc/selinux/fixfiles_exclude_dirs 文件。

  7. root 用户身份,启用 ceph-mon 进程:

    # systemctl enable ceph-mon.target
    # systemctl enable ceph-mon@<monitor_host_name>
    Copy to Clipboard Toggle word wrap
  8. root 用户身份,重启 monitor 节点:

    # shutdown -r now
    Copy to Clipboard Toggle word wrap
  9. 监控节点启动后,在移动到下一个 monitor 节点前检查 Ceph 存储集群的运行状况:

    # ceph -s
    Copy to Clipboard Toggle word wrap

G.1. 手动安装 Ceph Manager

通常,在部署 Red Hat Ceph Storage 集群时,Ansible 自动化实用程序会安装 Ceph Manager 守护进程 (ceph-mgr)。但是,如果您不使用 Ansible 管理红帽 Ceph 存储,您可以手动安装 Ceph Manager。红帽建议在同一节点上并置 Ceph 管理器和 Ceph 监控守护进程。

先决条件

  • 正常工作的 Red Hat Ceph Storage 集群
  • rootsudo 访问权限
  • rhel-7-server-rhceph-3-mon-els-rpms 存储库已启用
  • 如果使用防火墙,需要在公共网络上打开端口 6800-7300

流程

在要部署 ceph-mgr 的节点上,以 root 用户身份或通过 sudo 实用程序,使用以下命令。

  1. 安装 ceph-mgr 软件包:

    [root@node1 ~]# yum install ceph-mgr
    Copy to Clipboard Toggle word wrap
  2. 创建 /var/lib/ceph/mgr/ceph-hostname/ 目录:

    mkdir /var/lib/ceph/mgr/ceph-hostname
    Copy to Clipboard Toggle word wrap

    使用部署 ceph-mgr 守护进程的节点的主机名替换 hostname,例如:

    [root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
    Copy to Clipboard Toggle word wrap
  3. 在新创建的目录中,为 ceph-mgr 守护进程创建一个身份验证密钥:

    [root@node1 ~]# ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
    Copy to Clipboard Toggle word wrap
  4. /var/lib/ceph/mgr/ 目录的所有者和组更改为 ceph:ceph

    [root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
    Copy to Clipboard Toggle word wrap
  5. 启用 ceph-mgr 目标:

    [root@node1 ~]# systemctl enable ceph-mgr.target
    Copy to Clipboard Toggle word wrap
  6. 启用并启动 ceph-mgr 实例:

    systemctl enable ceph-mgr@hostname
    systemctl start ceph-mgr@hostname
    Copy to Clipboard Toggle word wrap

    使用部署 ceph-mgr 的节点的主机名替换 hostname,例如:

    [root@node1 ~]# systemctl enable ceph-mgr@node1
    [root@node1 ~]# systemctl start ceph-mgr@node1
    Copy to Clipboard Toggle word wrap
  7. 验证 ceph-mgr 守护进程是否已成功启动:

    ceph -s
    Copy to Clipboard Toggle word wrap

    输出将在 services 部分下包括类似如下的行:

        mgr: node1(active)
    Copy to Clipboard Toggle word wrap
  8. 安装更多 ceph-mgr 守护进程以作为备用守护进程(如果当前活跃守护进程失败)处于活跃状态。

升级 OSD 节点

本节介绍将 Ceph OSD 节点升级到更新版本的步骤。

先决条件

在升级 OSD 节点时,一些 PG 可能会降级,因为 OSD 可能会停机或重新启动。要防止 Ceph 启动恢复过程,请在 monitor 节点上设置 nooutnorebalance OSD 标志:

[root@monitor ~]# ceph osd set noout
[root@monitor ~]# ceph osd set norebalance
Copy to Clipboard Toggle word wrap

流程

对存储集群中的每个 OSD 节点上执行下列步骤。一次仅升级一个 OSD 节点。如果为 Red Hat Ceph Storage 2.3 执行基于 ISO 的安装,则跳过此第一步。

  1. root 用户身份,禁用 Red Hat Ceph Storage 2 存储库:

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-osd-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
    Copy to Clipboard Toggle word wrap
  2. 启用 Red Hat Ceph Storage 3 OSD 存储库:

    [root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
    Copy to Clipboard Toggle word wrap
  3. root 用户身份,停止任何正在运行的 OSD 进程:

    语法

    # service ceph stop <daemon_type>.<osd_id>
    Copy to Clipboard Toggle word wrap

    示例

    # service ceph stop osd.0
    Copy to Clipboard Toggle word wrap

  4. root 用户身份,更新 ceph-osd 软件包:

    # yum update ceph-osd
    Copy to Clipboard Toggle word wrap
  5. root 用户身份,更新新创建的目录和文件的所有者和组权限:

    语法

    # chown -R <owner>:<group> <path_to_directory>
    Copy to Clipboard Toggle word wrap

    示例

    # chown -R ceph:ceph /var/lib/ceph/osd
    # chown -R ceph:ceph /var/log/ceph
    # chown -R ceph:ceph /var/run/ceph
    # chown -R ceph:ceph /etc/ceph
    Copy to Clipboard Toggle word wrap

    注意

    在一个带有大量磁盘的 Ceph 存储集群中,可以使用以下 find 命令,通过并行执行 chown 命令来加快修改所有者设置的过程:

    # find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
    Copy to Clipboard Toggle word wrap
  6. 如果 SELinux 被设置为 enforcing 或 permissive 模式,则在文件中设置 SELinux 上下文的重新标记,以便在下次重启:

    # touch /.autorelabel
    Copy to Clipboard Toggle word wrap
    警告

    重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将目录添加到 /etc/selinux/fixfiles_exclude_dirs 文件。

    注意

    在每个放置组 (PG) 具有大量对象的环境中,使用目录枚举速度会降低,从而导致对性能造成负面影响。这是因为添加 xattr 查询来验证 SELinux 上下文。在挂载时设置上下文会删除对上下文的 xattr 查询,这可以提高磁盘的整体性能,特别对于较慢的磁盘。

    将以下行添加到 /etc/ceph/ceph.conf 文件中的 [osd] 部分:

    +

    osd_mount_options_xfs=rw,noatime,inode64,context="system_u:object_r:ceph_var_lib_t:s0"
    Copy to Clipboard Toggle word wrap
  7. root 用户身份,重播内核的设备事件:

    # udevadm trigger
    Copy to Clipboard Toggle word wrap
  8. root 用户身份,启用 ceph-osd 进程:

    # systemctl enable ceph-osd.target
    # systemctl enable ceph-osd@<osd_id>
    Copy to Clipboard Toggle word wrap
  9. root 用户身份,重启 OSD 节点:

    # shutdown -r now
    Copy to Clipboard Toggle word wrap
  10. 移到下一 OSD 节点。

    注意

    如果设置了 nooutnorebalance 标记,存储集群将处于 HEALTH_WARN 状态

    $ ceph health
    HEALTH_WARN noout,norebalance flag(s) set
    Copy to Clipboard Toggle word wrap

升级 Ceph 存储集群后,请取消设置之前设置的 OSD 标志并验证存储集群状态。

在 monitor 节点上,升级所有 OSD 节点后,取消设置 nooutnorebalance 标志:

# ceph osd unset noout
# ceph osd unset norebalance
Copy to Clipboard Toggle word wrap

此外,执行 ceph osd require-osd-release <release> 命令。此命令可确保没有更多具有 Red Hat Ceph Storage 2.3 的 OSD 添加到存储集群中。如果不运行此命令,存储状态将为 HEALTH_WARN

# ceph osd require-osd-release luminous
Copy to Clipboard Toggle word wrap

其它资源

  • 若要通过添加新 OSD 到存储集群来扩展存储容量,请参阅 Red Hat Ceph Storage 3 管理指南中的添加 OSD 部分。

升级 Ceph 对象网关节点

本节介绍将 Ceph 对象网关节点升级到更新版本的步骤。

先决条件

  • 红帽建议将 Ceph 对象网关放在负载均衡器后面,如 HAProxy。如果您使用负载平衡器,请在没有提供请求时从负载均衡器中删除 Ceph 对象网关。
  • 如果您使用自定义名称作为 region 池(在 rgw_region_root_pool 参数中指定的),请将 rgw_zonegroup_root_pool 参数添加到 Ceph 配置文件的 [global] 部分。将 rgw_zonegroup_root_pool 的值设置为与 rgw_region_root_pool 的值相同,例如:

    [global]
    rgw_zonegroup_root_pool = .us.rgw.root
    Copy to Clipboard Toggle word wrap

流程

在存储群集中的每个 Ceph 对象网关节点上执行下列步骤。一次仅升级一个节点。

  1. 如果您使用在线存储库安装 Red Hat Ceph Storage,请禁用 2 存储库。

    # subscription-manager repos --disable=rhel-7-server-rhceph-2.3-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
    Copy to Clipboard Toggle word wrap
  2. 启用 Red Hat Ceph Storage 3 Tools 存储库:

    [root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
    Copy to Clipboard Toggle word wrap
  3. 停止 Ceph 对象网关进程(ceph-radosgw):

    # service ceph-radosgw stop
    Copy to Clipboard Toggle word wrap
  4. 更新 ceph-radosgw 软件包:

    # yum update ceph-radosgw
    Copy to Clipboard Toggle word wrap
  5. 将新创建的 /var/lib/ceph/radosgw//var/log/ceph/ 目录及其内容上的所有者和组权限更改为 ceph

    # chown -R ceph:ceph /var/lib/ceph/radosgw
    # chown -R ceph:ceph /var/log/ceph
    Copy to Clipboard Toggle word wrap
  6. 如果将 SELinux 设置为在 enforcing 或 permissive 模式下运行,请指示它在下次引导时重新标记 SELinux 上下文。

    # touch /.autorelabel
    Copy to Clipboard Toggle word wrap
    重要

    重新标记可能需要很长时间才能完成,因为 SELinux 必须遍历每个文件系统并修复任何错误标记的文件。要排除要重新标记的目录,请在重启前将其添加到 /etc/selinux/fixfiles_exclude_dirs 文件中。

  7. 启用 ceph-radosgw 进程。

    # systemctl enable ceph-radosgw.target
    # systemctl enable ceph-radosgw@rgw.<hostname>
    Copy to Clipboard Toggle word wrap

    <hostname> 替换为 Ceph 对象网关主机的名称,如 gateway-node

    # systemctl enable ceph-radosgw.target
    # systemctl enable ceph-radosgw@rgw.gateway-node
    Copy to Clipboard Toggle word wrap
  8. 重新引导 Ceph 对象网关节点。

    # shutdown -r now
    Copy to Clipboard Toggle word wrap
  9. 如果使用负载平衡器,请将 Ceph 对象网关节点重新添加到负载平衡器。

另请参阅

升级 Ceph 客户端节点

Ceph 客户端是:

  • Ceph 块设备
  • OpenStack Nova 计算节点
  • QEMU/KVM 管理程序
  • 使用 Ceph 客户端侧库的任何自定义应用

红帽建议所有 Ceph 客户端运行与 Ceph 存储集群相同的版本。

先决条件

  • 在升级软件包以避免发生意外错误时停止对 Ceph 客户端节点的所有 I/O 请求

流程

  1. 如果您使用软件存储库安装 Red Hat Ceph Storage 2 客户端,请禁用存储库:

    # subscription-manager repos --disable=rhel-7-server-rhceph-2-tools-rpms --disable=rhel-7-server-rhceph-2-installer-rpms
    Copy to Clipboard Toggle word wrap
    注意

    如果为 Red Hat Ceph Storage 2 客户端执行基于 ISO 的安装,请跳过第一步。

  2. 在客户端节点上,启用 Red Hat Ceph Storage Tools 3 存储库:

    [root@gateway ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
    Copy to Clipboard Toggle word wrap
  3. 在客户端节点上,更新 ceph-common 软件包:

    # yum update ceph-common
    Copy to Clipboard Toggle word wrap

在升级 ceph-common 软件包后,重新启动依赖于 Ceph 客户端侧库的任何应用。

注意

如果您要升级运行 QEMU/KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU/KVM 客户端,请停止并启动 QEMU/KVM 实例,因为在此情况下重新启动实例不起作用。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat