我有一系列服务器(HP ProLiant,34 台服务器),每台都有 500 G 的硬盘空间。这些服务器是计算集群的一部分,运行的过程大致分为两个“阶段”:
- 阶段 1:读取少量大文件(最多 6Gb)并写入相对较大的文件(最多 1-2 Gb)。
- 第 2 阶段:读取和写入大量(数百个)小文件,然后将其组合成更大的文件;这些文件还会与作为“事务点”的临时文件一起生成。
这些服务器不共享同一个机箱,而是通过千兆以太网连接。
我最初将 NFS 共享放在一台服务器上,按照我之前的问题但是并发程度导致了可用性和锁定问题,从而导致流程在第二阶段经常失败。
现在我可以使用服务器中的磁盘了,于是我开始考虑使用分布式文件系统。我最初的方法(感谢其他地方的成功测试)是使用 GlusterFS(分布式+复制设置)。
然而,虽然它在第一阶段运行完美,但在第二阶段却引发了无穷的问题,因为网络延迟不够低,无法处理池中所有服务器的所有这些并发读写,导致各个服务器不同步,从而出现奇怪的错误(丢失文件、奇怪的权限被拒绝错误......)。
同样,“问题”在于服务器本身(或者其中的一部分,我不需要全部使用)需要运行计算并提供存储(这是一种捐赠的资源,所以我不能做更多)。
所有这些都是为了解释用例,然后引发一个问题:什么是处理“第 2 阶段”的最佳分布式文件系统?请注意,我需要文件级别的某些东西,例如挂载点或虚拟设备。
答案1
答案2
文件系统会使数据库变得很差,而网络文件系统会使数据库变得更差。
第二阶段:对我来说,它很像数据库。
如今,选择很多。基本键/值存储数据库的设置和维护相对简单。这是一本很棒的书,可以帮助您了解有哪些选择。
http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks