Ceph入门到精通-使用 Ceph 编排器管理 OSD

第6章.使用 Ceph 编排器管理 OSD

作为存储管理员,您可以使用 Ceph 编排器来管理红帽 Ceph 存储集群的 OSD。

6.1. Ceph OSD

当红帽 Ceph 存储集群启动并运行时,您可以在运行时将 OSD 添加到存储集群。

Ceph OSD 通常由一个存储驱动器的一个守护进程及其节点中的关联日志组成。如果节点有多个存储驱动器,则为每个驱动器映射一个守护程序。ceph-osdceph-osd

红帽建议定期检查集群的容量,以查看其是否达到其存储容量的上限。当存储集群达到其比率时,添加一个或多个 OSD 以扩展存储集群的容量。near full

如果要减小红帽 Ceph 存储集群的大小或更换硬件,还可以在运行时移除 OSD。如果节点具有多个存储驱动器,则可能还需要删除该驱动器的守护程序之一。通常,最好检查存储集群的容量,以查看是否达到其容量的上限。确保在移除 OSD 时存储集群未达到其比率。ceph-osdnear full

重要

在添加 OSD 之前,请勿让存储集群达到该比率。存储集群达到该比率后发生的 OSD 故障可能会导致存储集群超过该比率。Ceph 会阻止写入访问以保护数据,直到您解决存储容量问题。不要在没有先考虑对比率的影响的情况下删除 OSD。fullnear fullfullfull

6.2. Ceph OSD 节点配置

将 Ceph OSD 及其支持硬件配置为将使用 OSD 的池的存储策略。Ceph 更喜欢跨池使用统一的硬件,以获得一致的性能配置文件。为了获得最佳性能,请考虑具有相同类型或大小的驱动器的 CRUSH 层次结构。

如果添加不同大小的驱动器,请相应地调整其权重。将 OSD 添加到 CRUSH 映射时,请考虑新 OSD 的权重。硬盘容量每年增长约 40%,因此较新的 OSD 节点可能比存储集群中的旧节点具有更大的硬盘驱动器,也就是说,它们可能具有更大的权重。

在进行新安装之前,请查看《安装指南》中的安装红帽 Ceph 存储的要求一章。

6.3. 自动调整 OSD 内存

OSD 守护程序根据配置选项调整内存消耗。该选项根据系统中的可用 RAM 设置 OSD 内存。osd_memory_targetosd_memory_target

如果红帽 Ceph 存储部署在不与其他服务共享内存的专用节点上, 会根据 RAM 总量和部署的 OSD 数量自动调整每个 OSD 的消耗量。cephadm

重要

默认情况下,该参数在红帽 Ceph 存储 5.1 中设置为。osd_memory_target_autotunetrue

语法

<span style="background-color:#f8f8f8"><span style="color:#151515">ceph config set osd osd_memory_target_autotune true</span></span>

将存储集群升级到红帽 Ceph 存储 5.0 后,对于集群维护(例如添加 OSD 或更换 OSD),红帽建议将参数设置为 根据系统内存自动调整 osd 内存。osd_memory_target_autotunetrue

Cephadm 以分数开头,默认为系统中的总 RAM,减去非自动调整守护程序(如非 OSD)和 OSD 为 false 消耗的任何内存,然后除以剩余的 OSD。mgr/cephadm/autotune_memory_target_ratio0.7osd_memory_target_autotune

默认情况下,对于超融合基础架构为 0.2,对于其他环境为 0.7。autotune_memory_target_ratio

参数计算如下:osd_memory_target

语法

<span style="background-color:#f8f8f8"><span style="color:#151515">osd_memory_target = <em>TOTAL_RAM_OF_THE_OSD_NODE</em> (in Bytes) * (autotune_memory_target_ratio) / <em>NUMBER_OF_OSDS_IN_THE_OSD_NODE</em> - (<em>SPACE_ALLOCATED_FOR_OTHER_DAEMONS</em> (in Bytes))</span></span>

