1.3. 替换集群资源


heketi 支持替换设备和节点。在以下部分中提供了替换设备和节点的步骤。

1.3.1. 替换设备

heketi 不允许使用另一个设备进行一对一替换。但是,如果设备失败,请按照以下示例了解替换失败设备所需的操作顺序。

  1. 使用以下命令查找失败的设备:

    # heketi-cli topology info
    …
    …
    ...
        Nodes:
    Node Id: 8faade64a9c8669de204b66bc083b10d
    ...
    ...
    …
                    Id:a811261864ee190941b17c72809a5001   Name:/dev/vdc            State:online    Size (GiB):499     Used (GiB):281     Free (GiB):218
                            Bricks:
                                    Id:34c14120bef5621f287951bcdfa774fc   Size (GiB):280     Path: /var/lib/heketi/mounts/vg_a811261864ee190941b17c72809a5001/brick_34c14120bef5621f287951bcdfa774fc/brick
    …
    …
    ...

    以下示例说明了替换故障设备所需的操作序列。这个示例使用设备 ID a811261864ee190941b17c72809a5001,它属于 ID 8faade64a9c8669de204b66bc083b10das

  2. 在与被替换设备相同的节点添加新设备。

    # heketi-cli device add --name /dev/vdd --node 8faade64a9c8669de204b66bc083b10d
    Device added successfully
  3. 禁用失败的设备。

    # heketi-cli device disable a811261864ee190941b17c72809a5001
    Device a811261864ee190941b17c72809a5001 is now offline
  4. 删除失败的设备。

    # heketi-cli device remove a811261864ee190941b17c72809a5001
    Device a811261864ee190941b17c72809a5001 is now removed

    在这个阶段,brick 从失败的设备迁移。他基于 brick 分配算法选择合适的设备。因此,可能所有 brick 不能迁移到新添加的设备。

  5. 删除失败的设备。

    1. 使用以下命令删除该设备:

      # heketi-cli device delete a811261864ee190941b17c72809a5001
      Device a811261864ee190941b17c72809a5001 deleted
      注意
      • 您可以使用 --force-forget 选项以及 Heketi-cli 设备删除 <device-ID> 命令来删除失败的设备。但是,建议仅在 device delete 命令失败时使用这个选项。
      • 您必须确定该设备已被移除,或者系统在 heketi 之外的干净使用系统命令,然后仅使用 --force-forget 选项。
    2. 必须禁用 performance.read-ahead 选项,以允许修复完成。

      # gluster volume set <VOLUME> performance.read-ahead off
      注意

      performance.read-ahead 选项设置为 OFF,直到完成对卷的修复任务为止,一旦修复完成,则将其设置回为 ON 状态的默认状态。

    3. 如果超过 100,000 个条目需要修复,则必须启动额外的 shd。有关如何启动其他自我修复守护进程的详情,请参考 https://access.redhat.com/solutions/3794011
  6. 在另一个设备上重复上述步骤序列之前,您必须等待自我修复操作完成。当条目值的数目返回 0 时,您可以验证自我修复操作是否已完成。

    # oc rsh <any_gluster_pod_name>
    for each in $(gluster volume list) ; do gluster vol heal $each info | grep "Number of entries:" ; done
    Number of entries: 0
    Number of entries: 0
    Number of entries: 0
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部