ceph RBD有负载均衡的能力吗?

does ceph RBD have the ability to load balance?

我对ceph了解不多。据我了解,RBD是ceph的分布式块存储设备,相同的数据应该存储在组成ceph集群的几台计算机上。那么,这个分布式块设备(ceph RBD)有负载均衡的能力吗?换句话说,如果多个客户端(在我的情况下,它是 QEMU)使用这个 RBD 块存储并且它们同时读取相同的数据,那么 ceph RBD 会平衡流量并同时从不同计算机发送给客户端集群还是只有一台计算机将其数据发送给多个客户端?如果我有一个由6台计算机组成的ceph集群和一个由3台计算机组成的ceph集群。这些RBD的性能有什么区别吗?

这不是负载平衡,而是 ceph 的分布式特性允许并行服务多个客户端。如果我们关注大小为 3 的复制池,则有 3 个不同的磁盘(在不同的主机上)存储完全相同的对象。但是总有一个主 OSD 将写请求转发给其他副本。这使得写入请求稍慢,但读取请求仅由主 OSD 提供服务,因此它比写入快得多。由于客户端直接与 OSD“对话”(它们从 MON 获取地址),许多客户端可以并行服务。特别是因为 OSD 不会将 RBD 存储为单个对象,而是分成许多按“归置组”分组的对象。 但是,如果您真的谈论由多个客户端读取的完全相同的对象,您必须知道 RBD 上有 watchers 锁定它们,因此只有一个客户端可以更改数据。如果您能更详细地描述您的场景,我们可以提供更多信息。

If I have a ceph cluster composed of 6 computers and a ceph cluster composed of 3 computers. Is there any difference in the performance of these RBD?

这取决于实际配置(合理数量的 PG、crush 规则、网络等),但通常答案是肯定的,您拥有的 ceph 节点越多,您可以并行服务的客户端就越多。与其他存储系统相比,Ceph 的性能可能不是最好的(当然,这取决于实际设置),但它的扩展性非常好,以至于随着客户端数量的增加,性能保持不变。

https://ceph.readthedocs.io/en/latest/architecture/