5.4. 使用并置 Ceph 监控器恢复 undercloud 和 control plane 节点


如果在更新或升级过程中发生错误,您可以使用 ReaR 备份将 undercloud 或 overcloud control plane 节点或两者恢复到之前的状态。

前提条件

流程

  1. 在备份节点上,导出 NFS 目录以托管 Ceph 备份。将 <IP_ADDRESS/24 > 替换为网络的 IP 地址和子网掩码:

    [root@backup ~]# cat >> /etc/exports << EOF
    /ceph_backups <IP_ADDRESS/24>(rw,sync,no_root_squash,no_subtree_check)
    EOF
    Copy to Clipboard Toggle word wrap
  2. 在 undercloud 节点上,提供 undercloud 凭证并运行以下脚本:

    # source stackrc
    Copy to Clipboard Toggle word wrap
    #! /bin/bash
    for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo systemctl stop ceph-mon@$(hostname -s) ceph-mgr@$(hostname -s)'; done
    Copy to Clipboard Toggle word wrap

    要验证 ceph-mgr@controller.service 容器是否已停止,请输入以下命令:

    [heat-admin@overcloud-controller-x ~]# sudo docker ps | grep ceph
    Copy to Clipboard Toggle word wrap
  3. 在 undercloud 节点上,提供 undercloud 凭证并运行以下脚本:

    # source stackrc
    Copy to Clipboard Toggle word wrap
    #! /bin/bash
    for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mkdir /ceph_backups'; done
    
    #! /bin/bash
    for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mount -t nfs  <BACKUP_NODE_IP_ADDRESS>:/ceph_backups /ceph_backups'; done
    
    #! /bin/bash
    for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo mkdir /ceph_backups/$(hostname -s)'; done
    
    #! /bin/bash
    for i in `openstack server list -c Name -c Networks -f value | grep controller | awk -F'=' '{print $2}' | awk -F' ' '{print $1}'`; do ssh -q heat-admin@$i 'sudo tar -zcv --xattrs-include=*.* --xattrs  --xattrs-include=security.capability --xattrs-include=security.selinux --acls -f /ceph_backups/$(hostname -s)/$(hostname -s).tar.gz  /var/lib/ceph'; done
    Copy to Clipboard Toggle word wrap
  4. 在您要恢复的节点上完成以下任务:

    1. 在继续操作前关闭该节点。
    2. 使用您在备份过程中创建的 ReaR 备份文件恢复节点。该文件位于备份节点的 /ceph_backups 目录中。
    3. Relax-and-Recover boot 菜单中,选择 Recover <CONTROL_PLANE_NODE&gt;,其中 < CONTROL_PLANE_NODE > 是 control plane 节点的名称。
    4. 在提示符处输入以下命令:

      RESCUE <CONTROL_PLANE_NODE> :~ # rear recover
      Copy to Clipboard Toggle word wrap

      镜像恢复过程完成后,控制台会显示以下信息:

    Finished recovering your system
    Exiting rear recover
    Running exit tasks
    Copy to Clipboard Toggle word wrap
  5. 对于您要恢复的节点,将 /ceph_backups 目录中的 Ceph 备份复制到 /var/lib/ceph 目录中:

    1. 确定系统挂载点:

      RESCUE <CONTROL_PLANE_NODE>:~# df -h
      Filesystem      Size  Used Avail Use% Mounted on
      devtmpfs         16G     0   16G   0% /dev
      tmpfs            16G     0   16G   0% /dev/shm
      tmpfs            16G  8.4M   16G   1% /run
      tmpfs            16G     0   16G   0% /sys/fs/cgroup
      /dev/vda2        30G   13G   18G  41% /mnt/local
      Copy to Clipboard Toggle word wrap

      /dev/vda2 文件系统被挂载到 /mnt/local 上。

    2. 创建临时目录:

      RESCUE <CONTROL_PLANE_NODE>:~ # mkdir /tmp/restore
      RESCUE <CONTROL_PLANE_NODE>:~ # mount -v -t nfs -o rw,noatime <BACKUP_NODE_IP_ADDRESS>:/ceph_backups /tmp/restore/
      Copy to Clipboard Toggle word wrap
    3. 在 control plane 节点上,删除现有 /var/lib/ceph 目录:

      RESCUE <CONTROL_PLANE_NODE>:~ # rm -rf /mnt/local/var/lib/ceph/*
      Copy to Clipboard Toggle word wrap
    4. 恢复前面的 Ceph 映射。将 <CONTROL_PLANE_NODE > 替换为 control plane 节点的名称:

      RESCUE <CONTROL_PLANE_NODE>:~ # tar -xvC /mnt/local/ -f /tmp/restore/<CONTROL_PLANE_NODE>/<CONTROL_PLANE_NODE>.tar.gz --xattrs --xattrs-include='*.*' var/lib/ceph
      Copy to Clipboard Toggle word wrap
    5. 验证文件是否已恢复:

      RESCUE <CONTROL_PLANE_NODE>:~ # ls -l
      total 0
      drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-mds
      drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-osd
      drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-rbd
      drwxr-xr-x 2 root 107 26 Jun 18 18:52 bootstrap-rgw
      drwxr-xr-x 3 root 107 31 Jun 18 18:52 mds
      drwxr-xr-x 3 root 107 31 Jun 18 18:52 mgr
      drwxr-xr-x 3 root 107 31 Jun 18 18:52 mon
      drwxr-xr-x 2 root 107  6 Jun 18 18:52 osd
      drwxr-xr-x 3 root 107 35 Jun 18 18:52 radosgw
      drwxr-xr-x 2 root 107  6 Jun 18 18:52 tmp
      Copy to Clipboard Toggle word wrap
  6. 关闭节点:

    RESCUE <CONTROL_PLANE_NODE> :~ #  poweroff
    Copy to Clipboard Toggle word wrap
  7. 打开节点。节点恢复之前的状态。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat