Bluestore下的OSD开机自启动分析

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,干货满满,专业老司机教你搞"对象"存储!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180614G18Q0L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券