9.6. 为小写入调优 Ceph BlueStore
				在 BlueStore 中,原始分区在 bluestore_min_alloc_size 的块中分配和管理。默认情况下,蓝色store_min_alloc_size 是 64 KB ( HDD)和 4 KB 用于 SSD。当每个块中的未写入区域写入原始分区时,会用零填充。当您没有针对的工作负载正确配置大小时,这可能会导致浪费掉未使用的空间(例如,当编写小对象时)。
			
				最佳实践是将 bluestore_min_alloc_size 设置为与最小写入匹配,以便避免写法。
			
				例如,如果您的客户端会频繁写入 4 KB 对象,请使用 ceph-ansible 在 OSD 节点上配置以下设置:
			
				bluestore_min_alloc_size = 4096
			
					设置 bluestore_min_alloc_size_ssd 和 bluestore_min_alloc_size_hdd 分别特定于 SSD 和 HDD,但设置它们是必需的,因为设置 bluestore_min_alloc_size 覆盖它们。
				
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 可重新置备为 OSD 节点的新服务器,或者:
- 可以重新部署的 OSD 节点。
- 如果您要重新部署现有的 Ceph OSD 节点,Ceph 监控节点的管理密钥环。
流程
- 可选: 如果重新部署现有的 OSD 节点,请使用 - shrink-osd.ymlAnsible playbook 从集群中删除 OSD。- ansible-playbook -v infrastructure-playbooks/shrink-osd.yml -e osd_to_kill=OSD_ID - ansible-playbook -v infrastructure-playbooks/shrink-osd.yml -e osd_to_kill=OSD_ID- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Example - ansible-playbook -v infrastructure-playbooks/shrink-osd.yml -e osd_to_kill=1 - [admin@admin ceph-ansible]$ ansible-playbook -v infrastructure-playbooks/shrink-osd.yml -e osd_to_kill=1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果重新部署现有的 OSD 节点,请擦除 OSD 驱动器并重新安装操作系统。
- 使用 Ansible 为 OSD 调配准备节点。准备任务示例包括启用 Red Hat Ceph Storage 存储库、添加 Ansible 用户以及启用无密码 SSH 登录。
- 将 - bluestore_min_alloc_size添加到- group_vars/all.ymlAnsible playbook 的- ceph_conf_overrides部分:- ceph_conf_overrides: osd: bluestore_min_alloc_size: 4096- ceph_conf_overrides: osd: bluestore_min_alloc_size: 4096- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果部署新节点,请将其添加到 Ansible 清单文件中,通常为 - /etc/ansible/hosts:- [osds] OSD_NODE_NAME - [osds] OSD_NODE_NAME- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Example - [osds] osd1 devices="[ '/dev/sdb' ]" - [osds] osd1 devices="[ '/dev/sdb' ]"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果重新部署现有的 OSD,请将 Ceph Monitor 节点上的 admin keyring 文件复制到您要部署 OSD 的节点。
- 使用 Ansible 置备 OSD 节点: - ansible-playbook -v site.yml -l OSD_NODE_NAME - ansible-playbook -v site.yml -l OSD_NODE_NAME- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Example - ansible-playbook -v site.yml -l osd1 - [admin@admin ceph-ansible]$ ansible-playbook -v site.yml -l osd1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- playbook 完成后,使用 - ceph 守护进程命令验证设置:- ceph daemon OSD.ID config get bluestore_min_alloc_size - ceph daemon OSD.ID config get bluestore_min_alloc_size- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Example - ceph daemon osd.1 config get bluestore_min_alloc_size - [root@osd1 ~]# ceph daemon osd.1 config get bluestore_min_alloc_size { "bluestore_min_alloc_size": "4096" }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 您可以看到 - bluestore_min_alloc_size设置为 4096 字节,相当于 4 KiB。
其它资源
- 如需更多信息,请参阅"Red Hat Ceph Storage 安装指南 "。