ceph与flashcache的around模式结合启动问题
问题
通过对我们的启动流程看了下,目前是穿到一个脚本里面的,然后这个脚本是用无限循环的方式去执行一些事情,这个地方不符合松耦合的设计,一个模块做一个事情,两个并不相关的功能不要嵌入另一个脚本,否则出现问题的时候,不好更改不好优化
解决方式
首先分析ceph自身的启动方式
ceph的启动方式是通过去enable的一个service的方式这个enable会传入参数,osd的id和osd的fsid,这两个都是集群的定值,也就是每个osd的这块都是各自独立的,所以就是一个总控脚本去通过调用参数的方式进行服务的启动和挂载
那么最佳的处理方式应该也是近似处理,我们做结合启动的时候,先禁用相关的服务,这个后面脚本里面内部会处理,我们先写出来怎么禁用ceph的挂载和启动
systemctl stop ceph-osd@$osd_id
systemctl disable ceph-osd@$osd_id
systemctl disable ceph-volume@lvm-$osd_id-$osd_dev
umount /var/lib/ceph/osd/ceph-0/
上面一个是osd id 一个是fsid
fsid可以从ceph osd dump|grep osdid获得
初始部署成功后,机器的上面的磁盘也会打上上面的相关的标签
启动禁止了,开始写我们的启动服务
我们看下原生的服务
[root@lab101 ~]# cat /usr/lib/systemd/system/ceph-volume@.service
[Unit]
Description=Ceph Volume activation: %i
After=local-fs.target
Wants=local-fs.target
[Service]
Type=oneshot
KillMode=none
Environment=CEPH_VOLUME_TIMEOUT=10000
ExecStart=/bin/sh -c 'timeout $CEPH_VOLUME_TIMEOUT /usr/sbin/ceph-volume-systemd %i'
TimeoutSec=0
[Install]
WantedBy=multi-user.target
我们写我们自己的服务
[root@lab101 ~]# cat /usr/lib/systemd/system/ceph-volume-flashcache@.service
[Unit]
Description=Ceph flash cache Volume activation: %i
After=local-fs.target
Wants=local-fs.target
[Service]
Type=oneshot
KillMode=none
ExecStart=/bin/sh -c 'timeout 10000 /usr/lib/ceph/ceph-load-flashcache.sh %i'
TimeoutSec=0
[Install]
WantedBy=multi-user.target
这是总控服务,我们传参进去,用加载脚本处理
[root@lab101 ~]# cat /usr/lib/ceph/ceph-load-flashcache.sh
#! /usr/bin/sh
startflashcache(){
ssd_dev=`echo $1|awk -F '--' '{print $1}'`
osd_id=`echo $1|awk -F '--' '{print $2}'`
osd_dev=`echo $1|awk -F '--' '{print $3}'`
echo $ssd_dev
echo "$osd_id"
echo "$osd_dev"
# 先停掉osd
systemctl disable ceph-volume@lvm-0-bcdb55b0-e95b-4833-8362-18f633782632
systemctl stop ceph-osd@$osd_id
systemctl disable ceph-osd@$osd_id
systemctl disable ceph-volume@lvm-$osd_id-$osd_dev
# umount osd
umount /var/lib/ceph/osd/ceph-$osd_id
#remove 原来的虚拟设备 我们确定arond的
if [ ! -f "/dev/mapper/$osd_id" ]; then
dmsetup remove osd$osd_id
echo "remove old flashcache /dev/mapper/$osd_id"
fi
# if osd exit
ssd_path="/dev/disk/by-partuuid/$ssd_dev"
osd_lv_path=`lvdisplay |grep $osd_dev |grep "LV Path"|awk '{print $3}'`
#if path exist
ls -al $ssd_path
ls -al $osd_lv_path
#创建 around flashcache
flashcache_create -p around osd$osd_id $ssd_path $osd_lv_path
ls -al /dev/mapper/osd$osd_id
flashcache_dev_dm=/dev/`ls -al /dev/mapper/osd0|awk '{print $11}'|cut -d "/" -f 2`
echo $flashcache_dev_dm
mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-$osd_id
restorecon /var/lib/ceph/osd/ceph-$osd_id
chown -R ceph:ceph $flashcache_dev_dm
chown -R ceph:ceph /var/lib/ceph/osd/ceph-$osd_id
#进入部署流程
ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/mapper/osd$osd_id --path /var/lib/ceph/osd/ceph-$osd_id
ln -snf /dev/mapper/osd$osd_id /var/lib/ceph/osd/ceph-0/block
chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
chown ceph:ceph -R /var/lib/ceph/osd/ceph-0
chown -R ceph:ceph /dev/mapper/osd$osd_id
systemctl start ceph-osd@$osd_id
}
startflashcache $1
脚本内容的内容全部是从ceph内部启动流程给剥离出来的,也就是全部按照ceph的自身的启动方式处理,只是加入了flashcache的处理,每次启动前,去掉缓存设备,这个flashcache的arond的模式是每次新加载的
怎么用
预制前提是部署好了一个osd
我们准备添加flashcache
获取缓存设备的uuid,就是PARTUUID
[root@lab101 ~]# blkid /dev/sdc1
/dev/sdc1: PARTLABEL="primary" PARTUUID="3b3546e5-65e5-426e-9659-f2e0d37a0895"
获取准备加缓存的osd id
[root@lab101 ~]# cat /var/lib/ceph/osd/ceph-0/whoami
0
[root@lab101 ~]# cat /var/lib/ceph/osd/ceph-0/fsid
bcdb55b0-e95b-4833-8362-18f633782632
得到0 和bcdb55b0-e95b-4833-8362-18f633782632
我们写入启动服务
systemctl enable ceph-volume-flashcache@3b3546e5-65e5-426e-9659-f2e0d37a0895--0--bcdb55b0-e95b-4833-8362-18f633782632.service
注意@后面有三个值,第一个是cache盘的uuid,第二个值为0,就是osd的id,第三个值就是osd的fsid,中间用--相连
如果想查询本机做了多少个flashcache的自启动
[root@lab101 ~]#ls /etc/systemd/system/multi-user.target.wants/ceph-volume-flashcache*
/etc/systemd/system/multi-user.target.wants/ceph-volume-flashcache@3b3546e5-65e5-426e-9659-f2e0d37a0895--0--bcdb55b0-e95b-4833-8362-18f633782632.service
执行加缓存的操作
systemctl start ceph-volume-flashcache@3b3546e5-65e5-426e-9659-f2e0d37a0895--0--bcdb55b0-e95b-4833-8362-18f633782632.service
[root@lab101 ~]# ll /var/lib/ceph/osd/ceph-0
total 24
lrwxrwxrwx. 1 ceph ceph 16 Oct 25 14:13 block -> /dev/mapper/osd0
-rw-------. 1 ceph ceph 37 Oct 25 14:13 ceph_fsid
-rw-------. 1 ceph ceph 37 Oct 25 14:13 fsid
-rw-------. 1 ceph ceph 55 Oct 25 14:13 keyring
-rw-------. 1 ceph ceph 6 Oct 25 14:13 ready
-rw-------. 1 ceph ceph 10 Oct 25 14:13 type
-rw-------. 1 ceph ceph 2 Oct 25 14:13 whoami
检查可以看到block的路径变更了
如果想去掉缓存,恢复没有缓存怎么处理,很简单
systemctl disable ceph-volume-flashcache@3b3546e5-65e5-426e-9659-f2e0d37a0895--0--bcdb55b0-e95b-4833-8362-18f633782632.service
systemctl stop ceph-osd@0
umount /var/lib/ceph/osd/ceph-0
systemctl start ceph-volume@lvm-0-bcdb55b0-e95b-4833-8362-18f633782632
systemctl enable ceph-volume@lvm-0-bcdb55b0-e95b-4833-8362-18f633782632
systemctl start ceph-osd@0
systemctl enable ceph-osd@0
总结
用这种方式每个osd的服务自己记录自己的,没有配置文件,启动服务就是记录配置的地方,需要就启动,不需要disable,都是通用标准操作
并且不干扰其它没有配置flashcache的osd
限制
目前这个只适用于arond的模式的,因为这个模式的cache设备是随时可分离的,随时新建,少了很多盘符续用的问题
更新历史
| why | when |
|---|---|
| 创建 | 2019年09月04日 |
| 更新 | 2019年12月9日 |
ceph与flashcache的around模式结合启动问题的更多相关文章
- 简单读!zookeeper单机模式的启动逻辑
zk用处如此之多,以至于每个地方都要你理解zk原理! 请按如下操作姿势打开: 1. 打开zk的git仓库地址:https://github.com/apache/zookeeper , 确认过眼神,它 ...
- IDEA Debug模式下启动慢的解决办法
工程没有做什么大的改动,近期Idea在debug模式下启动耗时800s +,run模式下200s.Idea debug模式启动的时候会有这样的提示: 方法断点会戏剧性的降低debug的速度.当时并没有 ...
- lesson - 2 yum /单用户/救援模式/Linux 启动
课程大纲:1. yum使用yum 是一个在线安装软件包的工具,它可以帮我们解决软件包的依赖,这个日后会详细介绍.我们介绍了以下几个用法:yum list 这个命令可以列出所有安装过和未安装的软 ...
- Linux忘记root密码 单用户模式 及启动加密
单用户模式: 在系统启动引导读秒时,按任意键进入系统选项 再按 e 键 选择第二项 按 e 进入编辑 输入 空格 1 然后回车 再按B 键 不需要密码即可进入系统 再passwd ...
- myeclipse的debug模式启动不了,但run模式可以启动
一.问题 在用myeclipse的开发web项目时,经常会打断点,然后利用debug模式启动.但是,今天debug模式启动不了,run模式又可以.这给调试带来了很大的麻烦. 二.解决办法 1.点击de ...
- eclipse的debug模式下启动不了tomcat
使用eclipse启动tomcat,正常模式下可以启动tomcat,却在debug模式下无法启动tomcat. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动to ...
- Mac单机模式安装启动Kafka
1.下载kafka,网址: https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.12-2.0.0.tgz 2.移动tar包到 ...
- Compatibility模式安装windows7后改为AHCI模式无法启动Windows7的解决办法
在用Compatibility模式安装Windows 7后,再在BIOS中去开启SATA硬盘的AHCI功能的话,就会出现无法启动的情况.只有改回Compatibility模式后,系统才恢复正常.经过试 ...
- Linux mint 启动文本模式(不启动图形界面)
Linux Mint 系统用了很久,很顺手,赞一个! 有一天想同时运行多个虚拟机linux系统做实验,想着只启动文本模式可以省点内存资源,结果试了多种方法都不成功,网上现有针对Ubuntu原版和Cen ...
随机推荐
- 移动吉比特H2-2光猫超级用户与密码
移动吉比特H2-2光猫超级用户与密码 超级用户名CMCCAdmin 密码aDm8H%MdA----------------版权声明:本文为CSDN博主「BenSon.Album」的原创文章,遵循CC ...
- 【图论】HDU 5961 传递
题目内容 题目链接 我们称一个有向图G是传递的当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个竞赛图,当且仅当它是一个有向图 ...
- 第一期chrome浏览器的小技巧------《提高搜索效率》
!!! 这次的技巧是:利用chrome提供的设置 提高你的搜索效率 !!! 我们经常遇到问题,搜索的时候很不方便 比如你在百度上搜索一个东西的时候正好没有搜到,那么你想找到这个东西的话,很明显要到其他 ...
- linux(centos8):安装配置consul集群(consul 1.8.4 | centos 8.2.2004)
一,什么是consul? 1,Consul 是 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置. Consul 是分布式的.高可用的. 可横向扩展的 2,官方网站: h ...
- beego log
package main import ( "github.com/astaxie/beego/logs" _ "xcms/routers" _ "x ...
- Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!
GitHub 17k Star 的Java工程师成神之路,不来了解一下吗! GitHub 17k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 17k Star 的Java工 ...
- java应用启动报错Unable to access jarfile xxxxx.jar
当使用命令:javar -jar xxxx.jar 启动应用时,报错Unable to access jarfile xxxxx.jar,这种主要是 jar 的名称或者路径有问题:
- JAVA 基于Jusup爬虫
java爬虫核心:httpclient slf4j jsoup slf4j 配置文件log4j.properties log4j.rootlogger=DEBUG,A1log4j.logger.cn. ...
- # ThreeJS学习7_裁剪平面(clipping)
ThreeJS学习7_裁剪平面(clipping) 目录 ThreeJS学习7_裁剪平面(clipping) 1. 裁剪平面简介 2. 全局裁剪和局部裁剪 3. 被多个裁剪平面裁剪后 4. 被多个裁剪 ...
- MFiX-DEM中的并行碰撞搜索
基于MFiX-19.2.2 DEM并行程序中的颗粒循环 在DEM并行程序中,每个进程只循环该进程包含的颗粒,并且每个进程还有一层ghost cell,用来存放另一个进程发送过来的颗粒信息. 下面添加一 ...