已配置好的osd增加opencas配置

前言

环境已经配置好了osd,想增加opencas的缓存加速,因为opencas支持在lvm之上部署,也支持在opencas上面创建lvm,而已经部署好osd的场景是属于前面的一种情况,也就是已经有lvm 的情况再加缓存加速

因为ceph有自己的挂载逻辑,所以这里需要梳理一下,把整个启动路径给屏蔽掉,然后加入自己的启动逻辑

本篇是讲的没有单独的db wal的部署缓存加速的方式

操作方法

创建一个缓存设备

1
casadm -S -i 1 -d /dev/disk/by-id/nvme-A6F1600_SW20B27P7040007-part2 -c wb

opencas的配置逻辑是创建缓存设备,然后把需要加速的设备加入到缓存设备里面,然后生成新的路径,使用新的路径即可,上面就是创建了编号为1的wb模式的缓存设备

创建好了以后写配置文件/etc/opencas/opencas.conf

1
2
3
4
[caches]
## Cache ID Cache device Cache mode Extra fields (optional)
## Uncomment and edit the below line for cache configuration
1 /dev/disk/by-id/nvme-A6F1600_SW20B27P7040007-part2 WB

默认ceph启动逻辑

正常的启动是lvm设备形成以后通过ceph-volume进行启动,然后进行挂载,ceph-volume实际上就是去挂载目录的操作,这两步我们需要屏蔽掉

禁用自启动部分

我们举例osd编号为3

1
2
3
4
5
6
7
8
9
10
[root@node153 ~]# systemctl stop ceph-osd@3
[root@node153 ~]# umount /var/lib/ceph/osd/ceph-3/

获取osd uuid
[root@node153 ~]# ceph osd dump|grep osd.3

[root@node153 ~]# systemctl disable ceph-volume@lvm-3-de370e9a-6f2c-4584-9d3d-0b6e4c891ae2
Removed symlink /etc/systemd/system/multi-user.target.wants/[email protected].
[root@node153 ~]# systemctl disable ceph-osd@3
[root@node153 ~]# umount /var/lib/ceph/osd/ceph-3

上面的操作以后,osd.3 的自挂载,自启动就去掉了

添加缓存设备

获取到osd.3 的lvm的路径(取osd uuid前几位grep)

1
ls /dev/mapper/ceph--|grep de370e9a

添加后端设备到缓存设备

1
casadm -A  -d /dev/mapper/ceph--81296ca1--c3f9--403c--974d--0058f9eba49a-osd--block--de370e9a--6f2c--4584--9d3d--0b6e4c891ae2 -i 1 -j 3

注意后面的-j是后端设备的id,这个可以设置为osd的id,方便后面查找

添加配置文件到/etc/opencas/opencas.conf

1
2
3
4
[cores]
## Cache ID Core ID Core device
## Uncomment and edit the below line for core configuration
1 3 /dev/mapper/ceph--81296ca1--c3f9--403c--974d--0058f9eba49a-osd--block--de370e9a--6f2c--4584--9d3d--0b6e4c891ae2

手动启动缓存加速之后的设备

1
2
3
4
5
6
7
8
mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-3
restorecon /var/lib/ceph/osd/ceph-3
chown -R ceph:ceph /var/lib/ceph/osd/ceph-3
ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/cas1-3 --path /var/lib/ceph/osd/ceph-3
chown -h ceph:ceph /var/lib/ceph/osd/ceph-3/block
chown -R ceph:ceph /dev/cas1-3
chown -R ceph:ceph /var/lib/ceph/osd/ceph-3
systemctl start ceph-osd@3

然后就启动了

上面的操作写成脚本

绑定部分的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
#! /bin/sh
for osd in 5 8 11
do
systemctl stop ceph-osd@$osd
umount /var/lib/ceph/osd/ceph-$osd
osdid=`ceph osd dump|grep osd.|awk -v A=osd.$osd '{if($1==A) print $19}'`
systemctl disable ceph-volume@lvm-$osd-$osdid
systemctl disable ceph-osd@$osd
osdpathprefix=`echo $osdid|cut -d "-" -f 1`
osdpath=`ls /dev/mapper/ceph--*|grep $osdpathprefix`
casadm -A -d $osdpath -i 1 -j $osd
echo "1 $osd $osdpath"
done

会输出几行对应关系,拷贝到配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
#! /bin/sh
# start osd.5 osd.8 osd.11
for osd in 5 8 11
do
mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-$osd
restorecon /var/lib/ceph/osd/ceph-$osd
chown -R ceph:ceph /var/lib/ceph/osd/ceph-$osd
ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/cas1-$osd --path /var/lib/ceph/osd/ceph-$osd
chown -h ceph:ceph /var/lib/ceph/osd/ceph-$osd/block
chown -R ceph:ceph /dev/cas1-$osd
chown -R ceph:ceph /var/lib/ceph/osd/ceph-$osd
systemctl start ceph-osd@$osd
done

启动osd的脚本

如果重启机器,等opencas自带的服务启动好了,只用执行上面的启动osd的脚本即可

总结

本篇记录了配置过程,未涉及参数调优,模式改变等等,都是默认配置