针对密集读写的分布式文件系统的选择

针对密集读写的分布式文件系统的选择

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

  • 阶段 1:读取少量大文件(最多 6Gb)并写入相对较大的文件(最多 1-2 Gb)。
  • 第 2 阶段:读取和写入大量(数百个)小文件,然后将其组合成更大的文件;这些文件还会与作为“事务点”的临时文件一起生成。

这些服务器不共享同一个机箱,而是通过千兆以太网连接。

我最初将 NFS 共享放在一台服务器上,按照我之前的问题但是并发程度导致了可用性和锁定问题,从而导致流程在第二阶段经常失败。

现在我可以使用服务器中的磁盘了,于是我开始考虑使用分布式文件系统。我最初的方法(感谢其他地方的成功测试)是使用 GlusterFS(分布式+复制设置)。

然而,虽然它在第一阶段运行完美,但在第二阶段却引发了无穷的问题,因为网络延迟不够低,无法处理池中所有服务器的所有这些并发读写,导致各个服务器不同步,从而出现奇怪的错误(丢失文件、奇怪的权限被拒绝错误......)。

同样,“问题”在于服务器本身(或者其中的一部分,我不需要全部使用)需要运行计算并提供存储(这是一种捐赠的资源,所以我不能做更多)。

所有这些都是为了解释用例,然后引发一个问题:什么是处理“第 2 阶段”的最佳分布式文件系统?请注意,我需要文件级别的某些东西,例如挂载点或虚拟设备。

答案1

我相信蜥蜴FS农场金融系统非常适合这项任务。

两种存储系统都使用元数据(即目录)服务器,允许对数百万个文件进行低延迟操作。
蜥蜴FS“主服务器”(即元数据服务器)使用 RAM(7_000_000 个文件的内存占用小于 3 GiB),而农场金融系统元数据服务器使用PostgreSQL。

答案2

文件系统会使数据库变得很差,而网络文件系统会使数据库变得更差。

第二阶段:对我来说,它很像数据库。

如今,选择很多。基本键/值存储数据库的设置和维护相对简单。这是一本很棒的书,可以帮助您了解有哪些选择。

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

答案3

投入我的 $.02:

看一眼头孢菌素。在每台服务器上投入半 GB 内存(使它们全部成为 OSD),并将三台服务器指定为 MDS/MON(根据负载,它们可能会或可能不会运行其他密集型内容)。将其用作对象存储或块设备或文件系统……这取决于您……它可以是冗余的,也可以是快速的。它可以扩展(经过一些调整)到PB 级

相关内容