升级指南


Red Hat Ceph Storage 5

升级 Red Hat Ceph Storage 集群

Red Hat Ceph Storage Documentation Team

摘要

本文档提供了有关升级在 AMD64 和 Intel 64 构架中运行 Red Hat Enterprise Linux 的 Red Hat Ceph Storage 集群的信息。
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息

作为存储管理员,您可以将 Red Hat Ceph Storage 集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5。升级过程包括以下任务:

  • 如果您的存储集群仍在运行 Red Hat Enterprise Linux 7,将存储集群中的主机操作系统版本从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。
  • 如果该节点仍在运行 Red Hat Enterprise Linux 7,请将 Ceph Ansible 管理节点上的主机操作系统版本从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。
  • 使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。
注意

如果您要从 Red Hat Enterprise Linux 7.9 上的 Red Hat Ceph Storage 4.3 升级到在 Red Hat Enterprise Linux 9 上运行的 Red Hat Ceph Storage 5.2 ,请先将主机的操作系统从 Red Hat Enterprise Linux 7.9 升级到 Red Hat Enterprise Linux 8.x,然后升级 Red Hat Ceph Storage,然后再升级到 Red Hat Enterprise Linux 9.x。

重要

如果您的 Red Hat Ceph Storage 4 集群已在 Red Hat Enterprise Linux 8 中运行,请参阅将在 Red Hat Enterprise Linux 8 中运行的 Red Hat Ceph Storage 从 RHCS4 升级到 RHCS 5

重要

leapp 不支持对具有加密分区的加密 OSD 或 OSD 进行升级。如果您的 OSD 已加密,并且您要升级主机操作系统,请在升级操作系统前在 ceph-ansible 中 禁用 dmcrypt。有关使用 leapp 的更多信息,请参阅从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8 以及从 Red Hat Enterprise Linux 8 升级到 Red Hat Enterprise Linux 9

重要

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadmcephadm-ansible 执行后续更新。

重要

当从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 时,不要将 bluestore_fsck_quick_fix_on_mount 参数设置为 true,或者不运行 ceph-bluestore-tool --path PATH_TO_OSD --command quick-fix|repair 命令,因为它可能会导致格式的 OMAP 密钥并导致数据损坏。

警告

在 Ceph Object Gateway 存储集群中(单站点或多站点)从 Red Hat Ceph Storage 5.0 升级到 Red Hat Ceph Storage 5.2 被支持,但在升级您的存储集群前需要设置 ceph config set mgr mgr/cephadm/no_five_one_rgw true --force 选项。

由于一个已知问题,在 Ceph Object Gateway 存储集群中从 Red Hat Ceph Storage 5.1 升级到 Red Hat Ceph Storage 5.2 不被支持。如需更多信息,请参阅 Support Restrictions for upgrades for RADOS Gateway (RGW) on Red Hat Red Hat Ceph Storage 5.2 知识库文章。

注意

如果您计划升级到 Red Hat Ceph Storage 5.0z4,请参阅知识库文章从 Red Hat Ceph Storage 4.2 z4 升级到 5.0z4

重要

对于 Red Hat Ceph Storage,默认将 bluefs_buffered_io 选项设为 True。这个选项使 BlueFS 能够在某些情况下执行缓冲的读取,并允许内核页面缓存作为辅助缓存进行读取,如 RocksDB 块读取。例如,如果 RocksDB 块缓存不足以在 OMAP 迭代期间保存所有块,则可以从页面缓存而不是磁盘中读取它们。当 osd_memory_target 太小而无法存放块缓存中的所有条目时,这可显著提高性能。目前,启用 bluefs_buffered_io 并禁用系统级别交换可防止性能下降。

有关 bluefs_buffered_io 的当前设置的更多信息,请参阅 Red Hat Ceph Storage 管理指南中的查看 bluefs_buffered_io 设置章节。

注意

在将集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 时,您需要在所有客户端节点上升级 ceph-common 软件包。要升级 ceph-common 软件包,请在其他守护进程升级后在所有客户端上运行 yum update ceph-common 命令。

Red Hat Ceph Storage 5 仅支持容器化守护进程。它不支持非容器化存储集群。如果您要将非容器化存储集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,升级过程包括转换为容器化部署。

1.1. 先决条件

  • 正在运行的 Red Hat Ceph Storage 4 集群。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 对存储集群中所有节点的根级别访问权限。
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。
重要

您可以手动将 Red Hat Ceph Storage 集群中的 Ceph 文件系统 (CephFS) 元数据服务器 (MDS) 软件同时升级到新的主版本。底层 XFS 文件系统必须格式化为支持 ftype=1d_type。运行 xfs_info /var 命令以确保 ftype 设置为 1。如果 ftype 的值不是 1,请附加新磁盘或创建卷。在此新设备之上,创建新的 XFS 文件系统并将其挂载到 /var/lib/containers

从 Red Hat Enterprise Linux 8 开始,mkfs.xfs 默认启用 ftype=1

1.2. RHCS 和 podman 版本间的兼容性注意事项

Podman 和 Red Hat Ceph Storage 具有不同的生命周期结束策略,这可能会导致查找兼容版本变得困难。

如果您计划从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8,作为 Ceph 升级过程的一部分,请确保 podman 的版本与 Red Hat Ceph Storage 5 兼容。

红帽建议,使用 Red Hat Ceph Storage 5 相关的 Red Hat Enterprise Linux 所附带的 podman 版本。如需了解更多详细信息,请参阅 Red Hat Ceph Storage: 支持的配置知识库文章。如需更多信息,请参阅 Red Hat Ceph Storage 故障排除指南中的联系红帽支持部分。

重要

Red Hat Ceph Storage 5 与 podman 2.0.0 及更新的版本兼容,但 2.2.1 版本除外。版本 2.2.1 与 Red Hat Ceph Storage 5 不兼容。

下表显示了 Red Hat Ceph Storage 5 和 podman 版本之间的版本兼容性。

Expand
CephPodman    
 

1.9

2.0

2.1

2.2

3.0

5.0 (Pacific)

false

true

true

false

true

1.3. 准备升级

作为存储管理员,您可以将 Ceph 存储集群升级到 Red Hat Ceph Storage 5。但是,在进行升级前,存储集群的一些组件必须运行特定的软件版本。以下列表显示在存储集群中安装的最低软件版本,然后才能升级到 Red Hat Ceph Storage 5。

  • Red Hat Ceph Storage 4.3 或更高版本。
  • Ansible 2.9.
  • 最新版本的 Red Hat Ceph Storage 提供的 ceph-ansible。
  • Red Hat Enterprise Linux 8.4 EUS 或更高版本。
  • FileStore OSD 必须迁移到 BlueStore。有关将 OSD 从 FileStore 转换为 BlueStore 的更多信息,请参阅 BlueStore

对于早于 Red Hat Ceph Storage 4.3 的 Red Hat Ceph Storage 版本,没有直接的升级路径。如果您要从 Red Hat Ceph Storage 3 升级,您必须首先升级到 Red Hat Ceph Storage 4.3 或更高版本,然后再升级到 Red Hat Ceph Storage 5。

重要

您只能升级到最新版本的 Red Hat Ceph Storage 5。例如,如果版本 5.1 可用,则无法从 4 升级到 5.0;您必须直接升级到 5.1。

重要

在 Red Hat Enterprise Linux-8.7 (或更高)上的 Red Hat Ceph Storage-4.3.z1 的新部署,或将 Red Hat Ceph Storage-4.3.z1 升级到 5.X,主机 OS 为 Red Hat Enterprise Linux-8.7 (或更高)在 TASK [ceph-mgr : : 等待所有 mgr 变为 up]。Red Hat Enterprise Linux 8.7 发布的 podman 的行为已根据 SELinux 重新标记而有所变化。因此,根据启动顺序,一些 Ceph 容器将无法启动,因为它们无法访问所需的文件。

作为临时解决方案,请参阅知识库文章 RHCS 4.3 安装失败,同时执行命令 'ceph mgr dump'

要将存储集群升级到 Red Hat Ceph Storage 5,红帽建议您集群运行 Red Hat Ceph Storage 4.3 或更高版本。请参阅知识库文章 Red Hat Ceph Storage 发行版本是什么?本文包含到 Ceph 软件包和 ceph-ansible 最新版本的下载链接。

升级过程使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。如果您的 Red Hat Ceph Storage 4 集群是一个非容器化集群,升级过程包括将集群转换为容器化版本的步骤。Red Hat Ceph Storage 5 不在非容器化集群中运行。

如果您有镜像或多站点配置,一次升级一个集群。在升级另一个集群前,请确保每个升级的集群都正常运行。

重要

leapp 不支持对具有加密分区的加密 OSD 或 OSD 进行升级。如果您的 OSD 已加密,并且您要升级主机操作系统,请在升级操作系统前在 ceph-ansible 中 禁用 dmcrypt。有关使用 leapp 的详情,请参考 从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8

重要

只有在存储集群尚未运行最新版本的 Red Hat Ceph Storage 4 时,才执行此流程中的前三个步骤。Red Hat Ceph Storage 4 的最新版本应该是 4.3 或更高版本。

先决条件

  • 正在运行的 Red Hat Ceph Storage 4 集群。
  • 对存储集群中所有节点的 sudo 级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  1. 在 Ansible 管理节点上启用 Ceph 和 Ansible 存储库:

    示例

    [root@admin ceph-ansible]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  2. 更新 Ansible:

    示例

    [root@admin ceph-ansible]# dnf update ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  3. 如果要升级的存储集群包含使用 exclusive-lock 功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有为客户端创建 denylist 的权限:

    语法

    ceph auth caps client.ID mon 'profile rbd' osd 'profile rbd pool=POOL_NAME_1, profile rbd pool=POOL_NAME_2'
    Copy to Clipboard Toggle word wrap

  4. 如果存储集群最初使用 Cockpit 安装,请在 /usr/share/ceph-ansible 目录中创建一个符号链接到 Cockpit 创建它的清单文件,位于 /usr/share/ansible-runner-service/inventory/hosts

    1. 进入 /usr/share/ceph-ansible 目录:

      # cd /usr/share/ceph-ansible
      Copy to Clipboard Toggle word wrap
    2. 创建符号链接:

      # ln -s /usr/share/ansible-runner-service/inventory/hosts hosts
      Copy to Clipboard Toggle word wrap
  5. 要使用 ceph-ansible 升级集群,请在 etc/ansible/hosts 目录中创建符号链接到 hosts 清单文件:

    # ln -s /etc/ansible/hosts hosts
    Copy to Clipboard Toggle word wrap
  6. 如果存储集群最初使用 Cockpit 安装,请将 Cockpit 生成的 SSH 密钥复制到 Ansible 用户的 ~/.ssh 目录中:

    1. 复制密钥:

      语法

      cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      cp /usr/share/ansible-runner-service/env/ssh_key /home/ANSIBLE_USERNAME/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

      ANSIBLE_USERNAME 替换为 Ansible 的用户名。常见的默认用户名是 admin

      示例

      # cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/admin/.ssh/id_rsa.pub
      # cp /usr/share/ansible-runner-service/env/ssh_key /home/admin/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

    2. 在密钥文件中设置适当的所有者、组群和权限:

      语法

      # chown ANSIBLE_USERNAME:ANSIBLE_USERNAME /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chown ANSIBLE_USERNAME:ANSIBLE_USERNAME /home/ANSIBLE_USERNAME/.ssh/id_rsa
      # chmod 644 /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chmod 600 /home/ANSIBLE_USERNAME/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

      ANSIBLE_USERNAME 替换为 Ansible 的用户名。常见的默认用户名是 admin

      示例

      # chown admin:admin /home/admin/.ssh/id_rsa.pub
      # chown admin:admin /home/admin/.ssh/id_rsa
      # chmod 644 /home/admin/.ssh/id_rsa.pub
      # chmod 600 /home/admin/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

1.4. 在主机操作系统升级前备份文件

注意

仅在升级主机操作系统时执行本节中的步骤。如果您没有升级主机操作系统,请跳过本节。

在执行升级步骤前,您必须备份您为存储集群自定义的文件副本,包括用于配置的密钥环文件和 yml 文件,因为执行任何 playbook 时 ceph.conf 文件会被覆盖。

先决条件

  • 正在运行的 Red Hat Ceph Storage 4 集群。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  1. 生成 /etc/ceph/var/lib/ceph 文件夹的备份副本。
  2. 生成 ceph.client.admin.keyring 文件的备份副本。
  3. 备份每个节点中的 ceph.conf 文件副本。
  4. 在每个节点上制作 /etc/ganesha/ 文件夹的备份副本。
  5. 如果存储集群定义了 RBD 镜像功能,则生成 /etc/ceph 文件夹和 group_vars/rbdmirrors.yml 文件的备份副本。

1.5. 转换为容器化部署

非容器化集群需要这个过程。如果存储集群是一个非容器化集群,这个过程会将集群转换为容器化版本。

Red Hat Ceph Storage 5 仅支持基于容器的部署。在升级到 RHCS 5.x 之前,需要容器化集群。

