9.5. 添加使用 BlueStore 的 OSD
本节介绍如何使用 BlueStore 后端安装新的 Ceph OSD 节点。
先决条件
- 个正常工作的 Ceph 群集。请参阅 Red Hat Enterprise Linux 或 Ubuntu 安装指南。
流程
在 Ansible 管理节点上使用以下命令:
将新的 OSD 节点添加到 Ansible 清单文件中的
[osds]
部分中,默认位于/etc/ansible/hosts
。[osds] node1 node2 node3 <hostname>
替换:
-
<hostname>
OSD 节点的名称
例如:
[osds] node1 node2 node3 node4
-
进入
/usr/share/ceph-ansible/
目录。[user@admin ~]$ cd /usr/share/ceph-ansible
创建
host_vars
目录。[root@admin ceph-ansible] mkdir host_vars
在
host_vars
中为新添加的 OSD 创建 配置文件。[root@admin ceph-ansible] touch host_vars/<hostname>.yml
替换:
-
<hostname>
新添加的 OSD 的主机名
例如:
[root@admin ceph-ansible] touch host_vars/node4.yml
-
在新创建的文件中添加以下设置:
osd_objectstore: bluestore
注意要将 BlueStore 用于所有 OSD,请将
osd_objectstore:bluestore
添加到group_vars/all.yml
文件中。可选。如果要将
block.wal
和block.db
分区存储在专用设备中,请按如下所示编辑host_vars/<hostname>.yml
文件。要将专用设备用于
block.wal
:osd_scenario: non-collocated bluestore_wal_devices: - <device> - <device>
替换:
-
<device>
使用到该设备的路径
例如:
osd_scenario: non-collocated bluestore_wal_devices: - /dev/sdf - /dev/sdg
-
要将专用设备用于
block.db
:osd_scenario: non-collocated dedicated_devices: - <device> - <device>
替换:
-
<device>
使用到该设备的路径
例如:
osd_scenario: non-collocated dedicated_devices: - /dev/sdh - /dev/sdi
注意如果您使用
osd_scenario: collocated
参数,block.wal
和block.db
分区将使用与devices
参数相同的设备。详情请参阅 Red Hat Enterprise Linux 或 Ubuntu 的 Red Hat Ceph Storage 3 l 安装指南中的安装 Red Hat Ceph Storage Cluster 部分。注意要将 BlueStore 用于所有 OSD,请将上述参数添加到
group_vars/osds.yml
文件中。-
覆盖
group_vars/all.yml
文件中的block.db
和block.wal
默认大小:ceph_conf_overrides: osd: bluestore_block_db_size: <value> bluestore_block_wal_size: <value>
替换:
-
<value>
以字节为单位的大小。
例如:
ceph_conf_overrides: osd: bluestore_block_db_size: 14336000000 bluestore_block_wal_size: 2048000000
-
要配置基于 LVM 的 BlueStore OSD,在
host_vars/<hostname>.yml
中使用osd_scenario: lvm
:osd_scenario: lvm lvm_volumes: - data: <datalv> data_vg: <datavg>
替换:
-
<datalv>
使用数据逻辑卷名称 -
<datavg>
使用数据逻辑卷组群名称
例如:
osd_scenario: lvm lvm_volumes: - data: data-lv1 data_vg: vg1
-
可选。如果要将
block.wal
和block.db
存储在专用逻辑卷中,请按如下方式编辑host_vars/<hostname>.yml
文件:osd_scenario: lvm lvm_volumes: - data: <datalv> wal: <wallv> wal_vg: <vg> db: <dblv> db_vg: <vg>
替换:
- <datalv> 带有应包含数据的逻辑卷
- 带有 write-ahead-log 的逻辑卷的 <wallv>
- WAL 和/或 DB 设备 LV 的卷组 <vg>
- 应包含 BlueStore 内部元数据的逻辑卷的 <dblv>
例如:
osd_scenario: lvm lvm_volumes: - data: data-lv3 wal: wal-lv1 wal_vg: vg3 db: db-lv3 db_vg: vg3
注意当将
lvm_volumes:
与osd_objectstore: bluestore
搭配使用时,lvm_volumes
YAML 字典必须至少包含data
。定义wal
或db
时,它必须同时具有 LV 名称和 VG 名称(db
和wal
不需要)。这允许四个组合:仅数据、数据和 wal、数据和 wal 和 wal 和 db,或者数据和 db。数据可以是裸设备、lv 或 分区。wal
和db
可以是 lv 或 分区。当指定原始设备或者分区ceph-volume
时,会在其上面放置逻辑卷。注意目前,
ceph-ansible
不会创建卷组或者逻辑卷。这必须在运行 Anisble playbook 之前完成。打开并编辑
group_vars/all.yml
文件,并取消注释osd_memory_target
选项。调整您希望 OSD 使用的内存量的值。注意osd_memory_target
选项的默认值是4000000000
,即 4 GB。这个选项将 BlueStore 缓存固定在内存中。重要osd_memory_target
选项只适用于由 BlueStore 支持的 OSD。使用
ansible-playbook
:[user@admin ceph-ansible]$ ansible-playbook site.yml
从 monitor 节点,验证新 OSD 是否已成功添加:
[root@monitor ~]# ceph osd tree