5.3. 映射 Ceph Storage 节点磁盘布局


部署容器化 Ceph 存储时,您必须映射磁盘布局,并为 Ceph OSD 服务指定专用块设备。您可以在之前创建的环境文件中执行此映射,以定义自定义 Ceph 参数: /home/stack/templates/ceph-config.yaml

使用 parameter_defaults 中的 CephAnsibleDisksConfig 资源来映射磁盘布局。这个资源使用以下变量:

Expand
变量必需?默认值(如果未设置)Description

osd_scenario

lvm

注意:默认值为 lvm

lvm 值允许 ceph-ansible 使用 ceph-volume 配置 OSD、block.db 和 BlueStore WAL 设备。

devices

NONE.必须设置变量。

要用于节点上 OSD 的块设备列表。

dedicated_devices

是(仅在 osd_scenarionon-collocated时)

devices

devices 参数中每个条目映射到专用日志块设备的块设备列表。您只能在 osd_scenario=non-collocated 时使用此变量。

dmcrypt

false

设置存储在 OSD 上的数据是加密的(true)还是未加密的数据(false)。

osd_objectstore

bluestore

注意:默认值为 bluestore

设置 Ceph 使用的存储后端。

注意:虽然默认值为 bluestore,但您可以在 collated 或 non-collated 场景中将 osd_scenario 设置为 filestore。您可以在非并置场景中将值设置为 filestore,其中 dedicated_devices 标识日志记录磁盘。您可以在一个协调场景中将值设置为 filestore,在其中对设备中定义的磁盘进行分区,并将 OSD 数据和日志数据存储在同一设备上。

5.3.1. 使用 BlueStore

流程

  1. 要指定您要用作 Ceph OSD 的块设备,请使用以下代码片段的不同:

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sdb
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme0n1
        osd_scenario: lvm
        osd_objectstore: bluestore
  2. 由于 /dev/nvme0n1 位于更高的执行设备类中,所以示例 parameter_defaults 生成三个在 /dev/sdb/dev/sdc, 和 / dev/sdd 中运行的 OSD。三个 OSD 使用 /dev/nvme0n1 作为 block.db 和 BlueStore WAL 设备。ceph-volume 工具使用 batch 子命令进行此操作。每个 Ceph Storage 节点都重复相同的配置,并假定统一的硬件。如果 block.db 和 BlueStore WAL 数据位于与 OSD 相同的磁盘上,则使用以下方法更改参数默认值:

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sdb
          - /dev/sdc
          - /dev/sdd
        osd_scenario: lvm
        osd_objectstore: bluestore

5.3.2. 引用具有持久名称的设备

流程

  1. 在某些节点中,磁盘路径(如 /dev/sdb/dev/sdc )可能无法在重启后指向同一块设备。如果您的 Ceph Storage 节点出现这种情况,请使用 /dev/disk/by-id/ 符号链接指定每个磁盘,以确保整个部署中一致的块设备映射:

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/disk/by-id/scsi-362cea7f05e14510026ee46fa2111caa9
          - /dev/disk/by-id/scsi-362cea7f05e14510026ee47012171567e
        dedicated_devices:
          - /dev/nvme0n1
          - /dev/nvme0n1
  2. 可选: 因为您必须在 overcloud 部署前设置 OSD 设备列表,因此可能无法识别和设置磁盘设备的 PCI 路径。在这种情况下,在内省期间为块设备收集 /dev/disk/by-id/ 符号链接数据。

    在以下示例中,运行第一个命令,从服务器的 b08-h03-r620-hci 文件中的 undercloud Object Storage 服务(swift)下载内省数据,并将数据保存到名为 b08-h03-r620-hci.json 的文件中。运行第二个命令以 grep by-id。此命令的输出包含可用于识别磁盘的唯一 /dev/disk/by-id 值。

    $ openstack baremetal introspection data save b08-h03-r620-hci | jq . > b08-h03-r620-hci.json
    $ grep by-id b08-h03-r620-hci.json

    有关存储设备的命名规则的更多信息,请参阅管理存储设备指南中的持久性命名属性概述

5.3.3. 在高级场景中配置 OSD

在环境文件中,您要列出 CephAnsibleDisksConfig 资源的 devices 变量中要用于 OSD 的块设备。

当您在没有任何其他设备配置参数的情况下使用 devices 变量时,ceph-volume lvm batch 会自动将更高的性能设备作为较慢设备的 block.db 来优化 OSD 配置。

您可以使用以下步骤配置 设备 以避免在 ceph-volume lvm batch 模式下运行。

5.3.3.1. 使用 block.db 提高性能

