5.5. 覆盖 dissimilar Ceph Storage 节点的参数
具有托管 Ceph OSD 角色(如 CephStorage 或 ComputeHCI )的所有节点都使用在 第 5.3 节 “映射 Ceph Storage 节点磁盘布局” 中创建的全局 devices 和 dedicated_devices 列表。这些列表假定所有这些服务器都有相同的硬件。如果存在具有硬件的服务器,则必须使用特定于节点的磁盘配置,使用特定于节点的磁盘配置,使用不同 设备和 dedicated_devices 列表的详情来更新 director。
托管 Ceph OSD 的角色在 roles_data.yaml 文件中包含 OS::TripleO::Services::CephOSD 服务。
没有与其他节点相同的硬件的 Ceph Storage 节点可能会导致性能问题。在标准节点和使用 Red Hat OpenStack Platform (RHOSP)环境中特定于节点的覆盖配置的节点之间,性能损失越大。
5.5.1. 特定于节点的磁盘配置 复制链接链接已复制到粘贴板!
必须为没有相同硬件的服务配置 director。这称为特定于节点的磁盘配置。
您可以使用以下方法之一创建特定于节点的磁盘配置:
- 自动:您可以生成 JSON heat 环境文件来自动创建特定于节点的磁盘配置。
- 手动:您可以更改节点磁盘布局以创建特定于节点的磁盘配置。
5.5.1.1. 为 Ceph 设备生成 JSON heat 环境文件 复制链接链接已复制到粘贴板!
您可以使用 /usr/share/openstack-tripleo-heat-templates/tools/make_ceph_disk_list.py 脚本从裸机置备服务(ironic)的内省数据自动创建有效的 JSON heat 环境文件。使用此 JSON 文件将特定于节点的磁盘配置传递给 director。
流程
为要部署的 Ceph 节点导出裸机置备服务的内省数据:
openstack baremetal introspection data save oc0-ceph-0 > ceph0.json openstack baremetal introspection data save oc0-ceph-1 > ceph1.json ...将实用程序复制到 undercloud 上的
stack用户的主目录,并使用它来生成node_data_lookup.json文件。./make_ceph_disk_list.py -i ceph*.json -o node_data_lookup.json -k by_path将托管 Ceph OSD 的所有节点的
openstack baremetal introspection data save命令中的内省数据文件传递给实用程序,因为您只能在部署过程中定义NodeDataLookup一次。-i选项可以采用类似192.168.1.0/24json的表达式或文件列表作为输入。使用
-k选项定义您要用来识别 OSD 磁盘的裸机置备磁盘数据结构的密钥。不要使用name,因为它会生成类似/dev/sdd的设备文件,这可能并不总是在重启后指向同一设备。反之,请使用by_path。如果没有指定-k,这是默认设置。裸机置备服务保留系统中的其中一个可用磁盘作为根磁盘。该工具始终从生成的设备列表中排除根磁盘。
-
可选: 您可以使用
./make_ceph_disk_list.py -help查看其他可用选项。 在部署 overcloud 时,包含
node_data_lookup.json文件以及与您环境相关的任何其他环境文件:$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e node_data_lookup.json \ …
5.5.1.2. 更改 Ceph Storage 节点上的磁盘布局 复制链接链接已复制到粘贴板!
非异步 Ceph Storage 节点可能会导致性能问题。在标准节点和使用 Red Hat OpenStack Platform (RHOSP)环境中特定于节点的覆盖配置的节点之间,性能损失越大。
要将特定于节点的磁盘配置传递给 director,您必须将 heat 环境文件(如 node-spec-overrides.yaml )传递给 openstack overcloud deploy 命令,并且文件内容必须通过机器唯一 UUID 和本地变量列表来标识每台服务器,以覆盖全局变量。
您可以提取每个单独服务器的机器唯一 UUID,或者从裸机置备服务(ironic)数据库中提取。
- 备注
-
在以下步骤中,您要创建一个包含嵌入式有效 JSON 的有效 YAML 环境文件。您还可以使用
make_ceph_disk_list.py生成完整的 JSON 文件,并将其传递给部署命令,就像 YAML 一样。有关更多信息,请参阅为 Ceph 设备生成 JSON heat 环境文件。
流程
要找到单个服务器的 UUID,请登录到服务器并输入以下命令:
$ dmidecode -s system-uuid要从裸机置备服务数据库中提取 UUID,请在 undercloud 上输入以下命令:
$ openstack baremetal introspection data save NODE-ID | jq .extra.system.product.uuid警告如果
undercloud.conf在 undercloud 安装或升级和内省之前没有inspection_extras = true,则 machine-unique UUID 不在裸机置备服务数据库中。重要machine-unique UUID 不是裸机置备服务 UUID。
有效的
node-spec-overrides.yaml文件可能类似如下:parameter_defaults: NodeDataLookup: {"32E87B4C-C4A7-418E-865B-191684A6883B": {"devices": ["/dev/sdc"]}}前两行后面的所有行都必须有效 JSON。使用
jq命令验证 JSON 是否有效。-
从文件中临时删除前两行(
parameter_defaults:和NodeDataLookup:)。 -
输入
cat node-spec-overrides.yaml | jq。
-
从文件中临时删除前两行(
随着
node-spec-overrides.yaml文件增长,您还可以使用jq命令来确保嵌入的 JSON 有效。例如,由于devices和dedicated_devices列表必须有相同的长度,因此在开始部署前,使用以下命令来验证它们的长度是否相同。在以下示例中,node-spec-c05-h17-h21-h25-6048r.yaml在机架 c05 中有三个服务器,其中插槽 h17、h21 和 h25 缺失磁盘。(undercloud) [stack@b08-h02-r620 tht]$ cat node-spec-c05-h17-h21-h25-6048r.yaml | jq '.[] | .devices | length' 33 30 33 (undercloud) [stack@b08-h02-r620 tht]$ cat node-spec-c05-h17-h21-h25-6048r.yaml | jq '.[] | .dedicated_devices | length' 33 30 33 (undercloud) [stack@b08-h02-r620 tht]$验证 JSON 后,再添加这两行使其成为有效的环境 YAML 文件(
parameter_defaults:和NodeDataLookup:),并在部署命令中包括它并带有-e。在以下示例中,更新的 heat 环境文件对 Ceph 部署使用
NodeDataLookup。除了其中一个磁盘缺少磁盘外,所有服务器都有一个带有 35 磁盘的设备列表。此环境文件只覆盖该单一节点的默认设备列表,并为节点提供必须使用的 34 磁盘列表而不是全局列表。parameter_defaults: # c05-h01-6048r is missing scsi-0:2:35:0 (00000000-0000-0000-0000-0CC47A6EFD0C) NodeDataLookup: { "00000000-0000-0000-0000-0CC47A6EFD0C": { "devices": [ "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:1:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:32:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:2:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:3:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:4:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:5:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:6:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:33:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:7:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:8:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:34:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:9:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:10:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:11:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:12:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:13:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:14:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:15:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:16:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:17:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:18:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:19:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:20:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:21:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:22:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:23:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:24:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:25:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:26:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:27:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:28:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:29:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:30:0", "/dev/disk/by-path/pci-0000:03:00.0-scsi-0:2:31:0" ], "dedicated_devices": [ "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:81:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1", "/dev/disk/by-path/pci-0000:84:00.0-nvme-1" ] } }
5.5.2. 更改 BlueStore block.db 大小 复制链接链接已复制到粘贴板!
BlueStore block.db 是数据片段和 BlueStore write-ahead 日志(WAL)的数据库。更改数据库大小的方法有两种。选择这些方法之一来更改大小。
5.5.2.1. 使用 ceph-volume 时更改 BlueStore block.db 大小 复制链接链接已复制到粘贴板!
使用 ceph-volume 时,使用以下流程覆盖 block.db 大小。当 osd_scenario: lvm 时使用 ceph-volume。ceph-volume 自动设置 block.db 大小。但是,您可以为高级场景覆盖 block.db 大小。
以下示例使用 ceph-ansible 主机变量,而不是 Ceph 配置文件覆盖,以便使用的 block_db_size 传递给 ceph-volume 调用。
流程
创建一个 JSON 环境文件,其内容类似如下,但根据您的要求替换值:
{ "parameter_defaults": { "NodeDataLookup": { "32e87b4c-c4a7-41be-865b-191684a6883b": { "block_db_size": 3221225472 }, "ea6a84d6-cf89-4fe2-b7bd-869b3fe4dd6b": { "block_db_size": 3221225472 } } } }在部署 overcloud 时,包含与您的环境相关的任何其他环境文件:
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <json_environment_file> \ …
5.5.2.2. 使用 ceph-disk时更改 BlueStore block.db 大小 复制链接链接已复制到粘贴板!
使用 ceph-disk 时,使用以下流程覆盖 block.db 大小。当 osd_scenario: non-collocated 或 osd_scenario: collocated 时,使用 ceph-disk。
以下示例对特定节点使用 Ceph 配置覆盖来设置 blustore_block_db_size。使用 ceph-volume 时,将忽略此 Ceph 配置选项,但 ceph-disk 将使用此配置选项。
流程
创建一个 JSON 环境文件,其内容类似如下,但根据您的要求替换值:
{ "parameter_defaults": { "NodeDataLookup": { "32e87b4c-c4a7-41be-865b-191684a6883b": { "ceph_conf_overrides": { "osd": { "bluestore_block_db_size": 3221225472 } } }, "ea6a84d6-cf89-4fe2-b7bd-869b3fe4dd6b": { "ceph_conf_overrides": { "osd": { "bluestore_block_db_size": 3221225472 } } } } } }在部署 overcloud 时,包含与您的环境相关的任何其他环境文件:
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <json_environment_file> \ …