8.7. 手动升级 Ceph 文件系统元数据服务器节点及其操作系统

您可以手动将 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 版本 3.3z6 或 4.1。
  • 访问 Red Hat Enterprise Linux 8.3 的安装源。
  • 对存储集群中所有节点的根级别访问权限。
重要

底层 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. 将活跃 MDS 的数量减少到 1:

    语法

    ceph fs set FILE_SYSTEM_NAME max_mds 1

    示例

    [root@mds ~]# ceph fs set fs1 max_mds 1

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

    [root@mds ~]# ceph status
  3. 使用 systemctl 关闭所有备用 MDS:

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

    [root@mds ~]# ceph status
  5. 为操作系统版本禁用工具存储库:

    1. 如果您要从 RHEL 7 上的 Red Hat Ceph Storage 3 升级,请禁用 Red Hat Ceph Storage 3 工具存储库:

      [root@mds ~]# subscription-manager repos --disable=rhel-7-server-rhceph-3-tools-rpms
    2. 如果您使用 Red Hat Ceph Storage 4,请禁用 Red Hat Ceph Storage 4 工具存储库:

      [root@mds ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
  6. 安装 leapp 实用程序。有关 leapp 的详情,请参考从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8
  7. 通过 leapp 预升级检查运行。如需更多信息,请参阅从命令行评估可升级性
  8. 编辑 /etc/ssh/sshd_config,并将 PermitRootLogin 设置为 yes
  9. 重启 OpenSSH SSH 守护进程:

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

    [root@mds ~]# modprobe -r iscsi
  11. 执行升级。请参阅执行从 RHEL 7 升级到 RHEL 8
  12. 重新引导 MDS 节点。
  13. 为 Red Hat Enterprise Linux 8 启用 Red Hat Ceph Storage 4 的工具仓库:

    [root@mds ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
  14. 安装 ceph-mds 软件包:

    [root@mds ~]# dnf install ceph-mds -y
  15. 可选:安装在此节点上并置的任何 Ceph 服务的软件包。如果需要,启用额外的 Ceph 存储库。
  16. 可选:安装其他 Ceph 服务需要的 leveldb 软件包:

    [root@mds ~]# dnf install leveldb
  17. 从尚未升级的节点或已经恢复这些文件的节点恢复 ceph-client-admin.keyring 和 ceph.conf 文件。
  18. 将任何现有的 CRUSH bucket 切换到最新的 bucket 类型 straw2

    # ceph osd getcrushmap -o backup-crushmap
    # ceph osd crush set-all-straw-buckets-to-straw2
  19. 启动 MDS 服务:

    [root@mds ~]# systemctl restart ceph-mds.target
  20. 验证守护进程是否活跃:

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

    语法

    ceph fs set FILE_SYSTEM_NAME max_mds ORIGINAL_VALUE

    示例

    [root@mds ~]# ceph fs set fs1 max_mds 5