使用 block.db 可以通过提高吞吐量并提高响应时间来提高 Ceph 存储集群的性能。block.db 是一个由数据片段和 BlueStore write-ahead 日志(WAL)组成的数据库。

流程

  1. 在环境文件中添加以下内容:

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sda
          - /dev/sdb
          - /dev/nvme0n1
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme0n2
        osd_scenario: lvm
        osd_objectstore: bluestore

    这将配置四个 OSD: sdasdbsdcsdd。每个对都有自己的数据库:nv em0n1nvme0n2

    注意

    devices 列表中设备的顺序非常显著。列出驱动器,后跟 block.db 和 BlueStore WAL (DB-WAL)设备。在示例中,nvme0n1sdasdb 的 DB-WAL,nvme0n2sdcsdd 的 DB-WAL。如需更多信息,请参阅使用 BlueStore

  2. 在部署 overcloud 时,使用 -e 选项在部署命令中包括新内容的环境文件。

5.3.3.2. 使用专用的 write-ahead 日志(WAL)设备

您可以指定专用的 write-ahead 日志(WAL)设备。使用 devicesdedicated_devicesbluestore_wal_devices 意味着您可以将 OSD 的所有组件隔离到单独的设备,从而提高性能。

在以下示例中,另一个额外的字典 bluestore_wal_devices 隔离 NVMe 设备 nvme0n1nvme0n2 中的 write-ahead 日志。

流程

  1. 在环境文件中添加以下内容:

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy
        bluestore_wal_devices:
          - /dev/nvme0n1
          - /dev/nvme0n2
  2. 在部署 overcloud 时,使用 -e 选项在部署命令中包括新内容的环境文件。

5.3.3.3. 使用预先创建的 LVM 来提高控制

在前面的高级场景中,ceph-volume 使用不同类型的设备列表来为 OSD 创建逻辑卷。您还可以在 ceph-volume 运行前创建逻辑卷,然后将 ceph-volume 传递为这些逻辑卷的 lvm_volumes 列表。虽然这需要预先创建逻辑卷,但这意味着您有更精确的控制。由于 director 还负责硬件置备,因此您必须使用第一次引导脚本提前创建这些 LVM。

流程

  1. 创建一个环境文件 /home/stack/templates/firstboot.yaml,它将 heat 模板注册为 OS::TripleO::NodeUserData 资源类型并包含以下内容:

    resource_registry:
      OS::TripleO::NodeUserData: /home/stack/templates/ceph-lvm.yaml
  2. 创建环境文件 /home/stack/templates/ceph-lvm.yaml。添加类似以下示例的列表,其中包括三个物理卷。如果您的设备列表更长,请根据您的要求扩展示例。

    heat_template_version: 2014-10-16
    
    description: >
      Extra hostname configuration
    
    resources:
      userdata:
        type: OS::Heat::MultipartMime
        properties:
          parts:
          - config: {get_resource: ceph_lvm_config}
    
      ceph_lvm_config:
        type: OS::Heat::SoftwareConfig
        properties:
          config: |
            #!/bin/bash -x
            pvcreate /dev/sda
            vgcreate ceph_vg_hdd /dev/sda
            pvcreate /dev/sdb
            vgcreate ceph_vg_ssd /dev/sdb
            pvcreate /dev/nvme0n1
            vgcreate ceph_vg_nvme /dev/nvme0n1
            lvcreate -n ceph_lv_wal1 -L 50G ceph_vg_nvme
            lvcreate -n ceph_lv_db1 -L 500G ceph_vg_ssd
            lvcreate -n ceph_lv_data1 -L 5T ceph_vg_hdd
            lvs
    
    outputs:
      OS::stack_id:
        value: {get_resource: userdata}
  3. 使用以下方法使用 lvm_volumes 参数而不是 devices 列表:这假设已经创建了卷组和逻辑卷。在这种情况下的典型用例是 WAL 和 DB LV 位于 SSD 上,数据 LV 位于 HDD 上:

    parameter_defaults:
      CephAnsibleDisksConfig:
        osd_objectstore: bluestore
        osd_scenario: lvm
        lvm_volumes:
          - data: ceph_lv_data1
            data_vg: ceph_vg_hdd
            db: ceph_lv_db1
            db_vg: ceph_vg_ssd
            wal: ceph_lv_wal1
            wal_vg: ceph_vg_nvme
  4. 在部署 overcloud 时,使用 -e 选项在部署命令中包括新内容的环境文件。

    备注
    只有在该 WAL 设备位于大于 DB 设备的硬件上时,才需要指定单独的 WAL 设备。通常创建单独的 DB 设备就足够了,然后对 WAL 功能使用相同的分区。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部