我正在考虑selectceph作为我自制的MAID(大容量空闲驱动器)的分布式文件系统。
据我所知,Ceph面向集群使用,并在OSD上(相对于CRUSH地图)均匀分布数据,并尝试利用不同节点上的读操作的并行性。
在我的情况下,我不需要最大化传播和吞吐量,在理想的情况下,它应该填充前N个OSD(其中N是复制因子),然后才开始填充接下来的N个OSD,以最小化相邻数据检索。
我可以以某种方式通过调整布局组数和CRUSH贴图来实现这种行为吗? 或者,如果这是不可能的,我可以至less让ceph停止拆分文件到一个以上的块?
我不认为类似于你想要达到的东西可能与ceph。 据我所知,ceph是一个分布式的文件系统 ,它通过使用复制来确保高容错性。 在这里阅读:
Ceph的目标主要是完全分布,没有一个单一的故障点,扩展到exabyte级别,并免费提供。
ceph的力量是可扩展性和高可用性:
可扩展性和高可用性
在传统体系结构中,客户与集中式组件(例如,网关,经纪人,API,外观等)进行对话,该集成组件作为复杂子系统的单个入口点。 这对性能和可扩展性都造成了限制,同时引入了单点故障(即如果集中式组件停机,整个系统也停止运行)。
Ceph消除了集中式网关,使客户端可以直接与Ceph OSD守护进程进行交互。 OSD守护进程在其他Ceph节点上创build对象副本,以确保数据的安全性和高可用性。 Ceph还使用一组监视器来确保高可用性。 为了消除集中,Ceph使用了一种叫做CRUSH的algorithm。
我想指出的是,ceph是为了确保集群环境中物理磁盘的使用,以确保更高的弹性,高可用性和透明度。 不安静你在找什么。
如果您担心性能或磁盘I / O,则可以使用此选项(称为“ 主亲和性”) ,例如,可以使用SATA来对SAAS磁盘进行优先级sorting。 在这里和这里阅读更多。
主要亲和力
当Ceph Client读取或写入数据时,它总是联系演示组中的主OSD。 对于设置[2,3,4],osd.2是主要的。 有时OSD与其他OSD(例如,磁盘速度慢或控制器速度慢)不太适合作为主要的工具。 为了防止性能瓶颈(特别是读取操作),同时最大限度地提高硬件的利用率,可以设置Ceph OSD的主要关联性,以便CRUSH不太可能将OSD用作演示集中的主要部分。
ceph osd primary-affinity <osd-id> <weight>
主要亲和力默认为1(即,OSD可以充当主要)。 您可以将OSD的主要范围设置为0-1,其中0表示OSD不可用作主显示器,1表示可以将OSD用作主显示器。 当权重小于1时,CRUSH不太可能selectCeph OSD守护进程作为主节点。
我知道这并不能完全回答你所有的问题,但可能会提供一些思考的食物。
在此处查看详情: http : //docs.ceph.com/docs/master/rados/operations/crush-map/#primary-affinity
这里有很好的博客解释ceph集群。