Bluestore下的OSD开机自启动分析
OSD 开机启动原理
整个Bluestore现在由官方推出的ceph-volume工具进行管理,用以替代之前的ceph-disk。回顾之前ceph-disk是通过在xfs文件系统中打上相应的attributes,之后通过制定udev rules来实现启动。无论Ceph版本如何变化,基本的OSD自启动思路都是给块设备打标签->定制开机服务去触发执行。总结一下就是
Filestore的思路是: OSD打上xfs(attr) -> 由ceph-disk 触发执行
Bluestore的思路是: OSD打上LVM(tag) -> 由ceph-volume 触发执行
因此只要搞清楚LVM的tag机制,基本上就能很快搞定OSD自启动的相关排错问题。
Filestore的OSD启动机制可以参考 http://www.zphj1987.com/2016/12/26/manage-ceph-osd-journal-uuid/
udev配置: https://github.com/ceph/ceph/blob/master/udev/95-ceph-osd.rules。
LVM 科普: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/
LVM 基本构架
一个简单 LVM 逻辑卷的组成如下
LVM 逻辑卷的基本物理存储单元是块设备,比如一个分区或者整张磁盘。将这个设备初始化为 LVM 物理卷(PV)。
要创建一个 LVM 逻辑卷,就要将物理卷合并到卷组(VG)中。这就生成了磁盘空间池,用它可分配 LVM 逻辑卷(LV)。这个过程和将磁盘分区的过程类似。逻辑卷由文件系统和应用程序(比如数据库)使用。
LVM tag简介
tag信息存储在PV的metadata中。
tag名称最长可为 1024 个字符的字符串。可使用小横线开始。允许的字符包括 [A-Za-z0-9_+.-]。从 Red Hat Enterprise Linux 6.1 发行本开始,允许的字符列表扩大为可包含 "/"、"="、"!"、":"、"#" 和"&" 字符。
Bluestore打标签
打标签是在OSD初始化的prepare阶段进行,各种tag的含义直接在源码中标注一下,具体代码如下
最终的效果可以通过下面命令查看
ceph-volume 服务自启动OSD
查看/usr/lib/systemd/system/ceph-volume@.service,ceph-volume服务对应的内容如下:
查看ceph-volume-systemd会发现是调用的ceph-volume trigger去触发读取lv tag,代码如下
trigger类具体的实现如下
跟Activate实现,最终干活的就是activate_bluestore,具体看代码
小结一下流程
Tag的手工维护
新建lv tag
删除lv tag
查看lv tag
欢迎订阅本公众号cephbook,干货满满,专业老司机教你搞"对象"存储!
领取专属 10元无门槛券
私享最新 技术干货