密集读写的分布式文件系统的select

我有一系列服务器(HP ProLiant,34台服务器),每台服务器都有500 G的硬盘空间。 这些服务器是计算集群的一部分,运行的进程大致分为两个“阶段”:

  • 阶段1:读取less量大(高达6Gb)的文件,并写入相对较大(高达1-2Gb)的文件。
  • 阶段2:读写大量(数百个)小文件,然后将其合并成更大的文件; 这些文件也随着作为“事务点”的临时文件一起生成。

服务器不共享相同的机箱,并通过Gbit以太网连接。

根据我之前的问题 ,我最初在一台服务器上放置了一个NFS共享,但是并发性水平导致了可用性和locking问题,因此经常在第二阶段导致进程失败。

现在,我可以使用服务器中的磁盘,我想过使用分布式文件系统。 我的初始方法(用于感谢其他地方的成功testing)是使用GlusterFS(分布式+复制安装)。

然而,虽然它在第一阶段完美运行,但是由于networking中的延迟不足以处理池中所有服务器的所有这些并发读取和写入,导致各种服务器不同步,因此怪异的错误(缺less文件,奇怪的权限拒绝错误…)错误。

此外,“问题”是服务器本身(或其中的一部分,我不需要全部使用)需要运行计算和提供存储(这是一个捐赠的资源,所以我不能做超过那)。

所有这些都解释了用例,然后提示这个问题:什么是最好的分布式文件系统来处理“第二阶段”? 请注意,我需要文件级别的东西,例如装入点或虚拟设备。

文件系统使蹩脚的数据库,networking文件系统做出更糟的。

阶段2:闻起来很像我的数据库。

这些天有很多的select。 一个基本的键/值存储数据库可以相对简单的安装和维护。 这是一个很好的书,可以找出可能的select。

http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks

我相信LizardFS和GfarmFS非常适合这项任务。

两个存储系统都使用元数据(即目录)服务器,以便在数百万个文件上执行低延迟操作。
LizardFS “主”(即元数据服务器)使用RAM(内存占用less于3 GiB的7_000_000文件),而GfarmFS元数据服务器使用PostgreSQL。

扔我的$ .02:

看看ceph 。 把它放在每台服务器上半个千兆字节的内存(使所有的OSD),并指定三台服务器作为MDS / MON(取决于负载他们可能会或可能不会运行其他密集的东西)。 使用它作为对象存储或作为块设备或作为文件系统…这取决于你…它可以是冗余的,它可以是快速的。 它缩放(一些调整)到PB 。