2016-08-06 48 views
-1

我们公司有五个亿的用户,我们存储用户的代码文件,用户可以编辑和添加自己的文件,就像网络IDE,网络IDE列表中的用户的文件。我们使用PHP函数来实现这些操作,如READDIR,和的file_get_contents file_put_contents,我们使用了MooseFS,但是当我们在程序中读取文件,特别是缓慢的加载速度。速度快的分布式文件系统对于小文件

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

回答

1

五个百万条目是小到关系数据库。我不知道为什么你觉得需要将它们存储在文件系统中。

是否每个用户需要的所有文件将在启动时加载?如果是的话,我想知道系统的设计。无论您如何设计,该操作都是O(N)

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

0

在任何分布式文件系统,当我们考虑对小文件操作的最关键的一个方面就是网络延迟 - 它应该这样的分布式文件系统组件之间(如0.1毫秒)尽可能小。实现它的最好方法是使用可靠的开关,并将所有机器连接到同一个开关。另外,在分布式文件系统中(尤其是在MooseFS中)最好的是可扩展性 - 这意味着,你拥有的节点越多(并且计算的分布越多,即在多个安装平台上同时完成),集群越快。

如果使用MooseFS,请查看MooseFS 3.0,因为在小文件操作,因为3.0版本的改进。目前这是一个简单的方法,因为您不必进行“革命”(升级前请记住备份主服务器上的/ var/lib/mfs - 即元数据)。 MooseFS可以很好地处理小文件,所以配置中可能会出现问题?另外在MooseFS(仍然考虑小文件操作)中,最重要的事情之一是在主服务器的BIOS中具有较少CPU核心的高CPU时钟(例如3.7 GHz)和禁用节能选项因为主服务器是单线程进程)。对于大块服务器和客户端来说,情况是不同的 - 它们是多线程的,所以在使用多核CPU时可以获得更好的结果。

此外,在第4款 “虚拟机和MooseFS” 在MooseFS Best practices说:

[...]我们不建议在虚拟机上运行MooseFS成分(特别是主服务器(S)) 。

所以,如果你在虚拟机上运行MFS,你实际上可能会有很差的结果。