9.6. 使用以下方法调优 BlueStore 以实现小写操作 bluestore_min_alloc_size
在 BlueStore 中,原始分区以 bluestore_min_alloc_size 的块的形式进行配置和管理。默认情况下,bluestore_min_alloc_size 用于 HDD,16 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 会覆盖它们。
先决条件
- 正在运行的 {storage-product} 集群。
- 新服务器可以重新调配为 OSD 节点,或者:
- 可以重新部署的 OSD 节点。
流程
-
可选:如果重新部署现有的 OSD 节点,请将 Ceph 监控节点上的
/etc/ceph/管理密钥环复制到您要从中删除 OSD 的节点。 可选:如果重新部署现有的 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_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
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=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果重新部署现有的 OSD 节点,请擦除 OSD 驱动器并重新安装操作系统。
- 利用 Ansible,为节点做好 OSD 调配准备。例如,启用 {storage-product} 存储库,添加 Ansible 用户并启用免密码 SSH 登录。
将
bluestore_min_alloc_size添加到group_vars/all.ymlAnsible playbook 的ceph_conf_overrides部分:ceph_conf_overrides: osd: bluestore_min_alloc_size: 4096ceph_conf_overrides: osd: bluestore_min_alloc_size: 4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果部署新节点,将其添加到 Ansible 清单文件中,通常:
/etc/ansible/hosts[osds] OSD_NODE_NAME
[osds] OSD_NODE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[osds] osd1 devices="[ '/dev/sdb' ]"
[osds] osd1 devices="[ '/dev/sdb' ]"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Ansible 置备 OSD 节点:
ansible-playbook -v site.yml -l OSD_NODE_NAME
ansible-playbook -v site.yml -l OSD_NODE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ansible-playbook -v site.yml -l osd1
[admin@admin ceph-ansible]$ ansible-playbook -v site.yml -l osd1Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 完成后,使用
ceph daemon命令验证设置:ceph daemon OSD.ID config get bluestore_min_alloc_size
ceph daemon OSD.ID config get bluestore_min_alloc_sizeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
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 KB。
其它资源
- 如需更多信息,请参阅 {storage-product} 安装指南。