SPACE_ALLOCATED_FOR_OTHER_DAEMONS可以选择包括以下守护程序空间分配:

  • 警报管理器:1 GB
  • 格拉法纳: 1 GB
  • Ceph 管理器:4 GB
  • Ceph 监视器:2 GB
  • 节点导出器:1 GB
  • 普罗米修斯: 1 GB

例如,如果节点有 24 个 OSD 并具有 251 GB RAM 空间,则为 。osd_memory_target7860684936

最终目标反映在带有选项的配置数据库中。您可以从“下”列下的输出中查看每个守护程序消耗的限制和当前内存。ceph orch psMEM LIMIT

注意

在红帽 Ceph 存储 5.1 中,默认设置 不适用于计算和 Ceph 存储服务共存的超融合基础架构。在超融合基础架构中,可以设置为 以减少 Ceph 的内存消耗。osd_memory_target_autotunetrueautotune_memory_target_ratio0.2

<span style="background-color:#f4f4f4"><span style="color:#151515"><span style="background-color:#ffffff"><span style="color:#151515">[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2</span></span></span></span>

您可以手动为存储集群中的 OSD 设置特定的内存目标。

<span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 7860684936</span></span>

您可以手动为存储集群中的 OSD 主机设置特定的内存目标。

语法

<span style="background-color:#f8f8f8"><span style="color:#151515">ceph config set osd/host:<em>HOSTNAME</em> osd_memory_target <em>TARGET_BYTES</em></span></span>

<span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph config set osd/host:host01 osd_memory_target 1000000000</span></span>
注意

启用将覆盖现有的手动 OSD 内存目标设置。要防止在启用该选项或其他类似选项的情况下调整守护程序内存,请在主机上设置标签。osd_memory_target_autotuneosd_memory_target_autotune_no_autotune_memory

语法

<span style="background-color:#f4f4f4"><span style="color:#151515"><span style="background-color:#ffffff"><span style="color:#151515">ceph orch host label add <em>HOSTNAME</em> _no_autotune_memory</span></span></span></span>

您可以通过禁用自动调谐选项并设置特定内存目标,从内存自动整定中排除 OSD。

<span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target_autotune false
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 16G</span></span>

6.4. 列出用于 Ceph OSD 部署的设备

在使用 Ceph 编排器部署 OSD 之前,您可以查看可用设备列表。这些命令用于打印 Cephadm 可发现的设备列表。如果满足以下所有条件,则认为存储设备可用:

  • 设备不得有分区。
  • 设备不得具有任何 LVM 状态。
  • 不得安装设备。
  • 设备不得包含文件系统。
  • 设备不得包含 Ceph BlueStore OSD。
  • 设备必须大于 5 GB。
注意

Ceph 不会在不可用的设备上预置 OSD。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 部署所有管理器和监视器守护程序。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 列出可用于部署 OSD 的设备:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch device ls [--hostname=<em>HOSTNAME_1</em> <em>HOSTNAME_2</em>] [--wide] [--refresh]</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls --wide --refresh</span></span>

    使用该选项可提供与设备相关的所有详细信息,包括设备可能不符合用作 OSD 条件的任何原因。此选项不支持 NVMe 设备。--wide

  3. 可选:要在 的输出中启用运行状况标识故障字段,请运行以下命令:ceph orch device ls

    注意

    这些字段受库支持,目前支持 SCSI、SAS 和 SATA 设备。libstoragemgmt

    1. 作为 Cephadm shell 之外的 root 用户,请检查硬件与库的兼容性,以避免服务意外中断:libstoragemgmt

      <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell lsmcli ldl</span></span>

      在输出中,您会看到运行状况“良好”,并具有相应的 SCSI VPD 0x83 ID。

      注意

      如果未获得此信息,则启用这些字段可能会导致设备行为不稳定。

    2. 重新登录 Cephadm shell 并启用支持:libstoragemgmt

      <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell
      [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/device_enhanced_scan true</span></span>

      启用此功能后,将“运行状况”字段的输出显示为“良好”。ceph orch device ls

验证

  • 列出设备:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls</span></span>

6.5. 用于 Ceph OSD 部署的设备

在部署 OSD 之前,您需要检查可用设备的列表。如果设备上没有可用空间,您可以通过对设备进行电击来清除设备上的数据。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 部署所有管理器和监视器守护程序。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 列出可用于部署 OSD 的设备:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch device ls [--hostname=<em>HOSTNAME_1</em> <em>HOSTNAME_2</em>] [--wide] [--refresh]</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls --wide --refresh</span></span>
  3. 清除设备的数据:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch device zap <em>HOSTNAME</em> <em>FILE_PATH</em> --force</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device zap host02 /dev/sdb --force</span></span>

验证

  • 验证设备上的空间是否可用:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls</span></span>

    您将看到“可用”下的字段为“是”。

其他资源

  • 有关更多信息,请参阅《红帽 Ceph 存储操作指南》中的列出用于 Ceph OSD 部署的设备部分。

6.6. 在所有可用设备上部署 Ceph OSD

您可以在所有可用设备上部署所有 OSDS。Cephadm 允许 Ceph 编排器在任何可用和未使用的存储设备上发现和部署 OSD。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 部署所有管理器和监视器守护程序。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 列出可用于部署 OSD 的设备:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch device ls [--hostname=<em>HOSTNAME_1</em> <em>HOSTNAME_2</em>] [--wide] [--refresh]</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls --wide --refresh</span></span>
  3. 在所有可用设备上部署 OSD:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch apply osd --all-available-devices</span></span>

    的影响是持久的,这意味着业务流程协调程序会自动查找设备,将其添加到集群,并创建新的 OSD。这在以下情况下发生:ceph orch apply

    • 新磁盘或驱动器将添加到系统中。
    • 现有磁盘或驱动器已销毁。
    • 将删除 OSD 并销毁设备。

      您可以使用该参数禁用在所有可用设备上自动创建 OSD。--unmanaged

      <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true</span></span>

      将参数设置为 将禁用 OSD 的创建,并且如果应用新的 OSD 服务,也不会发生任何更改。--unmanagedtrue

      注意

      该命令创建新的 OSD,但不添加 OSD 服务。ceph orch daemon add

验证

  • 列出服务:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ls</span></span>
  • 查看节点和设备的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>

其他资源

6.7. 在特定设备和主机上部署 Ceph OSD

您可以使用 Ceph 编排器在特定设备和主机上部署所有 Ceph OSD。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 部署所有管理器和监视器守护程序。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 列出可用于部署 OSD 的设备:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch device ls [--hostname=<em>HOSTNAME_1</em> <em>HOSTNAME_2</em>] [--wide] [--refresh]</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch device ls --wide --refresh</span></span>
  3. 在特定设备和主机上部署 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch daemon add osd <em>HOSTNAME</em>:<em>DEVICE_PATH</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb</span></span>

    要在没有 LVM 层的原始物理设备上部署 ODS,请使用该选项。--method raw

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch daemon add osd --method raw <em>HOSTNAME</em>:<em>DEVICE_PATH</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch daemon add osd --method raw host02:/dev/sdb</span></span>
    注意

    如果您有单独的数据库或 WAL 设备,则块与数据库或 WAL 设备的比例必须为 1:1。

验证

  • 列出服务:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ls osd</span></span>
  • 查看节点和设备的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>
  • 列出主机、守护程序和进程:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch ps --service_name=<em>SERVICE_NAME</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ps --service_name=osd</span></span>

其他资源

6.8. 用于部署 OSD 的高级服务规范和过滤器

OSD 类型的服务规范是一种使用磁盘属性描述群集布局的方法。它为用户提供了一种抽象的方式来告诉 Ceph 哪些磁盘应该转换为具有所需配置的 OSD,而无需知道设备名称和路径的细节。对于每个设备和每个主机,定义一个文件或文件。yamljson

OSD 规范的常规设置

  • service_type:“osd”:这是创建 OSDS 所必需的
  • service_id:使用您喜欢的服务名称或标识。使用规范文件创建一组 OSD。此名称用于一起管理所有 OSD,并表示业务流程协调程序服务。
  • 放置:用于定义需要部署 OSD 的主机。

    您可以使用以下选项:

    • host_pattern:“*” - 用于选择主机的主机名模式。
    • label:“osd_host” - 需要部署 OSD 的主机中使用的标签。
    • hosts:“host01”、“host02” - 需要部署 OSD 的主机名的显式列表。
  • 设备选择:创建 OSD 的设备。这允许将 OSD 与不同的设备分开。您只能创建具有三个组件的 BlueStore OSD:

    • OSD 数据:包含所有 OSD 数据
    • WAL:BlueStore 内部日志或预写日志
    • DB:BlueStore 内部元数据
  • data_devices:定义要部署 OSD 的设备。在这种情况下,OSD 是在并置架构中创建的。您可以使用过滤器来选择设备和文件夹。
  • wal_devices:定义用于 WAL OSD 的设备。您可以使用过滤器来选择设备和文件夹。
  • db_devices:定义数据库 OSD 的设备。您可以使用过滤器选择设备和文件夹。
  • 加密:用于加密 OSD 上信息的可选参数,可以设置为 或TrueFalse
  • 非托管:可选参数,默认设置为 False。如果不希望业务流程协调程序管理 OSD 服务,则可以将其设置为 True。
  • block_wal_size:用户定义的值,以字节为单位。
  • block_db_size:用户定义的值,以字节为单位。
  • osds_per_device:用户定义的值,用于为每个设备部署多个 OSD。
  • method:一个可选参数,用于指定是否使用 LVM 层创建 OSD。如果要在不包含 LVM 层的原始物理设备上创建 OSD,请设置为 。如果您有单独的数据库或 WAL 设备,则块与数据库或 WAL 设备的比例必须为 1:1。raw

用于指定设备的筛选器

筛选器与 和 参数结合使用。data_deviceswal_devicesdb_devices

筛选器的名称

描述

语法

以特定磁盘为目标。您可以通过运行命令或lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MODELsmartctl -i /DEVIVE_PATH

型号: DISK_MODEL_NAME

型号: MC-55-44-XZ

供应商

以特定磁盘为目标

供应商: DISK_VENDOR_NAME

供应商:供应商 C

尺寸规格

包括确切大小的磁盘

尺寸:精确

尺寸:“10G”

尺寸规格

包括磁盘大小在范围内

尺寸:低:高

尺寸: “10G:40G”

尺寸规格

包括小于或等于大小的磁盘

尺寸: :高

尺寸: “:10G”

尺寸规格

包括等于或大于大小的磁盘

尺寸: 低:

尺寸: “40G:””

旋转

磁盘的旋转属性。1 匹配所有旋转磁盘,0 匹配所有非旋转磁盘。如果旋转 =0,则 OSD 配置为 SSD 或 NVME。如果旋转=1,则 OSD 配置了硬盘。

旋转:0 或 1

旋转: 0

考虑所有可用磁盘

全部:真

全部:真

限幅器

当您指定了有效的过滤器但想要限制匹配磁盘的数量时,可以使用“limit”指令。它只能作为最后的手段使用。

限制:数字

限制: 2

注意

要在同一主机中创建具有非并置组件的 OSD,您必须指定所使用的不同类型的设备,并且这些设备应位于同一主机上。

注意

用于部署 OSD 的设备必须受 支持。libstoragemgmt

其他资源

6.9. 使用高级服务规范部署 Ceph OSD

OSD 类型的服务规范是一种使用磁盘属性描述群集布局的方法。它为用户提供了一种抽象的方式来告诉 Ceph 哪些磁盘应该转换为具有所需配置的 OSD,而无需知道设备名称和路径的细节。

您可以通过定义文件或文件为每个设备和每个主机部署 OSD。yamljson

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 部署所有管理器和监视器守护程序。

程序

  1. 在监视器节点上,创建文件:osd_spec.yaml

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# touch osd_spec.yaml</span></span>
  2. 编辑文件以包含以下详细信息:osd_spec.yaml

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
    service_id: <em>SERVICE_ID</em>
    placement:
      host_pattern: '*' # optional
    data_devices: # optional
      model: <em>DISK_MODEL_NAME</em> # optional
      paths:
      - /<em>DEVICE_PATH</em>
    osds_per_device: <em>NUMBER_OF_DEVICES</em> # optional
    db_devices: # optional
      size: # optional
      all: true # optional
      paths:
       - /<em>DEVICE_PATH</em>
    encrypted: true</span></span>
    1. 简单方案:在这些情况下,所有节点都具有相同的设置。

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_spec_default
      placement:
        host_pattern: '*'
      data_devices:
        all: true
        paths:
        - /dev/sdb
      encrypted: true</span></span>

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_spec_default
      placement:
        host_pattern: '*'
      data_devices:
        size: '80G'
      db_devices:
        size: '40G:'
        paths:
         - /dev/sdc</span></span>
    2. 简单场景:在这种情况下,所有节点都具有相同的设置,OSD 设备在原始模式下创建,没有 LVM 层。

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: all-available-devices
      encrypted: "true"
      method: raw
      placement:
        host_pattern: "*"
      data_devices:
        all: "true"</span></span>
    3. 高级方案:这将通过使用所有 HDD 创建所需的布局,就像分配为专用 DB 或 WAL 设备的两个 SSD 一样。其余的 SSD 将 NVME 供应商分配为专用数据库或 WAL 设备。data_devicesdata_devices

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_spec_hdd
      placement:
        host_pattern: '*'
      data_devices:
        rotational: 0
      db_devices:
        model: Model-name
        limit: 2
      ---
      service_type: osd
      service_id: osd_spec_ssd
      placement:
        host_pattern: '*'
      data_devices:
        model: Model-name
      db_devices:
        vendor: Vendor-name</span></span>
    4. 具有非统一节点的高级方案:这会根据host_pattern密钥将不同的 OSD 规范应用于不同的主机。

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_spec_node_one_to_five
      placement:
        host_pattern: 'node[1-5]'
      data_devices:
        rotational: 1
      db_devices:
        rotational: 0
      ---
      service_type: osd
      service_id: osd_spec_six_to_ten
      placement:
        host_pattern: 'node[6-10]'
      data_devices:
        model: Model-name
      db_devices:
        model: Model-name</span></span>
    5. 具有专用 WAL 和 DB 设备的高级方案:

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_using_paths
      placement:
        hosts:
          - host01
          - host02
      data_devices:
        paths:
          - /dev/sdb
      db_devices:
        paths:
          - /dev/sdc
      wal_devices:
        paths:
          - /dev/sdd</span></span>
    6. 每个设备具有多个 OSD 的高级方案:

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: multiple_osds
      placement:
        hosts:
          - host01
          - host02
      osds_per_device: 4
      data_devices:
        paths:
          - /dev/sdb</span></span>
    7. 对于预先创建的卷,请编辑文件以包含以下详细信息:osd_spec.yaml

      语法

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: <em>SERVICE_ID</em>
      placement:
        hosts:
          - <em>HOSTNAME</em>
      data_devices: # optional
        model: <em>DISK_MODEL_NAME</em> # optional
        paths:
        - /<em>DEVICE_PATH</em>
      db_devices: # optional
        size: # optional
        all: true # optional
        paths:
         - /<em>DEVICE_PATH</em></span></span>

      <span style="background-color:#f8f8f8"><span style="color:#151515">service_type: osd
      service_id: osd_spec
      placement:
        hosts:
          - machine1
      data_devices:
        paths:
          - /dev/vg_hdd/lv_hdd
      db_devices:
        paths:
          - /dev/vg_nvme/lv_nvme</span></span>
  3. 将 YAML 文件挂载到容器中的目录下:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell --mount osd_spec.yaml:/var/lib/ceph/osd/osd_spec.yaml</span></span>
  4. 导航到目录:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# cd /var/lib/ceph/osd/</span></span>
  5. 在部署 OSD 之前,请执行试运行:

    注意

    此步骤提供部署的预览,而不部署守护程序。

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml --dry-run</span></span>
  6. 使用服务规范部署 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch apply -i <em>FILE_NAME</em>.yml</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml</span></span>

验证

  • 列出服务:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ls osd</span></span>
  • 查看节点和设备的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>

其他资源

6.10. 使用 Ceph 编排器删除 OSD 守护进程

您可以使用 Cephadm 从集群中删除 OSD。

从集群中删除 OSD 涉及两个步骤:

  1. 从集群中撤出所有归置组 (PG)。
  2. 从群集中删除无 PG 的 OSD。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • Ceph Monitor、Ceph Manager 和 Ceph OSD 守护进程部署在存储集群上。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 检查必须从中删除 OSD 的设备和节点:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>
  3. 删除 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch osd rm <em>OSD_ID</em> [--replace] [--force]</span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm 0</span></span>
    注意

    如果从存储集群中移除 OSD,而不带选项(例如 ),则会从存储簇中完全移除设备。如果要使用同一设备部署 OSD,必须先销毁设备,然后再将其添加到存储集群。--replace

  4. 可选:要从特定节点中删除多个 OSD,请运行以下命令:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch osd rm <em>OSD_ID</em> <em>OSD_ID</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm 2 5</span></span>
  5. 检查 OSD 移除的状态:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm status
    OSD_ID  HOST     STATE     PGS       REPLACE  FORCE  DRAIN_STARTED_AT
    2       host01  draining  124       False    False  2021-09-07 16:26:07.142980
    5       host01  draining  107       False    False  2021-09-07 16:26:08.330371</span></span>

    当 OSD 上没有剩余的 PG 时,它将停用并从集群中删除。

验证

  • 验证从中移除 Ceph OSD 的设备和节点的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>

其他资源

6.11. 使用 Ceph 编排器替换 OSD

当磁盘发生故障时,您可以更换物理存储设备并重复使用相同的 OSD ID,以避免重新配置 CRUSH 映射。

您可以使用该选项替换集群中的 OSD。此选项使用命令保留 OSD ID。OSD 不会从 CRUSH 层次结构中永久删除,但会分配标志。此标志用于确定可在下一个 OSD 部署中重复使用的 OSD ID。该标志用于确定在下一个 OSD 部署中重复使用哪个 OSD 标识。--replaceceph orch rmdestroyeddestroyed

与命令类似,从集群替换 OSD 涉及两个步骤:rm

  • 从集群中撤出所有归置组 (PG)。
  • 从群集中删除无 PG 的 OSD。

如果使用 OSD 规范进行部署,则会为新添加的磁盘分配其替换对应磁盘的 OSD ID。

注意

卸下 OSD 后,如果部署 OSD 的驱动器再次可用,如果这些驱动器与现有驱动器组规范匹配,则可能会自动尝试在这些驱动器上部署更多 OSD。如果您部署了使用规范删除的 OSD,并且不希望在删除后在驱动器上部署任何新 OSD,请在删除之前修改驱动器组规范。部署 OSD 时,如果您使用了选项,请设置为完全阻止它拾取新驱动器。对于其他部署,请修改规范。有关更多详细信息,请参阅使用高级服务规范部署 Ceph OSDcephadm`--all-available-devicesunmanaged: true

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 监控器、管理器和 OSD 守护程序部署在存储集群上。
  • 必须在从中移除 OSD 的同一主机上创建替换已移除 OSD 的新 OSD。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 检查必须更换 OSD 的设备和节点:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>
  3. 更换 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch osd rm <em>OSD_ID</em> --replace [--force]</span></span>

    当存储集群上存在正在进行的操作时,可以使用该选项。--force

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm 0 --replace</span></span>
  4. 检查 OSD 更换的状态:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm status</span></span>

验证

  • 验证更换 Ceph OSD 的设备和节点的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>

    您可以看到与替换的 OSD 具有相同 ID 的 OSD 在同一主机上运行。

其他资源

6.12. 停止使用 Ceph 编排器删除 OSD

您只能停止删除排队等待删除的 OSD。这将重置 OSD 的初始状态,并将其从删除队列中删除。

如果 OSD 正在删除过程中,则无法停止该过程。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 监控器、管理器和 OSD 守护程序部署在集群上。
  • 删除已启动的 OSD 进程。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 检查要从中启动 OSD 的设备和节点:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>
  3. 停止删除排队的 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch osd rm stop <em>OSD_ID</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm stop 0</span></span>
  4. 检查 OSD 移除的状态:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch osd rm status</span></span>

验证

  • 验证 Ceph OSD 排队等待移除的设备和节点的详细信息:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph osd tree</span></span>

其他资源

6.13. 使用 Ceph 编排器激活 OSD

在重新安装主机的操作系统时,您可以在集群中激活 OSD。

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 主机将添加到群集中。
  • 监控器、管理器和 OSD 守护程序部署在存储集群上。

程序

  1. 登录 Cephadm shell:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[root@host01 ~]# cephadm shell</span></span>
  2. 重新安装主机的操作系统后,激活 OSD:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph cephadm osd activate <em>HOSTNAME</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph cephadm osd activate host03</span></span>

验证

  • 列出服务:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ls</span></span>
  • 列出主机、守护程序和进程:

    语法

    <span style="background-color:#f8f8f8"><span style="color:#151515">ceph orch ps --service_name=<em>SERVICE_NAME</em></span></span>

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph orch ps --service_name=osd</span></span>

6.13.1. 观察数据迁移

当您在 CRUSH 映射中添加或移除 OSD 时,Ceph 会通过将归置组迁移到新的或现有的 OSD 来开始重新平衡数据。您可以使用命令观察数据迁移。ceph-w

先决条件

  • 正在运行的红帽 Ceph 存储集群。
  • 最近添加或删除了 OSD。

程序

  1. 要观察数据迁移,请执行以下操作:

    <span style="background-color:#f8f8f8"><span style="color:#151515">[ceph: root@host01 /]# ceph -w</span></span>
  2. 观察归置组状态从 更改为 ,最后在迁移完成时发生变化。active+cleanactive, some degraded objectsactive+clean
  3. 要退出该实用程序,请按 。Ctrl + C

6.14. 重新计算归置组

归置组 (PG) 定义任何池数据在可用 OSD 中的分布。归置组基于要使用的给定冗余算法构建。对于 3 向复制,冗余定义为使用三个不同的 OSD。对于纠删码存储池,要使用的 OSD 数由区块数定义。

定义存储池时,归置组的数量决定了数据在所有可用 OSD 中的粒度等级。数字越大,容量负载的均衡性越好。但是,由于在重建数据时处理归置组也很重要,因此需要预先仔细选择该数字。为了支持计算,可以使用工具来生成敏捷环境。

在存储集群的生命周期内,池可能会增长到超出最初预期的限制。随着驱动器数量的增加,建议重新计算。每个 OSD 的归置组数量应在 100 个左右。向存储集群添加更多 OSD 时,每个 OSD 的 PG 数量将随着时间的推移而减少。从存储集群中的最初 120 个驱动器开始,将池设置为 4000,最终每个 OSD 将产生 100 个 PG,复制因子为 <>。随着时间的推移,当 OSD 数量增长到 <> 倍时,每个 OSD 的 PG 数量将仅减少到 <> 倍。由于每个 OSD 的 PG 数量较少会导致容量分布不均匀,因此请考虑调整每个池的 PG。pg_num

可以在线调整归置组的数量。重新计算不仅是PG数字的重新计算,而且将涉及数据重新定位,这将是一个漫长的过程。但是,将随时保持数据可用性。

应避免每个 OSD 的 PG 数量过多,因为故障 OSD 上所有 PG 的重建将立即开始。需要大量 IOPS 才能及时执行重建,这可能不可用。这将导致深度 I/O 队列和高延迟,使存储集群不可用或将导致较长的修复时间。

其他资源

  • 请参阅 PG 计算器,了解按给定用例计算值。
  • 有关更多信息,请参阅《红帽 Ceph 存储策略指南》中的纠删码池章节。

猜你喜欢

转载自blog.csdn.net/wxb880114/article/details/130768298