在数据中心之间共享 /home

use*_*506 17 linux home-directory datacenter share

我有两台服务器,分别位于荷兰和法国的数据中心。两者都在运行 Debian Wheezy。我需要在他们之间共享 /home 并具有良好的性能。服务器上有 300 多个用户,其中大约 30 个应该能够在给定时间在给定服务器上拥有活动进程,每个进程具有 50 kbit 读取和 20 kbit 写入/秒,短峰值约为 2000 kbit/ s 阅读。在本地存储上使用 iotop 进行测量。我有很多小文件,总共大约 500000 个,需要尽可能低的延迟。服务器之间的 Ping 为 17 毫秒,使用 scp 和 wget 时连接能够达到大约 20-30 MB/s。似乎也应该有足够的带宽可用,但是...

到目前为止我已经证实: sshfs:似乎它比 nfs 具有更好的性能,但它随机地将文件的权限更改为 root,导致应用程序崩溃。

nfs:减慢方法,尝试了 noatime 和一堆其他选项,但它仍然表现缓慢,即使只有几个进程处于活动状态。

drbd:5 个小时的死胡同,当我意识到我实际上无法在两个系统上安装文件系统时:-(

glusterfs:拥有所有数据的本地副本听起来确实很有希望,但随机文件访问确实很慢,运行一段时间后,它变得难以置信的慢,几乎挂起。noatime 没有帮助。

再次 nfs:仍然缓慢。

对着键盘哭:根本没有改善。

接下来要尝试什么?每个失败的试验都在上周花费了一个晚上或更长时间,我真的很希望下一个方法起作用。是的,在两台服务器之间共享文件系统至关重要。

感谢您对这个问题的任何新想法。

mga*_*iel 3

有一些可能的解决方案:

  1. 您可以选择像 DRBD(或上面提到的 MARS)这样的复制块存储,但您需要在块存储之上设置一个集群文件系统。此类文件系统可以是 GFS2 或 OCFS2,据我所知,它们都在 Debian 内核中可用。DRBD 可以处理主/主,您可以同时将其安装在两台服务器上。但是,如果您使用标准文件系统执行此操作,则一台服务器不知道另一台服务器,您将在几秒钟内破坏您的文件系统。顶部的集群文件系统将处理通信和锁定,以便两个节点都可以写入同一块。

  2. /home 使用分布式文件系统。您可以在http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems找到此类文件系统的列表。但要小心并明智地选择。他们都不能施展魔法,并且都有各自的缺点。Gluster就是这样一个文件系统。对于某些系统,您可能需要的不仅仅是两个节点。

  3. 如果不需要实时复制并且近乎实时的文件同步就足够了,那么可以看看 BitTorrent Sync ( http://www.getsync.com/)、Dropbox或替代方案。每个服务器都有自己的 /home,但更改会基于文件复制到其他服务器。