Filesystems 面向小文件的快速分布式文件系统

Filesystems 面向小文件的快速分布式文件系统,filesystems,distributed-filesystem,Filesystems,Distributed Filesystem,我们公司有500万用户。我们存储用户的代码文件。用户可以编辑和添加他们的文件,就像web IDE一样,web IDE列出用户的文件。我们使用PHP函数来实现这些操作,例如readdir、file\u get\u contents和file\u put\u contents。我们使用了MooseFS,但是当我们读取程序中的文件时,尤其是加载速度慢 因此,我们需要更换文件系统,我希望有人能给我一些建议,我们有大量的小文件,应该使用哪个分布式文件系统。对于关系数据库来说,500万个条目很小。我想知道你

我们公司有500万用户。我们存储用户的代码文件。用户可以编辑和添加他们的文件,就像web IDE一样,web IDE列出用户的文件。我们使用PHP函数来实现这些操作,例如readdir、file\u get\u contents和file\u put\u contents。我们使用了MooseFS,但是当我们读取程序中的文件时,尤其是加载速度慢


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

对于关系数据库来说,500万个条目很小。我想知道你为什么觉得有必要将这些存储在文件系统中

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


如果将这500万个小文件放入关系数据库或NoSQL数据库,然后让每个用户连接到该数据库并查询他们想要的特定文件,那么就不需要在启动时重复加载它们。在任何分布式文件系统中,当我们考虑小文件上的操作时,最重要的一个方面是网络延迟——在这样的分布式文件系统组件之间,它应该尽可能小(如0.1毫秒)。实现这一目标的最佳方法是使用可靠的交换机,并将所有机器连接到同一个交换机

此外,在分布式文件系统中(特别是在MooseFS中),最好的事情是可伸缩性——这意味着,您拥有的节点越多(并且您的计算分布得越多,即在多个装载上同时完成),集群运行得越快

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

此外,在MooseFS中(仍在考虑小文件操作),最重要的事情之一是具有高CPU时钟(如3.7 GHz),具有少量CPU内核,并禁用主服务器BIOS中的节能选项(因为主服务器是单线程进程)。对于Chunk,服务器和客户端的情况是不同的——它们是多线程的,所以在使用多核CPU时会得到更好的结果

此外,如第4段所述。“虚拟机和MooseFS”:

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


因此,如果在虚拟机上运行MFS,结果可能会很差。

我遇到了同样的问题:小文件的性能非常低(虽然不是MooseFS,但我尝试了gluster和google磁盘存储)。我很好奇你最后干了什么?