我有 3 台服务器,想在 PoC Openstack 设置中将它们用作存储集群。
每个服务器都有一个小型的 /dev/sda 用于操作系统等,还有一个大型的 /dev/sdb 我希望可供 Ceph 用作存储。
我可以使用 Juju Ceph charm 将 Ceph 部署到每台服务器。
正如预期的那样,Ceph charm 在每台服务器上设置了一个 Ceph Monitor,并报告已形成具有法定人数的集群。
文档中说,Ceph 主插件还会为找到的所有磁盘设置 Ceph-OSD。在我的例子中,它只在单个服务器上设置一个 OSD。
我是否正确理解了 Ceph 的主要功能?它是否应该设置 3 个 Ceph Mons 和 3 个 Ceph-OSD(为 /dev/sdb 配置)?
我对 Ceph 的了解很少,所以我仍在拼凑术语和概念。我认为单个 Ceph-OSD 可以管理块和对象存储,还是 Ceph 会将一些 OSD 仅分配给块,而将其他 OSD 仅分配给对象存储?
答案1
您介意发布您用于部署的配置文件吗?那会很有帮助。
考虑到您提供的硬件详细信息,我认为 charm 会设置 3 个 OSD(/dev/sdb 上每个服务器 1 个)。
您说的 Ceph 管理单个块和存储池是正确的。
答案2
乍一看,这可能有点令人困惑,ceph charm 既设置了 mon,又设置了 OSD。ceph-osd charm 只设置了 OSD(没有 mon),但其他方面都一样,而且选项也一样。您可以根据部署情况混合使用它们,并且可以将 ceph 和 ceph-osd charm 相互关联。
对于由 3 个服务器组成的最小集群(例如您拥有的),您需要 3 个 mon,因此您只需创建 3 个“ceph”charm 单元,它将在每个单元上配置所需的 mon 和 OSD。如果您拥有更多服务器(例如 6 个),您可以设置 3 个 ceph 单元和 3 个 ceph-osd 单元。
ceph 使用的存储可以通过 charm 上的 osd-devices 选项进行配置,它可以接受 /dev 中的设备路径或文件系统位置来放置文件,默认为 /dev/vdb - 您可能需要更改它。请参阅此处的文档:https://jujucharms.com/ceph/
最后,关于块和对象存储,较低级别的 ceph 提供“rados”服务,用于存储对象并使用低级 rados API 进行访问。在 Ceph 集群(具有多个 OSD)中,您可以创建多个“池”来保存这些对象。每个池都有一个名称,并且对象的名称在池中是唯一的(但您可以在不同的池中使用相同的对象名称,它们彼此隔离)——您还可以在每个池上设置各种选项,例如存储每块数据的副本数。但请注意,每个池都有开销(主要是放置组方面的开销),您不能随意创建它们,但您的安装中可能会有几个池。
在该 Ceph 集群之上,您可以构建许多服务,包括块存储(使用 RBD - Rados 块设备)和带有 REST API 的对象存储(使用 radosgw)。这两种服务都在底层使用 rados API 来存储和操作对象,但为对象提供更高级别的服务,例如块设备或 HTTP REST 接口。
使用对象存储网关(radosgw),您的对象通常以与网关内相同的方式命名和创建,这可能很明显,但是RBD rados 块设备将存储卷分成块(例如 4MB 块)并为每个块创建一个对象和一些存储有关整个块设备的元数据的附加对象。
您可以在同一个 ceph 集群和 OSD 上运行两种服务(或更多),但通常会将每种服务放入它自己的池中(radosgw 实际上使用了多个池)。
我希望这能帮助您开始使用 charm 本身、一些关于 ceph 的基础知识以及块存储和文件存储如何在 ceph 集群上共存。术语方面可能仍然有点令人困惑,所以我建议浏览一下手册并在 youtube 上搜索介绍 ceph 的各种讲座之一,这将真正帮助您掌握术语。