如果您的 Red Hat Ceph Storage 4 存储集群已经容器化,请跳过本节。

重要

这个过程将停止并重启守护进程。如果 playbook 在此过程中停止执行,请务必在重启前分析集群的状态。

先决条件

  • 正在运行的 Red Hat Ceph Storage 非容器化 4 集群。
  • 对存储集群中所有节点的根级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。

流程

  1. 如果您正在运行多站点设置,请在 all.yml 中设置 rgw_multisite: false
  2. 确保 group_vars/all.yml 具有以下配置参数默认值:

    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    ceph_docker_image: rhceph/rhceph-4-rhel8
    containerized_deployment: true
    Copy to Clipboard Toggle word wrap
    注意

    如果您使用本地 registry 和自定义镜像名称,这些值会有所不同。

  3. 可选:对于使用裸机存储集群中使用命令行界面配置的双向 RBD 镜像功能,集群不会迁移 RBD 镜像。对于这样的配置,请在将非容器化存储集群迁移到容器化部署前按照以下步骤操作:

    1. 在 Ceph 客户端节点上创建一个用户:

      语法

      ceph auth get client.PRIMARY_CLUSTER_NAME -o /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring
      Copy to Clipboard Toggle word wrap

      示例

      [root@rbd-client-site-a ~]# ceph auth get client.rbd-mirror.site-a -o /etc/ceph/ceph.client.rbd-mirror.site-a.keyring
      Copy to Clipboard Toggle word wrap

    2. 更改 /etc/ceph 目录中的 auth 文件中的用户名:

      示例

      [client.rbd-mirror.rbd-client-site-a]
          key = AQCbKbVg+E7POBAA7COSZCodvOrg2LWIFc9+3g==
          caps mds = "allow *"
          caps mgr = "allow *"
          caps mon = "allow *"
          caps osd = "allow *"
      Copy to Clipboard Toggle word wrap

    3. 导入 auth 文件以添加相关权限:

      语法

      ceph auth import -i PATH_TO_KEYRING
      Copy to Clipboard Toggle word wrap

      示例

      [root@rbd-client-site-a ~]# ceph auth import -i /etc/ceph/ceph.client.rbd-mirror.rbd-client-site-a.keyring
      Copy to Clipboard Toggle word wrap

    4. 检查 RBD 镜像节点的服务名称:

      示例

      [root@rbd-client-site-a ~]# systemctl list-units --all
      
      systemctl stop ceph-rbd-mirror@rbd-client-site-a.service
      systemctl disable ceph-rbd-mirror@rbd-client-site-a.service
      systemctl reset-failed ceph-rbd-mirror@rbd-client-site-a.service
      systemctl start ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      systemctl enable ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      systemctl status ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      Copy to Clipboard Toggle word wrap

    5. 将 rbd-mirror 节点添加到 /etc/ansible/hosts 文件中:

      示例

      [rbdmirrors]
      ceph.client.rbd-mirror.rbd-client-site-a
      Copy to Clipboard Toggle word wrap

  4. 如果您使用的守护进程不是容器化的,请将它们转换为容器化格式:

    语法

    ansible-playbook -vvvv -i INVENTORY_FILE infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
    Copy to Clipboard Toggle word wrap

    vvvv 选项收集转换过程的详细日志。

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
    Copy to Clipboard Toggle word wrap

  5. Playbook 成功完成后,编辑 all.yml 文件中的 rgw_multisite: true 的值,并确保 containerized_deployment 的值为 true

    注意

    确保从管理节点中删除 ceph-iscsilibtcmutcmu-runner 软件包。

1.6. 更新主机操作系统

Red Hat Ceph Storage 5 支持 Red Hat Enterprise Linux 8.4 EUS、8.5、8.6、9.0 和 9.1。

此流程允许您在存储集群的节点上安装 Red Hat Ceph Storage 5 和 Red Hat Enterprise Linux 8。如果您已在存储集群中运行 Red Hat Enterprise Linux 8,请跳过这个步骤。

您必须手动升级集群中的所有节点,以运行最新版本的 Red Hat Enterprise Linux 和 Red Hat Ceph Storage。

先决条件

  • 正在运行的 Red Hat Ceph Storage 4 存储群集.
  • 对存储集群中所有节点的 sudo 级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  1. 使用 docker-to-podman playbook 将 docker 转换为 podman:

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts infrastructure-playbooks/
    docker-to-podman.yml
    Copy to Clipboard Toggle word wrap

1.6.1. 手动升级 Ceph 监控节点及其操作系统

作为系统管理员,您可以手动将 Red Hat Ceph Storage 集群节点上的 Ceph 监控软件和 Red Hat Enterprise Linux 操作系统同时升级到新的主版本。

重要

一次仅在一个 monitor 节点上执行该步骤。要防止集群访问问题,在继续处理下一个节点,请确保当前升级的 monitor 节点已恢复到正常操作状态。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 节点正在运行 Red Hat Enterprise Linux 7 7.9。
  • 节点使用 Red Hat Ceph Storage 版本 4.3 或更高版本。
  • Red Hat Enterprise Linux 8.4 EUS 或更高版本可以访问安装源。
重要

如果您要从 Red Hat Enterprise Linux 7.9 上的 Red Hat Ceph Storage 4.3 升级到 Red Hat Enterprise Linux 9 上的 Red Hat Ceph Storage 5,首先将主机操作系统从 Red Hat Enterprise Linux 7.9 升级到 Red Hat Enterprise Linux 8.x,然后升级到 Red Hat Ceph Storage,然后升级到 Red Hat Enterprise Linux 9.x。

流程

  1. 停止 monitor 服务:

    语法

    systemctl stop ceph-mon@MONITOR_ID
    Copy to Clipboard Toggle word wrap

    MONITOR_ID 替换为 monitor 节点的 ID 号。

  2. 如果使用 Red Hat Ceph Storage 4,请禁用 Red Hat Ceph Storage 4 存储库。

    1. 禁用工具存储库:

      # subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
      Copy to Clipboard Toggle word wrap
    2. 禁用 mon 存储库:

      # subscription-manager repos --disable=rhel-7-server-rhceph-4-mon-rpms
      Copy to Clipboard Toggle word wrap
  3. 使用 leapp 实用程序升级存储集群后,会删除许多 Ceph 软件包。在升级前记录 Ceph 软件包:

    示例

    [root@host01 ~]# rpm -qa | grep ceph
    
    python-ceph-argparse-14.2.22-128.el7cp.x86_64
    ceph-selinux-14.2.22-128.el7cp.x86_64
    python-cephfs-14.2.22-128.el7cp.x86_64
    ceph-base-14.2.22-128.el7cp.x86_64
    ceph-mon-14.2.22-128.el7cp.x86_64
    ceph-mgr-diskprediction-local-14.2.22-128.el7cp.noarch
    ceph-ansible-4.0.70.18-1.el7cp.noarch
    libcephfs2-14.2.22-128.el7cp.x86_64
    ceph-common-14.2.22-128.el7cp.x86_64
    ceph-osd-14.2.22-128.el7cp.x86_64
    ceph-mgr-14.2.22-128.el7cp.x86_64
    Copy to Clipboard Toggle word wrap

  4. 安装 leapp 实用程序。

  5. 通过 leapp 预升级检查运行。请参阅从命令行评估可升级性
  6. 升级到 Red Hat Enterprise Linux 8.6 后,安装 Ceph-Ansible 软件包并运行 Ansible playbook:

    1. 安装 Ceph-Ansible,它将安装所有 Ceph 软件包:

      [root@admin ~]# dnf install ceph-ansible
      Copy to Clipboard Toggle word wrap
    2. ansible 用户身份,在所有升级节点上运行 Ansible playbook:

      • 裸机部署:

        [user@admin ceph-ansible]$ ansible-playbook -vvvv -i INVENTORY site.yml --limit osds|rgws|clients|mdss|nfss|iscsigw -i hosts
        Copy to Clipboard Toggle word wrap
      • 容器部署:

        [ansible@admin ceph-ansible]$ ansible-playbook -vvvv -i INVENTORY site-container.yml --limit osds|rgws|clients|mdss|nfss|iscsigw -i hosts
        Copy to Clipboard Toggle word wrap
  7. 升级到 Red Hat Enterprise Linux 9.x 后,将 podman-auth.json 文件从其他节点复制到 /etc/ceph/' 中的升级节点,然后重启每个服务。

    # systemctl restart _SERVICE NAME_
    Copy to Clipboard Toggle word wrap
  8. /etc/ssh/sshd_config 中设置 PermitRootLogin yes
  9. 重启 OpenSSH SSH 守护进程:

    # systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap
  10. 从 Linux 内核中删除 iSCSI 模块:

    # modprobe -r iscsi
    Copy to Clipboard Toggle word wrap
  11. 重新引导节点。
  12. 为 Red Hat Ceph Storage 5 启用软件仓库:

    1. 启用工具存储库:

      Red Hat Enterprise Linux 8

      subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
      Copy to Clipboard Toggle word wrap

      Red Hat Enterprise Linux 9

      subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
      Copy to Clipboard Toggle word wrap

  13. 从尚未升级的 monitor 节点或已经恢复这些文件的节点恢复 ceph-client-admin.keyringceph.conf 文件。
  14. 重启 Ceph Monitor 服务:

    示例

    [root@host01 ~]# systemctl restart ceph-mon@host01.service
    [root@host01 ~]# systemctl status ceph-mon@host01.service
    Copy to Clipboard Toggle word wrap

  15. 验证监控器和管理器服务是否已恢复,并且 monitor 是否在仲裁中。

    语法

    ceph -s
    Copy to Clipboard Toggle word wrap

    services: 下的 mon: 行中,确保该节点被列为 quorum(仲裁) 而不是 out of quorum(未仲裁)

    示例

    # ceph -s
    mon: 3 daemons, quorum node0,node1,node2 (age 2h)
    mgr: node0(active, since 2h), standbys: node1, node2
    Copy to Clipboard Toggle word wrap

  16. 在所有 monitor 节点上重复上述步骤,直到它们都已升级。

1.6.2. 升级 OSD 节点

作为系统管理员,您可以手动将 Red Hat Ceph Storage 集群节点上的 Ceph OSD 软件和 Red Hat Enterprise Linux 操作系统同时升级到新的主版本。

重要

对 Ceph 集群中的每一 OSD 节点执行此步骤,但通常一次仅针对一个 OSD 节点进行。可以并行执行最多一个故障域的 OSD 节点值。例如,如果正在使用每个机架复制,可以并行升级整个机架的 OSD 节点。为防止数据访问问题,在继续下一 OSD ,请确保当前 OSD 节点的 OSD 已恢复正常运作,所有集群 PG 都处于 active+clean 状态。

重要

如果您要从 Red Hat Enterprise Linux 7.9 上的 Red Hat Ceph Storage 4.3 升级到在 Red Hat Enterprise Linux 9 上运行的 Red Hat Ceph Storage 5.2 ,请先将主机的操作系统从 Red Hat Enterprise Linux 7.9 升级到 Red Hat Enterprise Linux 8.x,然后升级 Red Hat Ceph Storage,然后再升级到 Red Hat Enterprise Linux 9.x。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 节点正在运行 Red Hat Enterprise Linux 7 7.9。
  • 节点使用 Red Hat Ceph Storage 版本 4.3 或更高版本。
  • 访问 Red Hat Enterprise Linux 8.4 EUS 或更高版本的安装源。
  • FileStore OSD 必须迁移到 BlueStore。

