「Ceph」- 概念术语:OSD vs. Ceph OSD

  CREATED BY JENKINSBOT

OSD vs. Ceph OSD

ceph-osd(Ceph OSD,Object Storage Daemon)
OSD,Object Storage Device

Ceph OSD 与 OSD 是两个不同的术语:
2)OSD 表示 Object Storage Device,是物理或逻辑存储单元;
1)Ceph OSD 表示 Ceph Object Storage Daemon;

Ceph OSD 与 OSD 为 1:1 关系,所以在描述中通常将 OSD 与 Ceph OSD 合并称为”OSD“。在叙述时,我们也将使用该说法,除非特殊说明;

功能作用

数据存储

1)负责数据存储、复制、恢复、平衡;
2)对于任何读写操作请求, Client 端从 Ceph Monitor 获取 Cluster Map 之后, Client 将直接与 OSD 进行 I/O 操作的交互,而不再需要 Ceph Monitor 干预。这使得数据读写过程更为迅速,因为这些操作过程不像其他存储系统,它没有其他额外的层级数据处理;

数据存储方式:
1)早期使用 Filestore(其依赖于节点的文件系统,Ext4、XFS、Btrfs)
2)后面改用 Bluestore(直接接管块设备,以提高性能)

状态汇报

provides monitoring information to Ceph Monitors and Managers by checking other Ceph OSD Daemons for a heartbeat.

高可用性

Ceph 的核心功能特性包括高可靠、自动平衡、自动恢复和一致性。对于 Ceph OSD 而言,基于副本数的配置,Ceph 通过在多 OSD 节点创建的数据副本来实现高可用性以及容错性。在 OSD 中的每个对象都有一个主副本,若干个从副本,这些副本默认情况下是分布在不同 OSD 节点上。

Ceph 集群一般情况都包含多个 OSD 实例,At least three Ceph OSDs are normally required for redundancy and high availability.

每个 OSD 都可能作为某些对象的 Primary OSD ,与此同时,它也可能作为某些对象的 Secondry OSD,Secondry OSD 受到 Primary OSD 的控制,

在某些情况下,Secondry OSD 也可能成为 Primary OSD 。在磁盘故障时, Ceph OSD Deamon 的智能对等机制将协同其他 OSD 执行恢复操作。在此期间,存储对象副本的 Secondry OSD 将被提升为 Primary OSD ,与此同时,新的从副本将重新生成,这样就保证 Ceph 的可靠和一致;

Primary OSD

所谓“Primary OSD”指的是在 Acting-Set 中的第一个 OSD,该 OSD 负责每个 PG 与其第二 / 第三 OSD 直接的“互联(Peering)”操作;

另外,Primary OSD 还负责响“应客户端的写操作请求。当 Client 读取数据时,默认从 Primary OSD 读取。通过配置亲和性,能够改变这种行为;

处于 UP 状态的 OSD 保留在 Acting-Set 中;

Acting Set vs. Up Set

指的是负责某个 PG 的一组 OSD 的集合;

当 Primary OSD 变为 DOWN 状态时,首先将其从 Uping-Set 中移除,然后把第二 OSD 提升为 Primary OSD,同时 Ceph 将确定新的 OSD 集合来负责该 PG,这组新的 OSD 集合被称为 Up Set;

该组 Up Set 将从 Acting Set 同步数据,当数据同步完成后,Acting Set 将与 Up Set 一致;

# rados put -p rbd hosts /etc/hosts

# rados ls -p rbd

# ceph osd map rbd hosts
osdmap e670 pool 'rbd' (2) object 'hosts' -> pg 2.ea1b298e (2.e) -> up ([5,3], p5) acting ([5,3], p5)

// up set 为 OSD.5 OSD.3
// acting set 为 OSD.5 OSD.3

状态变迁

当 OSD 是 Down (服务已停止) 状态,然而它仍然被标记为 IN 状态。只要它的状态还是 IN,Ceph Cluster 就不会为它触发数据恢复;

默认情况下,Ceph Cluster 需要 5min 时间来将一个 DOWN 状态的磁盘标记为 OUT 状态,然后开始数据恢复。设置该时长是为了在发生短期的服务中断时避免不必要的数据移动,比如,当系统重启时;

我们可以根据需要去增加或者减少该超时时长;