小文件的快速分布式文件系统

时间:2016-08-06 14:15:24

标签: filesystems distributed-filesystem

我们公司有500万用户,我们存储用户的代码文件,用户可以编辑和添加他们的文件,就像web IDE,web IDE列表用户的文件。我们使用php函数来实现这些操作,比如readdir,file_get_contents和file_put_contents,我们使用 MooseFS ,但是当我们读取程序中的文件时,特别是加载速度慢。

所以,我们需要更换文件系统,希望有人能给我一些建议,我们有大量的小文件,应该使用分布式文件系统。

2 个答案:

答案 0 :(得分:1)

关系数据库中有500万个条目很小。我想知道为什么你觉得需要将它们存储在文件系统中。

每个用户是否都要求在启动时加载所有文件?如果是的话,我对这个系统的设计感到好奇。无论你如何设计,该操作都是O(N)

如果将这500万个小文件放入关系数据库或NoSQL数据库中,然后让每个用户连接到它并查询他们想要的特定文件,那么就无需在启动时重复加载它们。问题解决了。

答案 1 :(得分:0)

在任何分布式文件系统中,当我们考虑对小文件进行操作时,最重要的一个方面是网络延迟 - 它应该在这样的分布式文件系统组件之间尽可能小(如0.1 ms)。实现它的最佳方法是使用可靠的开关并将所有机器连接到同一个开关。

此外,在分布式文件系统中(特别是在MooseFS中),最好的是可伸缩性 - 这意味着,您拥有的节点越多(您的计算越多分布式,即同时在多个节点上完成)一个坐骑),群集越快。

如果您使用MooseFS,请查看MooseFS 3.0,因为自3.0版以来对小文件的操作有所改进。这是一个简单的方法,因为您不必进行“革命”(在升级之前记得备份主服务器上的/ var / lib / mfs - 即元数据)。 MooseFS可以很好地处理小文件,所以可能配置有问题吗?

另外在MooseFS中(仍在考虑小文件操作),最重要的事情之一就是拥有高CPU时钟(例如3.7 GHz),CPU核心数量少,并且在主服务器的BIOS中禁用了节能选项(因为Master Server是一个单线程进程)。对于Chunkservers和Clients,情况有所不同 - 它们是多线程的,因此在使用多核CPU时可以获得更好的结果。

此外,如第4段{虚拟机和MooseFS中的MooseFS Best practices所述:

  

[...]我们不建议在虚拟机上运行MooseFS组件(尤其是主服务器)。

因此,如果您在VM上运行MFS,实际上可能会导致结果不佳。