流程

  1. 如果您的 FileStore OSD 尚未迁移到 BlueStore,请运行 filestore-to-bluestore playbook。有关将 OSD 从 FileStore 转换为 BlueStore 的更多信息,请参阅 BlueStore
  2. 设置 OSD noout 标志,以防止 OSD 在迁移期间被标记为 down:

    语法

    ceph osd set noout
    Copy to Clipboard Toggle word wrap

  3. 设置 OSD nobackfillnorecovernorrebalancenoscrubnodeep-scrub 标志,以避免集群出现不必要的负载,并在节点停机时避免任何数据被重新创建:

    语法

    ceph osd set nobackfill
    ceph osd set norecover
    ceph osd set norebalance
    ceph osd set noscrub
    ceph osd set nodeep-scrub
    Copy to Clipboard Toggle word wrap

  4. 正常关闭节点上的所有 OSD 进程:

    语法

    systemctl stop ceph-osd.target
    Copy to Clipboard Toggle word wrap

  5. 如果使用 Red Hat Ceph Storage 4,请禁用 Red Hat Ceph Storage 4 存储库。

    1. 禁用工具存储库:

      语法

      subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
      Copy to Clipboard Toggle word wrap

    2. 禁用 osd 存储库:

      语法

      subscription-manager repos --disable=rhel-7-server-rhceph-4-osd-rpms
      Copy to Clipboard Toggle word wrap

  6. 安装 leapp 实用程序。请参阅 从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8
  7. 通过 leapp 预升级检查运行。请参阅从命令行评估可升级性
  8. /etc/ssh/sshd_config 中设置 PermitRootLogin yes
  9. 重启 OpenSSH SSH 守护进程:

    语法

    systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap

  10. 从 Linux 内核中删除 iSCSI 模块:

    语法

    modprobe -r iscsi
    Copy to Clipboard Toggle word wrap

  11. 根据执行从 Red Hat Enterprise Linux 7 到 Red Hat Enterprise Linux 8 的升级以及执行从 Red Hat Enterprise Linux 8 到 Red Hat Enterprise Linux 9 的升级中的内容进行升级。

    1. 启用工具存储库:

      Red Hat Enterprise Linux 8

      subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
      Copy to Clipboard Toggle word wrap

      Red Hat Enterprise Linux 9

      subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
      Copy to Clipboard Toggle word wrap

  12. 恢复 ceph.conf 文件。
  13. 取消设置 nooutnobackfillnorecovernorebalancenoscrubnodeep-scrub 标志:

    语法

    ceph osd unset noout
    ceph osd unset nobackfill
    ceph osd unset norecover
    ceph osd unset norebalance
    ceph osd unset noscrub
    ceph osd unset nodeep-scrub
    Copy to Clipboard Toggle word wrap

  14. 验证 OSDs 为 upin,它们处于 active+clean 状态。

    语法

    ceph -s
    Copy to Clipboard Toggle word wrap

    services: 下的 osd: 行中,确定所有 OSDs 都为 upin

    示例

    # ceph -s
    osd: 3 osds: 3 up (since 8s), 3 in (since 3M)
    Copy to Clipboard Toggle word wrap

  15. 在所有 OSD 节点上重复这个过程,直到它们都已升级。

1.6.3. 升级 Ceph 对象网关节点

作为系统管理员,您可以手动将 Red Hat Ceph Storage 集群节点上的 Ceph Object Gateway (RGW) 软件和 Red Hat Enterprise Linux 操作系统同时升级到新的主版本。

重要

对 Ceph 集群中的每个 RGW 节点执行此步骤,但一次仅针对一个 RGW 节点。要防止客户端访问问题,请确保当前升级的 RGW 已恢复正常操作,然后再继续升级下一个节点。

注意

升级时,请确保 radosgw-admin 工具和 Ceph 对象网关存储集群具有相同的版本。当存储集群升级时,同时升级 radosgw-admin 工具非常重要。支持使用不匹配的版本。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 节点正在运行 Red Hat Enterprise Linux 7 7.9。
  • 节点使用 Red Hat Ceph Storage 版本 4.3 或更高版本。
  • 访问 Red Hat Enterprise Linux 8.4 EUS、8.5、8.6、9.0 和 9.1 的安装源。

流程

  1. 停止 Ceph 对象网关服务:

    语法

    # systemctl stop ceph-radosgw.target
    Copy to Clipboard Toggle word wrap

  2. 禁用 Red Hat Ceph Storage 4 工具存储库:

    # subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
    Copy to Clipboard Toggle word wrap
  3. 安装 leapp 实用程序。

  4. 运行 leapp 进行升级前的检查:

  5. /etc/ssh/sshd_config 中设置 PermitRootLogin yes
  6. 如果创建存储桶或具有 num_shards = 0, 请在规划升级到 Red Hat Ceph Storage 5.3 前手动重新划分存储桶:

    警告

    bucket_index_max_shards0 时,从旧版本升级到 Red Hat Ceph Storage 5.3 可能会导致 Ceph 对象网关存储桶的元数据丢失,从而导致存储桶在尝试访问它时不可用。因此,请确保 bucket_index_max_shards 设置为 11 个分片。如果没有,在 zonegroup 级别修改此配置。

    语法

    radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
    Copy to Clipboard Toggle word wrap

  7. 重启 OpenSSH SSH 守护进程:

    # systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap
  8. 从 Linux 内核中删除 iSCSI 模块:

    # modprobe -r iscsi
    Copy to Clipboard Toggle word wrap
  9. 根据从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8 的内容来执行升级。
  10. 启用工具存储库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  11. 恢复 ceph-client-admin.keyringceph.conf 文件。
  12. 验证守护进程是否活跃:

    语法

    ceph -s
    Copy to Clipboard Toggle word wrap

    查看 services: 下的 rgw: 行 以确保 RGW 守护进程处于活动状态。

    示例

    rgw: 1 daemon active (node4.rgw0)
    Copy to Clipboard Toggle word wrap

  13. 在所有 Ceph 对象网关节点上重复上述步骤,直到它们都已升级。

1.6.4. 升级 CephFS 元数据服务器节点

作为存储管理员,您可以手动将 Red Hat Ceph Storage 集群中的 Ceph 文件系统 (CephFS) 元数据服务器 (MDS) 软件同时升级到新的主版本。

重要

在升级存储集群前,请将活跃 MDS 的数量减少为每个文件系统一个。这消除了多个 MDS 之间可能存在的版本冲突。另外,在升级前关闭所有待机节点。

这是因为 MDS 集群没有内置的版本或文件系统标志。如果没有这些功能,多个 MDS 可能会使用不同版本的 MDS 软件进行通信,并可能导致断言或其他故障发生。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • 节点正在运行 Red Hat Enterprise Linux 7.9。
  • 节点使用 Red Hat Ceph Storage 版本 4.3 或更高版本。
  • 访问 Red Hat Enterprise Linux 8.4 EUS、8.5、8.6、9.0 和 9.1 的安装源。
  • 对存储集群中所有节点的根级别访问权限。

