5.8. 在同一主机上部署具有不同硬件的 OSD
您可以使用 Ansible 中的 device_class
功能将混合 OSD(如 HDD 和 SSD)部署到同一主机上。
先决条件
- 有效的客户订阅。
- 对 Ansible 管理节点的根级别访问权限。
- 启用 Red Hat Ceph Storage 工具和 Ansible 存储库。
- 用于 Ansible 应用的 ansible 用户帐户。
- 已部署 OSD。
流程
在
group_vars/mons.yml
文件中创建crush_rules
:示例
crush_rule_config: true crush_rule_hdd: name: HDD root: default type: host class: hdd default: true crush_rule_ssd: name: SSD root: default type: host class: ssd default: true crush_rules: - "{{ crush_rule_hdd }}" - "{{ crush_rule_ssd }}" create_crush_tree: true
注意如果您在集群中没有使用 SSD 或 HDD 设备,请不要为该设备定义
crush_rules
。使用在
group_vars/clients.yml
文件中创建的crush_rules
来创建pools
。示例
copy_admin_key: True user_config: True pool1: name: "pool1" pg_num: 128 pgp_num: 128 rule_name: "HDD" type: "replicated" device_class: "hdd" pools: - "{{ pool1 }}"
将 roots 分配给 OSD 的清单文件示例:
示例
[mons] mon1 [osds] osd1 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'host': 'osd1' }" osd2 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'host': 'osd2' }" osd3 osd_crush_location="{ 'root': 'default', 'rack': 'rack2', 'host': 'osd3' }" osd4 osd_crush_location="{ 'root': 'default', 'rack': 'rack2', 'host': 'osd4' }" osd5 devices="['/dev/sda', '/dev/sdb']" osd_crush_location="{ 'root': 'default', 'rack': 'rack3', 'host': 'osd5' }" osd6 devices="['/dev/sda', '/dev/sdb']" osd_crush_location="{ 'root': 'default', 'rack': 'rack3', 'host': 'osd6' }" [mgrs] mgr1 [clients] client1
查看树。
语法
[root@mon ~]# ceph osd tree
示例
TYPE NAME root default rack rack1 host osd1 osd.0 osd.10 host osd2 osd.3 osd.7 osd.12 rack rack2 host osd3 osd.1 osd.6 osd.11 host osd4 osd.4 osd.9 osd.13 rack rack3 host osd5 osd.2 osd.8 host osd6 osd.14 osd.15
验证池。
示例
# for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done pool: pool1 crush_rule: HDD
其它资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage 安装指南中的安装 Red Hat Ceph Storage 集群。
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage策略指南中的设备类。