0

我使用 nginx->radosgw->ceph 集群,其中每条放置的数据同时放置在 3 个 osd 上(每个 osd 是一个单独的 osd 服务器)整个集群包含 9 个 osd 服务器。Ceph v10(如果这很重要)

比如说,我的数据是一个 5KiB 的小文件。集群处于正常状态。

问题:当我通过 nginx->radosgw 从集群中获取(请求)我的数据时,OSD 选择了什么来从 SSD 磁盘接收实际信息?

  1. 这是一个返回整个 5KiB 数据的“主”OSD 吗?

  2. 这是否是所有 3 个 OSD 都包含这块,它同时从每个 3 个 OSD 返回整个 5KiB 数据?

  3. 除了保存这块 5KiB 数据的 3 个 OSD 中的一个之外,这是否是任何一个,它选择返回实际数据,并且数据可以从 3 个 OSD 中的任何一个返回,但只有一个选定的 OSD 会返回整个 5KiB 数据?

  4. 这是 3 个 OSD 中的任何一个,它保存了这块 5KiB 数据,它返回,比如 osd1 返回 1KiB + osd2 返回 3KiB + osd8 返回 1KiB = 5KiB ?

逻辑是什么?

感谢您耐心阅读上述选项。提前感谢您的答案。

4

1 回答 1

0

问题:当我通过 nginx->radosgw 从集群中获取(请求)我的数据时,OSD 选择了什么来从 SSD 磁盘接收实际信息?

客户端总是向主 OSD 发送读写请求。对于所需的其余工作,主 OSD 负责。

因此,在复制池的情况下,主 OSD 将直接响应请求,仅依赖其本地存储。整个对象将从主 OSD 读取,不会涉及其他 OSD。

在纠删码池的情况下,客户端也会向主 OSD 请求数据,当主 OSD 接收到来自其他相关 OSD 的所有数据块时,主 OSD 会将对象全部提供给客户端。在缺少块的情况下,主 OSD 还将查询奇偶校验块以解码数据。

于 2018-12-07T21:06:05.167 回答