流程

  1. 将活跃 MDS 的数量减少到 1:

    语法

    ceph fs set FILE_SYSTEM_NAME max_mds 1
    Copy to Clipboard Toggle word wrap

    示例

    [root@mds ~]# ceph fs set fs1 max_mds 1
    Copy to Clipboard Toggle word wrap

  2. 等待集群停止所有 MDS 等级。当所有 MDS 停止后,仅排名 0 才处于活动状态。剩余的操作应处于待机模式。检查文件系统的状态:

    [root@mds ~]# ceph status
    Copy to Clipboard Toggle word wrap
  3. 使用 systemctl 关闭所有备用 MDS:

    [root@mds ~]# systemctl stop ceph-mds.target
    Copy to Clipboard Toggle word wrap
  4. 确认只有一个 MDS 是在线的,并且它已在文件系统中排名为 0:

    [ceph: root@host01 /]# ceph status
    Copy to Clipboard Toggle word wrap
  5. 禁用 Red Hat Ceph Storage 4 工具存储库:

    [root@mds ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
    Copy to Clipboard Toggle word wrap
  6. 安装 leapp 实用程序。

  7. 运行 leapp 进行升级前的检查:

  8. 编辑 /etc/ssh/sshd_config,并将 PermitRootLogin 设置为 yes
  9. 重启 OpenSSH SSH 守护进程:

    [root@mds ~]# systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap
  10. 从 Linux 内核中删除 iSCSI 模块:

    [root@mds ~]# modprobe -r iscsi
    Copy to Clipboard Toggle word wrap
  11. 执行升级:

  12. 启用工具存储库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  13. 恢复 ceph-client-admin.keyringceph.conf 文件。
  14. 验证守护进程是否活跃:

    [root@mds ~]# ceph -s
    Copy to Clipboard Toggle word wrap
  15. 为待机守护进程跟踪相同的进程。
  16. 当您完成重启所有待机 MDS 后,请恢复集群中的 max_mds 的值:

    语法

    ceph fs set FILE_SYSTEM_NAME max_mds ORIGINAL_VALUE
    Copy to Clipboard Toggle word wrap

    示例

    [root@mds ~]# ceph fs set fs1 max_mds 5
    Copy to Clipboard Toggle word wrap

作为系统管理员,您可以手动将 Red Hat Ceph Storage 集群节点上的 Ceph Dashboard 软件和 Red Hat Enterprise Linux 操作系统同时升级到新的主版本。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 该节点正在运行 Red Hat Enterprise Linux 7.9。
  • 节点运行 Red Hat Ceph Storage 版本 4.3 或更高版本。
  • Red Hat Enterprise Linux 8.4 EUS、8.5、8.6、9.0 或 9.1 的安装源可访问。

流程

  1. 禁用 Red Hat Ceph Storage 4 工具存储库:

    # subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
    Copy to Clipboard Toggle word wrap
  2. 安装 leapp 实用程序。

  3. 运行 leapp 进行升级前的检查:

  4. /etc/ssh/sshd_config 中设置 PermitRootLogin yes
  5. 重启 OpenSSH SSH 守护进程:

    # systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap
  6. 从 Linux 内核中删除 iSCSI 模块:

    # modprobe -r iscsi
    Copy to Clipboard Toggle word wrap
  7. 执行升级:

  8. 为 Red Hat Ceph Storage 5 启用工具软件仓库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

将 Red Hat Ceph Storage 集群节点上的 Ceph Ansible 软件和 Red Hat Enterprise Linux 操作系统手动升级到新的主要版本。

重要

在升级 Ceph Ansible 节点上的主机操作系统之前,备份 group_varshosts 文件。在重新配置 Ceph Ansible 节点之前,使用创建的备份。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 该节点正在运行 Red Hat Enterprise Linux 7.9。
  • 节点运行 Red Hat Ceph Storage 版本 4.2z2 或更高版本。
  • 访问 Red Hat Enterprise Linux 8.4 EUS 或 Red Hat Enterprise Linux 8.5。

流程

  1. 为 Red Hat Enterprise Linux 8 禁用 Red Hat Ceph Storage 4 的工具存储库:

    [root@ansible ~]# subscription-manager repos --disable=rhceph-4-tools-for-rhel-8-x86_64-rpms
    [root@ansible ~]# subscription-manager repos --disable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap
  2. 安装 leapp 实用程序。

  3. 运行 leapp 进行升级前的检查:

  4. 编辑 /etc/ssh/sshd_config,并将 PermitRootLogin 设置为 yes
  5. 重启 OpenSSH SSH 守护进程:

    [root@mds ~]# systemctl restart sshd.service
    Copy to Clipboard Toggle word wrap
  6. 从 Linux 内核中删除 iSCSI 模块:

    [root@mds ~]# modprobe -r iscsi
    Copy to Clipboard Toggle word wrap
  7. 执行升级:

  8. 为 Red Hat Ceph Storage 5 启用工具软件仓库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  9. 恢复 ceph-client-admin.keyringceph.conf 文件。

1.7. 恢复备份文件

在存储集群中的每个节点上完成主机操作系统升级后,恢复您之前备份到每个节点的所有文件,以便升级的节点使用保留的设置。

在完成该主机的 OS 升级过程后,在存储集群中的每个主机上重复此过程。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有节点的根级别访问权限。

流程

  1. 将您在主机操作系统升级前备份的文件恢复到主机。
  2. /etc/ceph 文件夹及其内容恢复到所有主机,包括 ceph.client.admin.keyringceph.conf 文件。
  3. /etc/ganesha/ 文件夹恢复到每个节点。
  4. 检查以确保操作系统升级后每个备份的文件的所有权没有被改变。文件所有者应当是 ceph。如果文件所有者已更改为 root,请对每个文件使用以下命令将所有权更改回 ceph

    示例

    [root@admin]# chown ceph: ceph.client.rbd-mirror.node1.keyring
    Copy to Clipboard Toggle word wrap

  5. 如果您从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8,且存储集群定义了 RBD 镜像功能,请从备份副本中恢复 /etc/ceph 文件夹。
  6. 恢复之前备份的 group_vars/rbdmirrors.yml 文件。
  7. 更改所有节点上的文件夹的所有权:

    示例

    [root@admin]# chown -R /etc/ceph
    [root@admin]# chown -R /var/log/ceph
    [root@admin]# chown -R /var/lib/ceph
    Copy to Clipboard Toggle word wrap

1.8. 在 RHCS 升级前备份文件

在运行 rolling_update.yml playbook,将 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 前,生成所有 yml 文件的备份副本。

先决条件

  • 运行 RHCS 4.3 或更高版本的 Red Hat Ceph Storage 4 集群。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  • 备份所有 yml 文件的副本。

    示例

    [root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml
    [root@admin ceph-ansible]# cp group_vars/mdss.yml group_vars/mdss_old.yml
    [root@admin ceph-ansible]# cp group_vars/rgws.yml group_vars/rgws_old.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
    Copy to Clipboard Toggle word wrap

1.9. 升级过程

作为存储管理员,您可以使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。rolling_update.yml Ansible playbook 为部署Red Hat Ceph Storage 执行升级。ceph-ansible 按照以下顺序升级 Ceph 节点:

  • Ceph monitor
  • Ceph Manager
  • Ceph OSD 节点
  • MDS 节点
  • Ceph 对象网关(RGW)节点
  • Ceph RBD-mirror 节点
  • Ceph NFS 节点
  • Ceph iSCSI 网关节点
  • Ceph 客户端节点
  • Ceph-crash 守护进程
  • 所有节点上的 node-exporter
  • Ceph 仪表板
重要

在存储集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 后,Grafana UI 会显示两个仪表板。这是因为 Red Hat Ceph Storage 4 中的 Prometheus 端口为 9092,而 Red Hat Ceph Storage 5 为 9095。您可以删除 grafana。cephadm 重新部署服务和守护进程,并在 Grafana UI 上删除旧的仪表板。

注意

Red Hat Ceph Storage 5 仅支持容器化部署。

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadm 来执行后续更新。

重要

若要部署具有单一域和多个域的多站点 Ceph 对象网关,请编辑 all.yml 文件。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的配置多站点 Ceph 对象网关

注意

Red Hat Ceph Storage 5 还包括一个健康检查功能,如果它检测到存储集群中的任何守护进程正在运行多个版本的 Red Hat Ceph Storage,它会返回 DAEMON_OLD_VERSION 警告。当守护进程继续运行多个版本的 Red Hat Ceph Storage 时,会触发警告,超过 mon_warn_older_version_delay 选项中设置的时间值。默认情况下,mon_warn_older_version_delay 选项设置为一周。此设置允许大多数升级进行,而不会看到警告。如果升级过程暂停了较长的时间,您可以屏蔽健康警告:

ceph health mute DAEMON_OLD_VERSION --sticky
Copy to Clipboard Toggle word wrap

升级完成后,取消健康警告:

ceph health unmute DAEMON_OLD_VERSION
Copy to Clipboard Toggle word wrap

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有主机的根级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • Red Hat Ceph Storage 5 提供的最新版本的 Ansible 和 ceph-ansible
  • 用于 Ansible 应用的 ansible 用户帐户。
  • 存储集群的节点已升级到 Red Hat Enterprise Linux 8.4 EUS 或更高版本。
重要

Ansible 清单文件必须位于 ceph-ansible 目录中。

流程

  1. 在 Ansible 管理节点上启用 Ceph 和 Ansible 存储库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  2. 在 Ansible 管理节点上,确保安装了最新版本的 ansibleceph-ansible 软件包。

    语法

    dnf update ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  3. 进入 /usr/share/ceph-ansible/ 目录:

    示例

    [root@admin ~]# cd /usr/share/ceph-ansible
    Copy to Clipboard Toggle word wrap

  4. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请分别将它们重命名为 group_vars/osds.yml.samplegroup_vars/clients.yml.sample 文件,并将它们重命名为 group_vars/osds.yml,并分别重命名为 group_vars/clients.yml

    示例

    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
    [root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
    Copy to Clipboard Toggle word wrap

  5. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请编辑 group_vars/all.yml 文件来添加 Red Hat Ceph Storage 5 详情。
  6. 完成上述两个步骤后,将旧 yaml 文件中的设置复制到新的 yaml 文件中。不要更改 ceph_rhcs_versionceph_docker_imagegrafana_container_image 的值,因为这些配置参数的值适用于 Red Hat Ceph Storage 5。这样可确保当前 yaml 文件中存在与集群相关的所有设置。

    示例

    fetch_directory: ~/ceph-ansible-keys
    monitor_interface: eth0
    public_network: 192.168.0.0/24
    ceph_docker_registry_auth: true
    ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
    ceph_docker_registry_password: TOKEN
    dashboard_admin_user: DASHBOARD_ADMIN_USERNAME
    dashboard_admin_password: DASHBOARD_ADMIN_PASSWORD
    grafana_admin_user: GRAFANA_ADMIN_USER
    grafana_admin_password: GRAFANA_ADMIN_PASSWORD
    radosgw_interface: eth0
    ceph_docker_image: "rhceph/rhceph-5-rhel8"
    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
    grafana_container_image: registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:5
    prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
    alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
    Copy to Clipboard Toggle word wrap

    注意

    确保将 Red Hat Ceph Storage 5 容器镜像设置为默认值。

  7. 编辑 group_vars/osds.yml 文件。添加并设置以下选项:

    语法

    nb_retry_wait_osd_up: 50
    delay_wait_osd_up: 30
    Copy to Clipboard Toggle word wrap

  8. 打开 group_vars/all.yml 文件,并验证旧的 all.yml 文件中是否存在以下值:

    1. 使用来自旧 all.yml 文件中的值相同的值设置 fetch_directory 选项:

      语法

      fetch_directory: FULL_DIRECTORY_PATH
      Copy to Clipboard Toggle word wrap

      FULL_DIRECTORY_PATH 替换为可写入位置,如 Ansible 用户的主目录。

    2. 如果要升级的集群包含任何 Ceph 对象网关节点,请添加 radosgw_interface 选项:

      radosgw_interface: INTERFACE
      Copy to Clipboard Toggle word wrap

      INTERFACE 替换为 Ceph 对象网关节点侦听的接口。

    3. 如果您的当前设置配置了 SSL 证书,请编辑以下内容:

      语法

      radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME
      radosgw_frontend_port: 443
      Copy to Clipboard Toggle word wrap

    4. 取消注释 upgrade_ceph_packages 选项并将其设置为 True

      语法

      upgrade_ceph_packages: True
      Copy to Clipboard Toggle word wrap

    5. 如果存储集群每个节点有多个 Ceph 对象网关实例,请取消注释 radosgw_num_instances 设置并将其设置为集群中每个节点的实例数量:

      语法

      radosgw_num_instances : NUMBER_OF_INSTANCES_PER_NODE
      Copy to Clipboard Toggle word wrap

      示例

      radosgw_num_instances : 2
      Copy to Clipboard Toggle word wrap

    6. 如果存储集群定义了 Ceph 对象网关多站点,请检查 all.yml 中的多站点设置,以确保它们包含与旧 all.yml 文件中相同的值。
  9. 如果创建存储桶或具有 num_shards = 0, 请在规划升级到 Red Hat Ceph Storage 5.3 前手动重新划分存储桶:

    警告

    bucket_index_max_shards0 时,从旧版本升级到 Red Hat Ceph Storage 5.3 可能会导致 Ceph 对象网关存储桶的元数据丢失,从而导致存储桶在尝试访问它时不可用。因此,请确保 bucket_index_max_shards 设置为 11 个分片。如果没有,在 zonegroup 级别修改此配置。

    语法

    radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
    Copy to Clipboard Toggle word wrap

  10. 在 Ansible 管理节点上,以 ansible-user 身份登录。
  11. 使用 --extra-vars 选项更新 infrastructure-playbooks/rolling_update.yml playbook,并将 health_osd_check_retrieshealth_osd_check_delay 值分别更改为 5030

    示例

    [root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"
    Copy to Clipboard Toggle word wrap

    对于每个 OSD 节点,这些值可使 ceph-ansible 每 30 秒检查存储集群运行状况,最多 50 次。这意味着 ceph-ansible 会等待每个 OSD 最多 25 分钟。

    根据存储集群的已用存储容量,调整 health_osd_check_retries 选项的值。例如,如果您使用了 436 TB 中的 218 TB(或 50% 的存储容量),则将 health_osd_check_retries 选项设置为 50

    /etc/ansible/hosts 是 Ansible 清单文件的默认位置。

  12. 运行 rolling_update.yml playbook,将存储集群从 Red Hat Ceph Storage 4 转换为 Red Hat Ceph Storage 5:

    语法

    ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i INVENTORY_FILE
    Copy to Clipboard Toggle word wrap

    vvvv 选项收集升级过程的详细日志。

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts
    Copy to Clipboard Toggle word wrap

    重要

    不支持将 --limit Ansible 选项与 rolling_update.yml playbook 搭配使用。

  13. 查看 Ansible playbook 日志输出,以验证升级的状态。

验证

  1. 列出所有正在运行的容器:

    示例

    [root@mon ~]# podman ps
    Copy to Clipboard Toggle word wrap

  2. 检查集群的健康状况。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph -s
    Copy to Clipboard Toggle word wrap

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph -s
    Copy to Clipboard Toggle word wrap

  3. 验证 Ceph 集群守护进程版本,以确认升级所有守护进程。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph --cluster ceph versions
    Copy to Clipboard Toggle word wrap

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph --cluster ceph versions
    Copy to Clipboard Toggle word wrap

1.10. 使用 cephadm将存储集群转换为

将存储集群升级到 Red Hat Ceph Storage 5 后,运行 cephadm-adopt playbook 以转换存储集群守护进程以运行 cephadm

cephadm-adopt playbook 采用 Ceph 服务,安装所有 cephadm 依赖项,启用 cephadm 编配器后端,在所有主机上生成和配置 ssh 密钥,并将主机添加到编配器配置中。

注意

运行 cephadm-adopt playbook 后,删除 ceph-ansible 软件包。集群守护进程不再可用于 ceph-ansible。您必须使用 cephadm 来管理集群守护进程。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有节点的根级别访问权限。

流程

  1. 登录 ceph-ansible 节点,再将目录更改为 /usr/share/ceph-ansible
  2. 编辑 all.yml 文件。

    语法

    ceph_origin: custom/rhcs
    ceph_custom_repositories:
      - name: NAME
        state: present
        description: DESCRIPTION
        gpgcheck: 'no'
        baseurl: BASE_URL
        file: FILE_NAME
        priority: '2'
        enabled: 1
    Copy to Clipboard Toggle word wrap

    示例

    ceph_origin: custom
    ceph_custom_repositories:
      - name: ceph_custom
        state: present
        description: Ceph custom repo
        gpgcheck: 'no'
        baseurl: https://example.ceph.redhat.com
        file: cephbuild
        priority: '2'
        enabled: 1
      - name: ceph_custom_1
        state: present
        description: Ceph custom repo 1
        gpgcheck: 'no'
        baseurl: https://example.ceph.redhat.com
        file: cephbuild_1
        priority: '2'
        enabled: 1
    Copy to Clipboard Toggle word wrap

  3. 运行 cephadm-adopt playbook:

    语法

    ansible-playbook infrastructure-playbooks/cephadm-adopt.yml -i INVENTORY_FILE
    Copy to Clipboard Toggle word wrap

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/cephadm-adopt.yml -i hosts
    Copy to Clipboard Toggle word wrap

  4. 将最小 compat 客户端参数设置为 luminous

    示例

    [ceph: root@node0 /]# ceph osd set-require-min-compat-client luminous
    Copy to Clipboard Toggle word wrap

  5. 运行以下命令,使应用在 NFS-Ganesha 池上运行:POOL_NAMEnfs-ganeshaAPPLICATION_NAME 是您要启用的应用的名称,如 cephfsrbdrgw

    语法

    ceph osd pool application enable POOL_NAME APPLICATION_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@node0 /]# ceph osd pool application enable nfs-ganesha rgw
    Copy to Clipboard Toggle word wrap

    重要

    在将存储集群从 Red Hat Ceph Storage 4 迁移到 Red Hat Ceph Storage 5 后,cephadm-adopt playbook 不会启动 rbd-mirror。

    要临时解决这个问题,请手动添加 peer:

    语法

    rbd mirror pool peer add POOL_NAME CLIENT_NAME@CLUSTER_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@node0 /]# rbd --cluster site-a mirror pool peer add image-pool client.rbd-mirror-peer@site-b
    Copy to Clipboard Toggle word wrap

  6. 升级后删除 Grafana:

    1. 登录到 Cephadm shell:

      示例

      [root@host01 ~]# cephadm shell
      Copy to Clipboard Toggle word wrap

    2. 在存储集群中获取 Grafana 的名称:

      示例

      [ceph: root@host01 /]# ceph orch ps --daemon_type grafana
      Copy to Clipboard Toggle word wrap

    3. 删除 Grafana:

      语法

      ceph orch daemon rm GRAFANA_DAEMON_NAME
      Copy to Clipboard Toggle word wrap

      示例

      [ceph: root@host01 /]# ceph orch daemon rm grafana.host01
      
      Removed grafana.host01 from host 'host01'
      Copy to Clipboard Toggle word wrap

    4. 等待几分钟并检查最新的日志:

      示例

      [ceph: root@host01 /]# ceph log last cephadm
      Copy to Clipboard Toggle word wrap

      cephadm 重新部署 Grafana 服务和守护进程。

1.11. 在升级的存储集群中安装 cephadm-ansible

cephadm-ansible 是 Ansible playbook 的集合,可简化由 cephadm 所涵盖的工作流。安装后,playbook 位于 /usr/share/cephadm-ansible/ 中。

注意

在将新节点或新客户端添加到升级的存储集群之前,请运行 cephadm-preflight.yml playbook。

先决条件

  • 对 Ansible 管理节点的根级别访问权限.
  • 具有适当权利的有效的红帽订阅.
  • 用于访问 Red Hat Registry 的有效红帽网络 (RHN) 或服务帐户。

流程

  1. 卸载 ansible 和旧的 ceph-ansible 软件包:

    语法

    dnf remove ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  2. 在 Ansible 管理节点上禁用 Ansible 存储库并启用 Ceph 存储库:

    Red Hat Enterprise Linux 8

    [root@admin ~]# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms --enable=rhel-8-for-x86_64-appstream-rpms --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --disable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    [root@admin ~]# subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms --enable=rhel-9-for-x86_64-appstream-rpms --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms --disable=ansible-2.9-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  3. 安装 cephadm-ansible 软件包,该软件包将 ansible-core 作为依赖项安装:

    语法

    dnf install cephadm-ansible
    Copy to Clipboard Toggle word wrap

作为存储管理员,您可以将运行 Red Hat Enterprise Linux 8 的 Red Hat Ceph Storage 集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5。升级过程包括以下任务:

  • 使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。
重要

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadmcephadm-ansible 执行后续更新。

重要

当从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 时,不要将 bluestore_fsck_quick_fix_on_mount 参数设置为 true,或者不运行 ceph-bluestore-tool --path PATH_TO_OSD --command quick-fix|repair 命令,因为它可能会导致格式的 OMAP 密钥并导致数据损坏。

警告

在 Ceph Object Gateway 存储集群中(单站点或多站点)从 Red Hat Ceph Storage 5.0 升级到 Red Hat Ceph Storage 5.2 被支持,但在升级您的存储集群前需要设置 ceph config set mgr mgr/cephadm/no_five_one_rgw true --force 选项。

由于一个已知问题,在 Ceph Object Gateway 存储集群中从 Red Hat Ceph Storage 5.1 升级到 Red Hat Ceph Storage 5.2 不被支持。如需更多信息,请参阅 Support Restrictions for upgrades for RADOS Gateway (RGW) on Red Hat Red Hat Ceph Storage 5.2 知识库文章。

注意

如果您计划升级到 Red Hat Ceph Storage 5.0z4,请参阅知识库文章从 Red Hat Ceph Storage 4.2 z4 升级到 5.0z4

重要

对于 Red Hat Ceph Storage,默认将 bluefs_buffered_io 选项设为 True。这个选项使 BlueFS 能够在某些情况下执行缓冲的读取,并允许内核页面缓存作为辅助缓存进行读取,如 RocksDB 块读取。例如,如果 RocksDB 块缓存不足以在 OMAP 迭代期间保存所有块,则可以从页面缓存而不是磁盘中读取它们。当 osd_memory_target 太小而无法存放块缓存中的所有条目时,这可显著提高性能。目前,启用 bluefs_buffered_io 并禁用系统级别交换可防止性能下降。

有关 bluefs_buffered_io 的当前设置的更多信息,请参阅 Red Hat Ceph Storage 管理指南中的查看 bluefs_buffered_io 设置章节。

Red Hat Ceph Storage 5 仅支持容器化守护进程。它不支持非容器化存储集群。如果您要将非容器化存储集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,升级过程包括转换为容器化部署。

2.1. 先决条件

  • 运行 Red Hat Enterprise Linux 8.4 或更高版本的 Red Hat Ceph Storage 4 集群。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 对存储集群中所有节点的根级别访问权限。
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。
重要

您可以手动将 Red Hat Ceph Storage 集群中的 Ceph 文件系统 (CephFS) 元数据服务器 (MDS) 软件同时升级到新的主版本。底层 XFS 文件系统必须格式化为支持 ftype=1d_type。运行 xfs_info /var 命令以确保 ftype 设置为 1。如果 ftype 的值不是 1,请附加新磁盘或创建卷。在此新设备之上,创建新的 XFS 文件系统并将其挂载到 /var/lib/containers

从 Red Hat Enterprise Linux 8 开始,mkfs.xfs 默认启用 ftype=1

2.2. RHCS 和 podman 版本间的兼容性注意事项

Podman 和 Red Hat Ceph Storage 具有不同的生命周期结束策略,这可能会导致查找兼容版本变得困难。

如果您计划从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8,作为 Ceph 升级过程的一部分,请确保 podman 的版本与 Red Hat Ceph Storage 5 兼容。

红帽建议,使用 Red Hat Ceph Storage 5 相关的 Red Hat Enterprise Linux 所附带的 podman 版本。如需了解更多详细信息,请参阅 Red Hat Ceph Storage: 支持的配置知识库文章。如需更多信息,请参阅 Red Hat Ceph Storage 故障排除指南中的联系红帽支持部分。

重要

Red Hat Ceph Storage 5 与 podman 2.0.0 及更新的版本兼容,但 2.2.1 版本除外。版本 2.2.1 与 Red Hat Ceph Storage 5 不兼容。

下表显示了 Red Hat Ceph Storage 5 和 podman 版本之间的版本兼容性。

Expand
CephPodman    
 

1.9

2.0

2.1

2.2

3.0

5.0 (Pacific)

false

true

true

false

true

2.3. 准备升级

作为存储管理员,您可以将 Ceph 存储集群升级到 Red Hat Ceph Storage 5。但是,在进行升级前,存储集群的一些组件必须运行特定的软件版本。以下列表显示在存储集群中安装的最低软件版本,然后才能升级到 Red Hat Ceph Storage 5。

  • Red Hat Ceph Storage 4.3 或更高版本。
  • Ansible 2.9.
  • 最新版本的 Red Hat Ceph Storage 提供的 ceph-ansible。
  • Red Hat Enterprise Linux 8.4 EUS 或更高版本。
  • FileStore OSD 必须迁移到 BlueStore。有关将 OSD 从 FileStore 转换为 BlueStore 的更多信息,请参阅 BlueStore

对于早于 Red Hat Ceph Storage 4.3 的 Red Hat Ceph Storage 版本,没有直接的升级路径。如果您要从 Red Hat Ceph Storage 3 升级,您必须首先升级到 Red Hat Ceph Storage 4.3 或更高版本,然后再升级到 Red Hat Ceph Storage 5。

重要

您只能升级到最新版本的 Red Hat Ceph Storage 5。例如,如果版本 5.1 可用,则无法从 4 升级到 5.0;您必须直接升级到 5.1。

重要

在 Red Hat Enterprise Linux-8.7 (或更高)上的 Red Hat Ceph Storage-4.3.z1 的新部署,或将 Red Hat Ceph Storage-4.3.z1 升级到 5.X,主机 OS 为 Red Hat Enterprise Linux-8.7 (或更高)在 TASK [ceph-mgr : : 等待所有 mgr 变为 up]。Red Hat Enterprise Linux 8.7 发布的 podman 的行为已根据 SELinux 重新标记而有所变化。因此,根据启动顺序,一些 Ceph 容器将无法启动,因为它们无法访问所需的文件。

作为临时解决方案,请参阅知识库文章 RHCS 4.3 安装失败,同时执行命令 'ceph mgr dump'

要将存储集群升级到 Red Hat Ceph Storage 5,红帽建议您集群运行 Red Hat Ceph Storage 4.3 或更高版本。请参阅知识库文章 Red Hat Ceph Storage 发行版本是什么?本文包含到 Ceph 软件包和 ceph-ansible 最新版本的下载链接。

升级过程使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。如果您的 Red Hat Ceph Storage 4 集群是一个非容器化集群,升级过程包括将集群转换为容器化版本的步骤。Red Hat Ceph Storage 5 不在非容器化集群中运行。

如果您有镜像或多站点配置,一次升级一个集群。在升级另一个集群前,请确保每个升级的集群都正常运行。

重要

leapp 不支持对具有加密分区的加密 OSD 或 OSD 进行升级。如果您的 OSD 已加密,并且您要升级主机操作系统,请在升级操作系统前在 ceph-ansible 中 禁用 dmcrypt。有关使用 leapp 的详情,请参考 从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8

重要

只有在存储集群尚未运行最新版本的 Red Hat Ceph Storage 4 时,才执行此流程中的前三个步骤。Red Hat Ceph Storage 4 的最新版本应该是 4.3 或更高版本。

先决条件

  • 正在运行的 Red Hat Ceph Storage 4 集群。
  • 对存储集群中所有节点的 sudo 级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  1. 在 Ansible 管理节点上启用 Ceph 和 Ansible 存储库:

    示例

    [root@admin ceph-ansible]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  2. 更新 Ansible:

    示例

    [root@admin ceph-ansible]# dnf update ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  3. 如果要升级的存储集群包含使用 exclusive-lock 功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有为客户端创建 denylist 的权限:

    语法

    ceph auth caps client.ID mon 'profile rbd' osd 'profile rbd pool=POOL_NAME_1, profile rbd pool=POOL_NAME_2'
    Copy to Clipboard Toggle word wrap

  4. 如果存储集群最初使用 Cockpit 安装,请在 /usr/share/ceph-ansible 目录中创建一个符号链接到 Cockpit 创建它的清单文件,位于 /usr/share/ansible-runner-service/inventory/hosts

    1. 进入 /usr/share/ceph-ansible 目录:

      # cd /usr/share/ceph-ansible
      Copy to Clipboard Toggle word wrap
    2. 创建符号链接:

      # ln -s /usr/share/ansible-runner-service/inventory/hosts hosts
      Copy to Clipboard Toggle word wrap
  5. 要使用 ceph-ansible 升级集群,请在 etc/ansible/hosts 目录中创建符号链接到 hosts 清单文件:

    # ln -s /etc/ansible/hosts hosts
    Copy to Clipboard Toggle word wrap
  6. 如果存储集群最初使用 Cockpit 安装,请将 Cockpit 生成的 SSH 密钥复制到 Ansible 用户的 ~/.ssh 目录中:

    1. 复制密钥:

      语法

      cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      cp /usr/share/ansible-runner-service/env/ssh_key /home/ANSIBLE_USERNAME/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

      ANSIBLE_USERNAME 替换为 Ansible 的用户名。常见的默认用户名是 admin

      示例

      # cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/admin/.ssh/id_rsa.pub
      # cp /usr/share/ansible-runner-service/env/ssh_key /home/admin/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

    2. 在密钥文件中设置适当的所有者、组群和权限:

      语法

      # chown ANSIBLE_USERNAME:ANSIBLE_USERNAME /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chown ANSIBLE_USERNAME:ANSIBLE_USERNAME /home/ANSIBLE_USERNAME/.ssh/id_rsa
      # chmod 644 /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chmod 600 /home/ANSIBLE_USERNAME/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

      ANSIBLE_USERNAME 替换为 Ansible 的用户名。常见的默认用户名是 admin

      示例

      # chown admin:admin /home/admin/.ssh/id_rsa.pub
      # chown admin:admin /home/admin/.ssh/id_rsa
      # chmod 644 /home/admin/.ssh/id_rsa.pub
      # chmod 600 /home/admin/.ssh/id_rsa
      Copy to Clipboard Toggle word wrap

2.4. 在主机操作系统升级前备份文件

注意

仅在升级主机操作系统时执行本节中的步骤。如果您没有升级主机操作系统,请跳过本节。

在执行升级步骤前,您必须备份您为存储集群自定义的文件副本,包括用于配置的密钥环文件和 yml 文件,因为执行任何 playbook 时 ceph.conf 文件会被覆盖。

先决条件

  • 正在运行的 Red Hat Ceph Storage 4 集群。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。
  • 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。

流程

  1. 生成 /etc/ceph/var/lib/ceph 文件夹的备份副本。
  2. 生成 ceph.client.admin.keyring 文件的备份副本。
  3. 备份每个节点中的 ceph.conf 文件副本。
  4. 在每个节点上制作 /etc/ganesha/ 文件夹的备份副本。
  5. 如果存储集群定义了 RBD 镜像功能,则生成 /etc/ceph 文件夹和 group_vars/rbdmirrors.yml 文件的备份副本。

2.5. 转换为容器化部署

非容器化集群需要这个过程。如果存储集群是一个非容器化集群,这个过程会将集群转换为容器化版本。

Red Hat Ceph Storage 5 仅支持基于容器的部署。在升级到 RHCS 5.x 之前,需要容器化集群。

如果您的 Red Hat Ceph Storage 4 存储集群已经容器化,请跳过本节。

重要

这个过程将停止并重启守护进程。如果 playbook 在此过程中停止执行,请务必在重启前分析集群的状态。

先决条件

  • 正在运行的 Red Hat Ceph Storage 非容器化 4 集群。
  • 对存储集群中所有节点的根级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 Ansible 用户帐户。

流程

  1. 如果您正在运行多站点设置,请在 all.yml 中设置 rgw_multisite: false
  2. 确保 group_vars/all.yml 具有以下配置参数默认值:

    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    ceph_docker_image: rhceph/rhceph-4-rhel8
    containerized_deployment: true
    Copy to Clipboard Toggle word wrap
    注意

    如果您使用本地 registry 和自定义镜像名称,这些值会有所不同。

  3. 可选:对于使用裸机存储集群中使用命令行界面配置的双向 RBD 镜像功能,集群不会迁移 RBD 镜像。对于这样的配置,请在将非容器化存储集群迁移到容器化部署前按照以下步骤操作:

    1. 在 Ceph 客户端节点上创建一个用户:

      语法

      ceph auth get client.PRIMARY_CLUSTER_NAME -o /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring
      Copy to Clipboard Toggle word wrap

      示例

      [root@rbd-client-site-a ~]# ceph auth get client.rbd-mirror.site-a -o /etc/ceph/ceph.client.rbd-mirror.site-a.keyring
      Copy to Clipboard Toggle word wrap

    2. 更改 /etc/ceph 目录中的 auth 文件中的用户名:

      示例

      [client.rbd-mirror.rbd-client-site-a]
          key = AQCbKbVg+E7POBAA7COSZCodvOrg2LWIFc9+3g==
          caps mds = "allow *"
          caps mgr = "allow *"
          caps mon = "allow *"
          caps osd = "allow *"
      Copy to Clipboard Toggle word wrap

    3. 导入 auth 文件以添加相关权限:

      语法

      ceph auth import -i PATH_TO_KEYRING
      Copy to Clipboard Toggle word wrap

      示例

      [root@rbd-client-site-a ~]# ceph auth import -i /etc/ceph/ceph.client.rbd-mirror.rbd-client-site-a.keyring
      Copy to Clipboard Toggle word wrap

    4. 检查 RBD 镜像节点的服务名称:

      示例

      [root@rbd-client-site-a ~]# systemctl list-units --all
      
      systemctl stop ceph-rbd-mirror@rbd-client-site-a.service
      systemctl disable ceph-rbd-mirror@rbd-client-site-a.service
      systemctl reset-failed ceph-rbd-mirror@rbd-client-site-a.service
      systemctl start ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      systemctl enable ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      systemctl status ceph-rbd-mirror@rbd-mirror.rbd-client-site-a.service
      Copy to Clipboard Toggle word wrap

    5. 将 rbd-mirror 节点添加到 /etc/ansible/hosts 文件中:

      示例

      [rbdmirrors]
      ceph.client.rbd-mirror.rbd-client-site-a
      Copy to Clipboard Toggle word wrap

  4. 如果您使用的守护进程不是容器化的,请将它们转换为容器化格式:

    语法

    ansible-playbook -vvvv -i INVENTORY_FILE infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
    Copy to Clipboard Toggle word wrap

    vvvv 选项收集转换过程的详细日志。

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv -i hosts infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
    Copy to Clipboard Toggle word wrap

  5. Playbook 成功完成后,编辑 all.yml 文件中的 rgw_multisite: true 的值,并确保 containerized_deployment 的值为 true

    注意

    确保从管理节点中删除 ceph-iscsilibtcmutcmu-runner 软件包。

2.6. 升级过程

作为存储管理员,您可以使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。rolling_update.yml Ansible playbook 为部署Red Hat Ceph Storage 执行升级。ceph-ansible 按照以下顺序升级 Ceph 节点:

  • Ceph monitor
  • Ceph Manager
  • Ceph OSD 节点
  • MDS 节点
  • Ceph 对象网关(RGW)节点
  • Ceph RBD-mirror 节点
  • Ceph NFS 节点
  • Ceph iSCSI 网关节点
  • Ceph 客户端节点
  • Ceph-crash 守护进程
  • 所有节点上的 node-exporter
  • Ceph 仪表板
重要

在存储集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 后,Grafana UI 会显示两个仪表板。这是因为 Red Hat Ceph Storage 4 中的 Prometheus 端口为 9092,而 Red Hat Ceph Storage 5 为 9095。您可以删除 grafana。cephadm 重新部署服务和守护进程,并在 Grafana UI 上删除旧的仪表板。

注意

Red Hat Ceph Storage 5 仅支持容器化部署。

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadm 来执行后续更新。

重要

若要部署具有单一域和多个域的多站点 Ceph 对象网关,请编辑 all.yml 文件。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的配置多站点 Ceph 对象网关

注意

Red Hat Ceph Storage 5 还包括一个健康检查功能,如果它检测到存储集群中的任何守护进程正在运行多个版本的 Red Hat Ceph Storage,它会返回 DAEMON_OLD_VERSION 警告。当守护进程继续运行多个版本的 Red Hat Ceph Storage 时,会触发警告,超过 mon_warn_older_version_delay 选项中设置的时间值。默认情况下,mon_warn_older_version_delay 选项设置为一周。此设置允许大多数升级进行,而不会看到警告。如果升级过程暂停了较长的时间,您可以屏蔽健康警告:

ceph health mute DAEMON_OLD_VERSION --sticky
Copy to Clipboard Toggle word wrap

升级完成后,取消健康警告:

ceph health unmute DAEMON_OLD_VERSION
Copy to Clipboard Toggle word wrap

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有主机的根级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • Red Hat Ceph Storage 5 提供的最新版本的 Ansible 和 ceph-ansible
  • 用于 Ansible 应用的 ansible 用户帐户。
  • 存储集群的节点已升级到 Red Hat Enterprise Linux 8.4 EUS 或更高版本。
重要

Ansible 清单文件必须位于 ceph-ansible 目录中。

流程

  1. 在 Ansible 管理节点上启用 Ceph 和 Ansible 存储库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  2. 在 Ansible 管理节点上,确保安装了最新版本的 ansibleceph-ansible 软件包。

    语法

    dnf update ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  3. 进入 /usr/share/ceph-ansible/ 目录:

    示例

    [root@admin ~]# cd /usr/share/ceph-ansible
    Copy to Clipboard Toggle word wrap

  4. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请分别将它们重命名为 group_vars/osds.yml.samplegroup_vars/clients.yml.sample 文件,并将它们重命名为 group_vars/osds.yml,并分别重命名为 group_vars/clients.yml

    示例

    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
    [root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
    Copy to Clipboard Toggle word wrap

  5. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请编辑 group_vars/all.yml 文件来添加 Red Hat Ceph Storage 5 详情。
  6. 完成上述两个步骤后,将旧 yaml 文件中的设置复制到新的 yaml 文件中。不要更改 ceph_rhcs_versionceph_docker_imagegrafana_container_image 的值,因为这些配置参数的值适用于 Red Hat Ceph Storage 5。这样可确保当前 yaml 文件中存在与集群相关的所有设置。

    示例

    fetch_directory: ~/ceph-ansible-keys
    monitor_interface: eth0
    public_network: 192.168.0.0/24
    ceph_docker_registry_auth: true
    ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
    ceph_docker_registry_password: TOKEN
    dashboard_admin_user: DASHBOARD_ADMIN_USERNAME
    dashboard_admin_password: DASHBOARD_ADMIN_PASSWORD
    grafana_admin_user: GRAFANA_ADMIN_USER
    grafana_admin_password: GRAFANA_ADMIN_PASSWORD
    radosgw_interface: eth0
    ceph_docker_image: "rhceph/rhceph-5-rhel8"
    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
    grafana_container_image: registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:5
    prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
    alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
    Copy to Clipboard Toggle word wrap

    注意

    确保将 Red Hat Ceph Storage 5 容器镜像设置为默认值。

  7. 编辑 group_vars/osds.yml 文件。添加并设置以下选项:

    语法

    nb_retry_wait_osd_up: 50
    delay_wait_osd_up: 30
    Copy to Clipboard Toggle word wrap

  8. 打开 group_vars/all.yml 文件,并验证旧的 all.yml 文件中是否存在以下值:

    1. 使用来自旧 all.yml 文件中的值相同的值设置 fetch_directory 选项:

      语法

      fetch_directory: FULL_DIRECTORY_PATH
      Copy to Clipboard Toggle word wrap

      FULL_DIRECTORY_PATH 替换为可写入位置,如 Ansible 用户的主目录。

    2. 如果要升级的集群包含任何 Ceph 对象网关节点,请添加 radosgw_interface 选项:

      radosgw_interface: INTERFACE
      Copy to Clipboard Toggle word wrap

      INTERFACE 替换为 Ceph 对象网关节点侦听的接口。

    3. 如果您的当前设置配置了 SSL 证书,请编辑以下内容:

      语法

      radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME
      radosgw_frontend_port: 443
      Copy to Clipboard Toggle word wrap

    4. 取消注释 upgrade_ceph_packages 选项并将其设置为 True

      语法

      upgrade_ceph_packages: True
      Copy to Clipboard Toggle word wrap

    5. 如果存储集群每个节点有多个 Ceph 对象网关实例,请取消注释 radosgw_num_instances 设置并将其设置为集群中每个节点的实例数量:

      语法

      radosgw_num_instances : NUMBER_OF_INSTANCES_PER_NODE
      Copy to Clipboard Toggle word wrap

      示例

      radosgw_num_instances : 2
      Copy to Clipboard Toggle word wrap

    6. 如果存储集群定义了 Ceph 对象网关多站点,请检查 all.yml 中的多站点设置,以确保它们包含与旧 all.yml 文件中相同的值。
  9. 如果创建存储桶或具有 num_shards = 0, 请在规划升级到 Red Hat Ceph Storage 5.3 前手动重新划分存储桶:

    警告

    bucket_index_max_shards0 时,从旧版本升级到 Red Hat Ceph Storage 5.3 可能会导致 Ceph 对象网关存储桶的元数据丢失,从而导致存储桶在尝试访问它时不可用。因此,请确保 bucket_index_max_shards 设置为 11 个分片。如果没有,在 zonegroup 级别修改此配置。

    语法

    radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
    Copy to Clipboard Toggle word wrap

  10. 在 Ansible 管理节点上,以 ansible-user 身份登录。
  11. 使用 --extra-vars 选项更新 infrastructure-playbooks/rolling_update.yml playbook,并将 health_osd_check_retrieshealth_osd_check_delay 值分别更改为 5030

    示例

    [root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"
    Copy to Clipboard Toggle word wrap

    对于每个 OSD 节点,这些值可使 ceph-ansible 每 30 秒检查存储集群运行状况,最多 50 次。这意味着 ceph-ansible 会等待每个 OSD 最多 25 分钟。

    根据存储集群的已用存储容量,调整 health_osd_check_retries 选项的值。例如,如果您使用了 436 TB 中的 218 TB(或 50% 的存储容量),则将 health_osd_check_retries 选项设置为 50

    /etc/ansible/hosts 是 Ansible 清单文件的默认位置。

  12. 运行 rolling_update.yml playbook,将存储集群从 Red Hat Ceph Storage 4 转换为 Red Hat Ceph Storage 5:

    语法

    ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i INVENTORY_FILE
    Copy to Clipboard Toggle word wrap

    vvvv 选项收集升级过程的详细日志。

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts
    Copy to Clipboard Toggle word wrap

    重要

    不支持将 --limit Ansible 选项与 rolling_update.yml playbook 搭配使用。

  13. 查看 Ansible playbook 日志输出,以验证升级的状态。

验证

  1. 列出所有正在运行的容器:

    示例

    [root@mon ~]# podman ps
    Copy to Clipboard Toggle word wrap

  2. 检查集群的健康状况。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph -s
    Copy to Clipboard Toggle word wrap

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph -s
    Copy to Clipboard Toggle word wrap

  3. 验证 Ceph 集群守护进程版本,以确认升级所有守护进程。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph --cluster ceph versions
    Copy to Clipboard Toggle word wrap

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph --cluster ceph versions
    Copy to Clipboard Toggle word wrap

2.7. 使用 cephadm将存储集群转换为

将存储集群升级到 Red Hat Ceph Storage 5 后,运行 cephadm-adopt playbook 以转换存储集群守护进程以运行 cephadm

cephadm-adopt playbook 采用 Ceph 服务,安装所有 cephadm 依赖项,启用 cephadm 编配器后端,在所有主机上生成和配置 ssh 密钥,并将主机添加到编配器配置中。

注意

运行 cephadm-adopt playbook 后,删除 ceph-ansible 软件包。集群守护进程不再可用于 ceph-ansible。您必须使用 cephadm 来管理集群守护进程。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有节点的根级别访问权限。

流程

  1. 登录 ceph-ansible 节点,再将目录更改为 /usr/share/ceph-ansible
  2. 编辑 all.yml 文件。

    语法

    ceph_origin: custom/rhcs
    ceph_custom_repositories:
      - name: NAME
        state: present
        description: DESCRIPTION
        gpgcheck: 'no'
        baseurl: BASE_URL
        file: FILE_NAME
        priority: '2'
        enabled: 1
    Copy to Clipboard Toggle word wrap

    示例

    ceph_origin: custom
    ceph_custom_repositories:
      - name: ceph_custom
        state: present
        description: Ceph custom repo
        gpgcheck: 'no'
        baseurl: https://example.ceph.redhat.com
        file: cephbuild
        priority: '2'
        enabled: 1
      - name: ceph_custom_1
        state: present
        description: Ceph custom repo 1
        gpgcheck: 'no'
        baseurl: https://example.ceph.redhat.com
        file: cephbuild_1
        priority: '2'
        enabled: 1
    Copy to Clipboard Toggle word wrap

  3. 运行 cephadm-adopt playbook:

    语法

    ansible-playbook infrastructure-playbooks/cephadm-adopt.yml -i INVENTORY_FILE
    Copy to Clipboard Toggle word wrap

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/cephadm-adopt.yml -i hosts
    Copy to Clipboard Toggle word wrap

  4. 将最小 compat 客户端参数设置为 luminous

    示例

    [ceph: root@node0 /]# ceph osd set-require-min-compat-client luminous
    Copy to Clipboard Toggle word wrap

  5. 运行以下命令,使应用在 NFS-Ganesha 池上运行:POOL_NAMEnfs-ganeshaAPPLICATION_NAME 是您要启用的应用的名称,如 cephfsrbdrgw

    语法

    ceph osd pool application enable POOL_NAME APPLICATION_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@node0 /]# ceph osd pool application enable nfs-ganesha rgw
    Copy to Clipboard Toggle word wrap

    重要

    在将存储集群从 Red Hat Ceph Storage 4 迁移到 Red Hat Ceph Storage 5 后,cephadm-adopt playbook 不会启动 rbd-mirror。

    要临时解决这个问题,请手动添加 peer:

    语法

    rbd mirror pool peer add POOL_NAME CLIENT_NAME@CLUSTER_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@node0 /]# rbd --cluster site-a mirror pool peer add image-pool client.rbd-mirror-peer@site-b
    Copy to Clipboard Toggle word wrap

  6. 升级后删除 Grafana:

    1. 登录到 Cephadm shell:

      示例

      [root@host01 ~]# cephadm shell
      Copy to Clipboard Toggle word wrap

    2. 在存储集群中获取 Grafana 的名称:

      示例

      [ceph: root@host01 /]# ceph orch ps --daemon_type grafana
      Copy to Clipboard Toggle word wrap

    3. 删除 Grafana:

      语法

      ceph orch daemon rm GRAFANA_DAEMON_NAME
      Copy to Clipboard Toggle word wrap

      示例

      [ceph: root@host01 /]# ceph orch daemon rm grafana.host01
      
      Removed grafana.host01 from host 'host01'
      Copy to Clipboard Toggle word wrap

    4. 等待几分钟并检查最新的日志:

      示例

      [ceph: root@host01 /]# ceph log last cephadm
      Copy to Clipboard Toggle word wrap

      cephadm 重新部署 Grafana 服务和守护进程。

2.8. 在升级的存储集群中安装 cephadm-ansible

cephadm-ansible 是 Ansible playbook 的集合,可简化由 cephadm 所涵盖的工作流。安装后,playbook 位于 /usr/share/cephadm-ansible/ 中。

注意

在将新节点或新客户端添加到升级的存储集群之前,请运行 cephadm-preflight.yml playbook。

先决条件

  • 对 Ansible 管理节点的根级别访问权限.
  • 具有适当权利的有效的红帽订阅.
  • 用于访问 Red Hat Registry 的有效红帽网络 (RHN) 或服务帐户。

流程

  1. 卸载 ansible 和旧的 ceph-ansible 软件包:

    语法

    dnf remove ansible ceph-ansible
    Copy to Clipboard Toggle word wrap

  2. 在 Ansible 管理节点上禁用 Ansible 存储库并启用 Ceph 存储库:

    Red Hat Enterprise Linux 8

    [root@admin ~]# subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms --enable=rhel-8-for-x86_64-appstream-rpms --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --disable=ansible-2.9-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    [root@admin ~]# subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms --enable=rhel-9-for-x86_64-appstream-rpms --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms --disable=ansible-2.9-for-rhel-9-x86_64-rpms
    Copy to Clipboard Toggle word wrap

  3. 安装 cephadm-ansible 软件包,该软件包将 ansible-core 作为依赖项安装:

    语法

    dnf install cephadm-ansible
    Copy to Clipboard Toggle word wrap

作为存储管理员,您可以使用 cephadm Orchestrator 升级 Red Hat Ceph Storage 5.0 及更高版本。

自动化升级流程遵循 Ceph 最佳实践。例如:

  • 升级顺序从 Ceph 管理器、Ceph 监控器开始,然后是其他守护进程。
  • 只有在 Ceph 指示集群可用后,每一守护进程才会重新启动。

存储集群健康状态可能会在升级过程中切换到 HEALTH_WARNING。升级完成后,健康状态应该切回到 HEALTH_OK。

支持直接从 Red Hat Ceph Storage 5 升级到 Red Hat Ceph Storage 7。

警告

在 Ceph Object Gateway 存储集群中(单站点或多站点)升级到 Red Hat Ceph Storage 5.2 被支持,但在升级您的存储集群前需要设置 ceph config set mgr mgr/cephadm/no_five_one_rgw true --force 选项。

如需更多信息,请参阅 Red Hat Ceph Storage 5.2 发行注记中的Red Hat Red Hat Ceph Storage 5.2 中的 RADOS Gateway (RGW) 升级支持限制已知问题部分。

注意

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadmcephadm-ansible 执行后续更新。

重要

Red Hat Enterprise Linux 9 及更新的版本不支持 cephadm-ansible playbook。

注意

升级成功后,您不会收到消息。运行 ceph versionsceph orch ps 命令,以验证新的镜像 ID 和存储集群的版本。

3.1. 升级 Red Hat Ceph Storage 集群

您可以使用 ceph orch upgrade 命令升级 Red Hat Ceph Storage 5.0 集群。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群 5。
  • Red Hat Enterprise Linux 8.4 EUS 或更高版本。
  • 所有节点的根级别访问权限。
  • 具有 sudo 的 Ansible 用户,对存储集群中所有节点的 ssh 访问和免密码访问。
  • 存储集群中至少有两个 Ceph 管理器节点:一个活跃节点和一个备用节点。
注意

Red Hat Ceph Storage 5 还包括一个健康检查功能,如果它检测到存储集群中的任何守护进程正在运行多个版本的 RHCS,它会返回 DAEMON_OLD_VERSION 警告。当守护进程继续运行多个版本的 Red Hat Ceph Storage 时,会触发警告,超过 mon_warn_older_version_delay 选项中设置的时间值。默认情况下,mon_warn_older_version_delay 选项设置为 1 周。此设置允许大多数升级进行,而不会看到警告。如果升级过程暂停了较长的时间,您可以屏蔽健康警告:

ceph health mute DAEMON_OLD_VERSION --sticky
Copy to Clipboard Toggle word wrap

升级完成后,取消健康警告:

ceph health unmute DAEMON_OLD_VERSION
Copy to Clipboard Toggle word wrap

流程

  1. 更新 cephadmcephadm-ansible 软件包:

    示例

    [root@admin ~]# dnf update cephadm
    [root@admin ~]# dnf update cephadm-ansible
    Copy to Clipboard Toggle word wrap

  2. 进入 /usr/share/cephadm-ansible/ 目录:

    示例

    [root@admin ~]# cd /usr/share/cephadm-ansible
    Copy to Clipboard Toggle word wrap

  3. 如果创建存储桶或具有 num_shards = 0, 请在规划升级到 Red Hat Ceph Storage 5.3 前手动重新划分存储桶:

    语法

    radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket
    Copy to Clipboard Toggle word wrap

  4. 在存储集群的 bootstrap 主机上,运行 preflight playbook,并将 upgrade_ceph_packages 参数设置为 true

    语法

    ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=rhcs upgrade_ceph_packages=true"
    Copy to Clipboard Toggle word wrap

    示例

    [ceph-admin@admin cephdm-ansible]$ ansible-playbook -i /etc/ansible/hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs upgrade_ceph_packages=true"
    Copy to Clipboard Toggle word wrap

    此软件包升级所有节点上的 cephadm

  5. 登录 cephadm shell:

    示例

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  6. 确定所有主机都在线,并且存储集群处于健康状态:

    示例

    [ceph: root@host01 /]# ceph -s
    Copy to Clipboard Toggle word wrap

  7. 设置 OSD nooutnoscrub、和 nodeep-scrub 标记,以防止 OSD 在升级过程中被标记为 out,并避免对集群造成不必要的负载:

    示例

    [ceph: root@host01 /]# ceph osd set noout
    [ceph: root@host01 /]# ceph osd set noscrub
    [ceph: root@host01 /]# ceph osd set nodeep-scrub
    Copy to Clipboard Toggle word wrap

  8. 检查服务版本和可用目标容器:

    语法

    ceph orch upgrade check IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade check registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

    注意

    镜像名称适用于 Red Hat Enterprise Linux 8 和 Red Hat Enterprise Linux 9。

  9. 升级存储集群:

    语法

    ceph orch upgrade start IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade start registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

    注意

    要执行交错升级,请参阅执行交错升级

    在升级过程中,ceph status 输出中会出现一个进度条。

    示例

    [ceph: root@host01 /]# ceph status
    [...]
    progress:
        Upgrade to 16.2.0-146.el8cp (1s)
          [............................]
    Copy to Clipboard Toggle word wrap

  10. 验证 Ceph 集群的新 IMAGE_IDVERSION

    示例

    [ceph: root@host01 /]# ceph versions
    [ceph: root@host01 /]# ceph orch ps
    Copy to Clipboard Toggle word wrap

    注意

    在升级 Ceph 集群后如果不使用 cephadm-ansible playbook,则必须升级客户端节点上的 ceph-common 软件包和客户端库。

    示例

    [root@client01 ~] dnf update ceph-common
    Copy to Clipboard Toggle word wrap

    验证您是否具有最新版本:

    示例

    [root@client01 ~] ceph --version
    Copy to Clipboard Toggle word wrap

  11. 升级完成后,取消设置 nooutnoscrubnodeep-scrub 标记:

    示例

    [ceph: root@host01 /]# ceph osd unset noout
    [ceph: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub
    Copy to Clipboard Toggle word wrap

您可以使用 --image 标签在断开连接的环境中升级存储集群。

您可以使用 ceph orch upgrade 命令升级 Red Hat Ceph Storage 5 集群。

重要

Red Hat Enterprise Linux 9 及更新的版本不支持 cephadm-ansible playbook。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群 5。
  • Red Hat Enterprise Linux 8.4 EUS 或更高版本。
  • 所有节点的根级别访问权限。
  • 具有 sudo 的 Ansible 用户,对存储集群中所有节点的 ssh 访问和免密码访问。
  • 存储集群中至少有两个 Ceph 管理器节点:一个活跃节点和一个备用节点。
  • 将节点注册到 CDN 并附加订阅。
  • 在断开连接的环境中检查客户容器镜像,并根据需要更改配置。如需了解更多详细信息,请参阅 Red Hat Ceph Storage 安装指南中的为断开连接的安装更改自定义容器镜像的配置

默认情况下,监控堆栈组件根据主 Ceph 镜像进行部署。对于存储集群的断开连接环境,您必须使用最新的监控堆栈组件镜像。

Expand
表 3.1. 监控堆栈的自定义镜像详情
监控堆栈组件Red Hat Ceph Storage 版本镜像详情

Prometheus

Red Hat Ceph Storage 5.0 和 5.1

registry.redhat.io/openshift4/ose-prometheus:v4.6

 

Red Hat Ceph Storage 5.2 开始

registry.redhat.io/openshift4/ose-prometheus:v4.10

Grafana

所有 Red Hat Ceph Storage 5 版本

registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:latest

Node-exporter

Red Hat Ceph Storage 5.0

registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.5

 

Red Hat Ceph Storage 5.0z1 and 5.1

registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6

 

Red Hat Ceph Storage 5.2 开始

registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.10

AlertManager

Red Hat Ceph Storage 5.0

registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.5

 

Red Hat Ceph Storage 5.0z1 and 5.1

registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6

 

Red Hat Ceph Storage 5.2 开始

registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.10

HAProxy

Red Hat Ceph Storage 5.1 以后

registry.redhat.io/rhceph/rhceph-haproxy-rhel8:latest

Keepalived

Red Hat Ceph Storage 5.1 以后

registry.redhat.io/rhceph/keepalived-rhel8:latest

SNMP Gateway

Red Hat Ceph Storage 5.0 以后

registry.redhat.io/rhceph/snmp-notifier-rhel8:latest

流程

  1. 更新 cephadmcephadm-ansible 软件包。

    示例

    [root@admin ~]# dnf update cephadm
    [root@admin ~]# dnf update cephadm-ansible
    Copy to Clipboard Toggle word wrap

  2. 运行 preflight playbook,将 upgrade_ceph_packages 参数设置为 true,在存储集群中 bootstrapped 主机上将 ceph_origin 参数设置为 custom

    语法

    ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=custom upgrade_ceph_packages=true"
    Copy to Clipboard Toggle word wrap

    示例

    [ceph-admin@admin ~]$ ansible-playbook -i /etc/ansible/hosts cephadm-preflight.yml --extra-vars "ceph_origin=custom upgrade_ceph_packages=true"
    Copy to Clipboard Toggle word wrap

    此软件包升级所有节点上的 cephadm

  3. 登录 cephadm shell:

    示例

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  4. 确定所有主机都在线,并且存储集群处于健康状态:

    示例

    [ceph: root@host01 /]# ceph -s
    Copy to Clipboard Toggle word wrap

  5. 设置 OSD nooutnoscrub、和 nodeep-scrub 标记,以防止 OSD 在升级过程中被标记为 out,并避免对集群造成不必要的负载:

    示例

    [ceph: root@host01 /]# ceph osd set noout
    [ceph: root@host01 /]# ceph osd set noscrub
    [ceph: root@host01 /]# ceph osd set nodeep-scrub
    Copy to Clipboard Toggle word wrap

  6. 检查服务版本和可用目标容器:

    语法

    ceph orch upgrade check IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade check LOCAL_NODE_FQDN:5000/rhceph/rhceph-5-rhel8
    Copy to Clipboard Toggle word wrap

  7. 升级存储集群:

    语法

    ceph orch upgrade start IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade start LOCAL_NODE_FQDN:5000/rhceph/rhceph-5-rhel8
    Copy to Clipboard Toggle word wrap

    在升级过程中,ceph status 输出中会出现一个进度条。

    示例

    [ceph: root@host01 /]# ceph status
    [...]
    progress:
        Upgrade to 16.2.0-115.el8cp (1s)
          [............................]
    Copy to Clipboard Toggle word wrap

  8. 验证 Ceph 集群的新 IMAGE_IDVERSION

    示例

    [ceph: root@host01 /]# ceph version
    [ceph: root@host01 /]# ceph versions
    [ceph: root@host01 /]# ceph orch ps
    Copy to Clipboard Toggle word wrap

  9. 升级完成后,取消设置 nooutnoscrubnodeep-scrub 标记:

    示例

    [ceph: root@host01 /]# ceph osd unset noout
    [ceph: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub
    Copy to Clipboard Toggle word wrap

3.3. 交错升级

作为存储管理员,您可以选择以阶段性的形式升级 Red Hat Ceph Storage 组件,而不是一次升级所有组件。从 Red Hat Ceph Storage 5.2 开始,您可以通过在ceph orch upgrade 命令中使用选项来限制要升级哪些守护进程。

注意

如果要从不支持交错升级的版本进行升级,您需要首先手动升级 Ceph Manager (ceph-mgr) 守护进程。有关从之前版本执行交错升级的更多信息,请参阅从之前版本进行升级

3.3.1. 交错升级选项

从 Red Hat Ceph Storage 5.2 开始,ceph orch upgrade 命令提供了几个选项来以阶段性的方式升级集群组件。交错升级选项包括:

  • --daemon_types: --daemon_types 选项使用以逗号分隔的守护进程类型列表,只升级这些类型的守护进程。此选项的有效守护进程类型包括 mgrmoncrashosdmdsrgwrbd-mirrorcephfs-mirroriscsinfs
  • --services--services 选项与 --daemon-types 相互排斥,每次只能使用其中一个选项,仅升级属于这些服务的守护进程。例如,您无法同时提供 OSD 和 RGW 服务。
  • --hosts :您可以将 --hosts 选项与 --daemon_types--services 结合使用,或者单独使用这个选项。--hosts 选项参数的格式与编配器 CLI 放置规格的命令行选项相同。
  • --limit--limit 选项使用一个大于零的整数,它提供了 cephadm 要升级的守护进程的数量限制。您可以将 --limit 选项与 --daemon_types--services--hosts 组合使用。例如,如果要升级 host01 上的类型为 osd 的守护进程,并将限制设置为 3,则 cephadm 将最多升级 host01 上的三个 OSD 守护进程。

3.3.2. 执行交错升级

作为存储管理员,您可以使用 ceph orch upgrade 选项来限制单个升级命令升级哪些守护进程。

Cephadm 严格强制实施在升级场景中仍然存在的守护进程升级的顺序。当前升级顺序是:

  • Ceph Manager 节点
  • Ceph 监控节点
  • Ceph-crash 守护进程
  • Ceph OSD 节点
  • Ceph 元数据服务器 (MDS) 节点
  • Ceph 对象网关(RGW)节点
  • Ceph RBD-mirror 节点
  • CephFS-mirror 节点
  • Ceph iSCSI 网关节点
  • Ceph NFS 节点
注意

如果您的参数所指定的守护进程升级没有遵循正常的顺序,则升级命令会阻止并记录在继续执行前需要先升级哪些守护进程。

示例

[ceph: root@host01 /]# ceph orch upgrade start --image  registry.redhat.io/rhceph/rhceph-5-rhel8:latest --hosts host02

Error EINVAL: Cannot start upgrade. Daemons with types earlier in upgrade order than daemons on given host need upgrading.
Please first upgrade mon.ceph-host01
NOTE: Enforced upgrade order is: mgr -> mon -> crash -> osd -> mds -> rgw -> rbd-mirror -> cephfs-mirror -> iscsi -> nfs
Copy to Clipboard Toggle word wrap

先决条件

  • 运行 Red Hat Ceph Storage 5.2 或更高版本的集群。
  • 所有节点的根级别访问权限。
  • 存储集群中至少有两个 Ceph 管理器节点:一个活跃节点和一个备用节点。

流程

  1. 登录 cephadm shell:

    示例

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 确定所有主机都在线,并且存储集群处于健康状态:

    示例

    [ceph: root@host01 /]# ceph -s
    Copy to Clipboard Toggle word wrap

  3. 设置 OSD nooutnoscrub、和 nodeep-scrub 标记,以防止 OSD 在升级过程中被标记为 out,并避免对集群造成不必要的负载:

    示例

    [ceph: root@host01 /]# ceph osd set noout
    [ceph: root@host01 /]# ceph osd set noscrub
    [ceph: root@host01 /]# ceph osd set nodeep-scrub
    Copy to Clipboard Toggle word wrap

  4. 检查服务版本和可用目标容器:

    语法

    ceph orch upgrade check IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade check registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

  5. 升级存储集群:

    1. 在特定主机上升级特定的守护进程类型:

      语法

      ceph orch upgrade start --image IMAGE_NAME --daemon-types DAEMON_TYPE1,DAEMON_TYPE2 --hosts HOST1,HOST2
      Copy to Clipboard Toggle word wrap

      示例

      [ceph: root@host01 /]# ceph orch upgrade start --image registry.redhat.io/rhceph/rhceph-5-rhel8:latest --daemon-types mgr,mon --hosts host02,host03
      Copy to Clipboard Toggle word wrap

    2. 指定特定的服务,并限制要升级的守护进程数量:

      语法

      ceph orch upgrade start --image IMAGE_NAME --services SERVICE1,SERVICE2 --limit LIMIT_NUMBER
      Copy to Clipboard Toggle word wrap

      示例

      [ceph: root@host01 /]# ceph orch upgrade start --image registry.redhat.io/rhceph/rhceph-5-rhel8:latest --services rgw.example1,rgw1.example2 --limit 2
      Copy to Clipboard Toggle word wrap

      注意

      在交错升级时,如果使用限制参数,则在升级 Ceph Manager 守护进程后会刷新监控堆栈守护进程(包括 Prometheus 和 node-exporter)。由于使用了限制参数,Ceph Manager 升级需要更长时间才能完成。监控堆栈守护进程的版本可能不会在 Ceph 发行版本之间有所变化,在这种情况下,它们只会重新部署。

      注意

      对参数进行限制的升级命令会验证开始升级前的选项,这样可能需要拉取新的容器镜像。因此,在您提供限制参数时,upgrade start 命令可能需要一段时间才能返回。

  6. 要查看您仍然需要升级的守护进程,请运行 ceph orch upgrade checkceph versions 命令:

    示例

    [ceph: root@host01 /]# ceph orch upgrade check --image registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

  7. 要完成交错升级,请验证所有剩余的服务的升级:

    语法

    ceph orch upgrade start --image IMAGE_NAME
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch upgrade start --image registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

  8. 升级完成后,取消设置 nooutnoscrubnodeep-scrub 标记:

    示例

    [ceph: root@host01 /]# ceph osd unset noout
    [ceph: root@host01 /]# ceph osd unset noscrub
    [ceph: root@host01 /]# ceph osd unset nodeep-scrub
    Copy to Clipboard Toggle word wrap

验证

  • 验证 Ceph 集群的新 IMAGE_IDVERSION

    示例

    [ceph: root@host01 /]# ceph versions
    [ceph: root@host01 /]# ceph orch ps
    Copy to Clipboard Toggle word wrap

3.3.3. 从之前的版本执行标签升级

从 Red Hat Ceph Storage 5.2 开始,您可以通过提供必要的参数,在存储集群上执行标签升级。如果要从不支持交错升级的版本进行升级,您需要首先手动升级 Ceph Manager (ceph-mgr) 守护进程。升级 Ceph Manager 守护进程后,您可以传递限制参数来完成提取升级。

重要

在尝试此步骤前,验证您至少有两个正在运行的 Ceph Manager 守护进程。

先决条件

  • 运行 Red Hat Ceph Storage 5.0 或更高版本的集群。
  • 存储集群中至少有两个 Ceph 管理器节点:一个活跃节点和一个备用节点。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 确定哪个 Ceph Manager 处于活跃状态且处于待机状态:

    示例

    [ceph: root@host01 /]# ceph -s
      cluster:
        id:     266ee7a8-2a05-11eb-b846-5254002d4916
        health: HEALTH_OK
    
    
      services:
        mon: 2 daemons, quorum host01,host02 (age 92s)
        mgr: host01.ndtpjh(active, since 16h), standbys: host02.pzgrhz
    Copy to Clipboard Toggle word wrap

  3. 手动升级每个备用 Ceph Manager 守护进程:

    语法

    ceph orch daemon redeploy mgr.ceph-HOST.MANAGER_ID --image IMAGE_ID
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph orch daemon redeploy mgr.ceph-host02.pzgrhz --image registry.redhat.io/rhceph/rhceph-5-rhel8:latest
    Copy to Clipboard Toggle word wrap

  4. 故障切换到升级的备用 Ceph Manager:

    示例

    [ceph: root@host01 /]# ceph mgr fail
    Copy to Clipboard Toggle word wrap

  5. 检查备用 Ceph Manager 现在是否活跃:

    示例

    [ceph: root@host01 /]# ceph -s
      cluster:
        id:     266ee7a8-2a05-11eb-b846-5254002d4916
        health: HEALTH_OK
    
    
      services:
        mon: 2 daemons, quorum host01,host02 (age 1h)
        mgr: host02.pzgrhz(active, since 25s), standbys: host01.ndtpjh
    Copy to Clipboard Toggle word wrap

  6. 验证活跃的 Ceph Manager 是否已升级到新版本:

    语法

    ceph tell mgr.ceph-HOST.MANAGER_ID version
    Copy to Clipboard Toggle word wrap

    示例

    [ceph: root@host01 /]# ceph tell mgr.host02.pzgrhz version
    {
        "version": "16.2.8-12.el8cp",
        "release": "pacific",
        "release_type": "stable"
    }
    Copy to Clipboard Toggle word wrap

  7. 重复步骤 2 - 6,将剩余的 Ceph Manager 升级到新版本。
  8. 检查所有 Ceph Manager 是否已升级到新版本:

    示例

    [ceph: root@host01 /]# ceph mgr versions
    {
        "ceph version 16.2.8-12.el8cp (600e227816517e2da53d85f2fab3cd40a7483372) pacific (stable)": 2
    }
    Copy to Clipboard Toggle word wrap

  9. 升级所有 Ceph Manager 后,您可以指定限制参数并完成交错升级的其余部分。

3.4. 监控和管理存储集群的升级

运行 ceph orch upgrade start 命令以升级 Red Hat Ceph Storage 集群后,您可以检查升级过程的状态、暂停、恢复或停止。集群的健康状态在升级过程中更改为 HEALTH_WARNING。如果集群的主机离线,升级将暂停。

注意

您需要在另一个守护进程后升级一个守护进程类型。如果无法升级守护进程,则会暂停升级。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群 5。
  • 所有节点的根级别访问权限。
  • 存储集群中至少有两个 Ceph 管理器节点:一个活跃节点和一个备用节点。
  • 启动了存储集群的升级。

流程

  1. 确定升级是否正在进行以及集群要升级到的版本:

    示例

    [ceph: root@node0 /]# ceph orch upgrade status
    Copy to Clipboard Toggle word wrap

    注意

    升级成功后,您不会收到消息。运行 ceph versionsceph orch ps 命令,以验证新的镜像 ID 和存储集群的版本。

  2. 可选:暂停升级过程:

    示例

    [ceph: root@node0 /]# ceph orch upgrade pause
    Copy to Clipboard Toggle word wrap

  3. 可选:恢复暂停的升级过程:

    示例

    [ceph: root@node0 /]# ceph orch upgrade resume
    Copy to Clipboard Toggle word wrap

  4. 可选:停止升级过程:

    示例

    [ceph: root@node0 /]# ceph orch upgrade stop
    Copy to Clipboard Toggle word wrap

3.5. 升级错误消息故障排除

下表显示了一些 cephadm 升级错误消息:如果 cephadm 升级因任何原因失败,存储集群健康状态中会出现错误消息。

Expand
错误消息描述

UPGRADE_NO_STANDBY_MGR

Ceph 需要活跃和备用管理器守护进程才能继续,但目前没有待机。

UPGRADE_FAILED_PULL

Ceph 无法拉取目标版本的容器镜像。如果您指定不存在的版本或容器镜像(如 1.2.3),或者无法从集群中的一个或多个主机访问容器 registry,则会出现此情况。

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat