6.9. 使用高级服务规格部署 Ceph OSD
类型 OSD 的服务规格是利用磁盘属性描述集群布局的方法。它为用户提供了一种抽象的方式,告知 Ceph 哪个磁盘应该切换到带有所需配置的 OSD,而不必了解具体的设备名称和路径。
您可以通过定义 yaml
文件或 json
文件,为每个设备和每个主机部署 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
在 monitor 节点上,创建
osd_spec.yaml
文件:示例
[root@host01 ~]# touch osd_spec.yaml
编辑
osd_spec.yaml
文件,使其包含以下详情:语法
service_type: osd service_id: SERVICE_ID placement: host_pattern: '*' # optional data_devices: # optional model: DISK_MODEL_NAME # optional paths: - /DEVICE_PATH osds_per_device: NUMBER_OF_DEVICES # optional db_devices: # optional size: # optional all: true # optional paths: - /DEVICE_PATH encrypted: true
简单情况:在这些情况下,所有节点都具有相同的设置。
示例
service_type: osd service_id: osd_spec_default placement: host_pattern: '*' data_devices: all: true paths: - /dev/sdb encrypted: true
示例
service_type: osd service_id: osd_spec_default placement: host_pattern: '*' data_devices: size: '80G' db_devices: size: '40G:' paths: - /dev/sdc
简单情况:在这种情况下,所有节点都具有与原始模式中创建的 OSD 设备相同的设置,而没有 LVM 层。
示例
service_type: osd service_id: all-available-devices encrypted: "true" method: raw placement: host_pattern: "*" data_devices: all: "true"
高级情景:这会将所有 HDD 用作
data_devices
,并将两个 SSD 分配为专用 DB 或 WAL 设备来创建所需的布局。剩余的 SSD 是将 NVMEs 供应商分配给专用 DB 或 WAL 设备的data_devices
。示例
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
非统一节点的高级场景:这会根据 host_pattern 键将不同的 OSD specs 应用到不同的主机。
示例
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
使用专用 WAL 和 DB 设备的高级场景:
示例
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
每个设备有多个 OSD 的高级场景:
示例
service_type: osd service_id: multiple_osds placement: hosts: - host01 - host02 osds_per_device: 4 data_devices: paths: - /dev/sdb
对于预先创建的卷,请编辑
osd_spec.yaml
文件,使其包含以下详情:语法
service_type: osd service_id: SERVICE_ID placement: hosts: - HOSTNAME data_devices: # optional model: DISK_MODEL_NAME # optional paths: - /DEVICE_PATH db_devices: # optional size: # optional all: true # optional paths: - /DEVICE_PATH
示例
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
对于 OSD 按 ID,编辑
osd_spec.yaml
文件,使其包含以下详情:注意此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。
语法
service_type: osd service_id: OSD_BY_ID_HOSTNAME placement: hosts: - HOSTNAME data_devices: # optional model: DISK_MODEL_NAME # optional paths: - /DEVICE_PATH db_devices: # optional size: # optional all: true # optional paths: - /DEVICE_PATH
示例
service_type: osd service_id: osd_by_id_host01 placement: hosts: - host01 data_devices: paths: - /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5 db_devices: paths: - /dev/disk/by-id/nvme-nvme.1b36-31323334-51454d55204e564d65204374726c-00000001
对于 OSD 通过路径,编辑
osd_spec.yaml
文件,使其包含以下详情:注意此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。
语法
service_type: osd service_id: OSD_BY_PATH_HOSTNAME placement: hosts: - HOSTNAME data_devices: # optional model: DISK_MODEL_NAME # optional paths: - /DEVICE_PATH db_devices: # optional size: # optional all: true # optional paths: - /DEVICE_PATH
示例
service_type: osd service_id: osd_by_path_host01 placement: hosts: - host01 data_devices: paths: - /dev/disk/by-path/pci-0000:0d:00.0-scsi-0:0:0:4 db_devices: paths: - /dev/disk/by-path/pci-0000:00:02.0-nvme-1
将 YAML 文件挂载到容器中的一个目录下:
示例
[root@host01 ~]# cephadm shell --mount osd_spec.yaml:/var/lib/ceph/osd/osd_spec.yaml
进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/osd/
在部署 OSD 前,先执行空运行:
注意此步骤提供部署预览,无需部署守护进程。
示例
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml --dry-run
使用服务规格部署 OSD:
语法
ceph orch apply -i FILE_NAME.yml
示例
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls osd
查看节点和设备的详情:
示例
[ceph: root@host01 /]# ceph osd tree
其它资源
- 请参阅 Red Hat Ceph Storage Operations Guide 中的 部署 OSD 部分的高级服务规格和过滤器。