注意
本文档适用于 Ceph 的开发版本。
activate
一旦 scan 完成,并且 OSD 的所有捕获到的元数据已持久化到 /etc/ceph/osd/{id}-{uuid}.json,OSD 现在就可以“激活”了。
此激活过程通过屏蔽所有 ceph-disk systemd 单元来禁用它们,以防止 UDEV/ceph-disk 交互在启动时尝试启动它们。
只有当直接调用 ceph-volume simple activate 时才会禁用 ceph-disk 单元,但在系统启动时被 systemd 调用时则会避免禁用。
激活过程需要同时使用 OSD id 和 OSD uuid 来激活已解析的 OSD
ceph-volume simple activate 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
上述命令将假定 JSON 配置将在以下位置找到
/etc/ceph/osd/0-6cc43680-4f6e-4feb-92ff-9c7ba204120e.json
或者,也可以直接使用 JSON 文件的路径
ceph-volume simple activate --file /etc/ceph/osd/0-6cc43680-4f6e-4feb-92ff-9c7ba204120e.json
要求 uuid
需要 OSD uuid 作为额外步骤,以确保正在激活正确的 OSD。完全有可能存在一个具有相同 id 的先前 OSD,最终激活了不正确的 OSD。
发现
对于之前由 ceph-volume 扫描的 OSD,将使用 blkid 和 lvm 执行发现过程。目前仅支持具有 GPT 分区和 LVM 逻辑卷的设备。
GPT 分区将具有一个 PARTUUID,可以通过调用 blkid 进行查询;逻辑卷将具有一个 lv_uuid,可以针对 lvs(列出逻辑卷的 LVM 工具)进行查询。
此发现过程确保即使设备被重新用于另一个系统,或者如果它们的名称发生变化(例如 /dev/sda1 这种非持久性名称的情况),也可以正确检测到设备。
用于映射哪些设备对应哪个 OSD 的 JSON 配置文件将协调挂载和符号链接作为激活的一部分。
为确保符号链接始终正确,如果它们存在于 OSD 目录中,符号链接将被重新创建。
systemd 单元将捕获 OSD id 和 OSD uuid 并持久化它。在内部,激活将像下面这样启用它
systemctl enable ceph-volume@simple-$id-$uuid
例如
systemctl enable ceph-volume@simple-0-8715BEB4-15C5-49DE-BA6F-401086EC7B41
将启动 OSD id 为 0 且 UUID 为 8715BEB4-15C5-49DE-BA6F-401086EC7B41 的发现过程。
systemd 过程将调用 activate,传入识别 OSD 及其设备所需的信息,然后将继续执行以下操作
- # 将设备挂载到相应位置(按照惯例,这是
/var/lib/ceph/osd/<cluster name>-<osd id>/)
# 确保该 OSD 的所有必需设备都已准备就绪并正确链接。符号链接将始终被重新创建,以确保链接到正确的设备。
# 启动 ceph-osd@0 systemd 单元