什么networking文件共享协议有最好的性能和可靠性?

我们有一个安装了一些Web服务器负载平衡。 我们希望有一些networking共享存储,所有的networking服务器都可以访问。 它将被用作存储用户上传文件的地方。 一切都在运行Linux。

我们应该使用NFS,CIFS,SMB,fuse + sftp,fuse + ftp吗? networking文件共享协议的select非常多,select它非常困难。 我们基本上只是想在多台机器上永久安装这个共享。 安全function不是一个问题,因为除了安装它的服务器之外,其他任何地方都无法访问networking。 我们只是希望它能可靠和快速地工作。

我们应该使用哪一个?

我投NFS。

NFSv4.1添加了并行NFS pNFSfunction,这使并行数据访问成为可能。 我想知道什么样的客户端使用存储,如果只有Unix,那么我会去基于性能数字的NFS。

简短的答案是使用NFS。 根据这个枪战和我自己的经验,这是更快。

但是,你有更多的select! 你应该考虑一个集群FS像GFS,这是一个多台计算机可以一次访问的文件系统。 基本上,你通过iSCSI共享一个块设备,这是一个GFS文件系统。 所有客户端(iSCSI说法中的启动器)都可以读取和写入。 Redhat有一个白皮书 。 你也可以使用oracle的集群FS OCFS来pipe理同样的事情。

redhat文件做了很好的工作,列出了FS与NFS的优缺点。 基本上如果你想要很大的空间来扩展,GFS可能是值得的。 另外,GFS示例使用光纤通道SAN作为示例,但这可能很容易成为RAID,DAS或iSCSI SAN。

最后,确保查看巨帧,并且如果数据完整性至关重要,那么如果使用带有巨帧的iSCSI,则使用CRC32校验和。

我们有一个2服务器负载的Web集群。我们已经尝试了以下方法在服务器之间同步内容:

  • 每台服务器上的本地驱动器每隔10分钟与RSYNC同步一次
  • 一个中央CIFS(SAMBA)共享到两个服务器
  • 一个中央NFS共享两台服务器
  • 运行OCFS2的共享SAN驱动器安装了两台服务器

RSYNC解决scheme是最简单的,但花费了10分钟才能显示更改,而RSYNC将更多的负载放在服务器上,我们必须用自定义脚本来限制它,以便每秒暂停。 我们也仅限于写信给源驱动器。

性能最快的共享驱动器是OCFS2集群驱动器,直到它发生疯狂和崩溃的群集。 我们还没有能够保持与OCFS2的稳定。 只要有一台以上的服务器访问相同的文件,加载爬上屋顶,服务器开始重新启动。 这可能是我们的培训失败。

次好的是NFS 。 它非常稳定和容错。 这是我们目前的设置。

SMB(CIFS)有一些locking问题。 特别是SMB服务器上文件的更改没有被Web服务器看到。 在SMB服务器故障时,SMB也倾向于挂起

我们的结论是,OCFS2具有最大的潜力,但在生产中使用之前需要大量的分析。 如果你想要一些简单可靠的东西,我会推荐一个带有Heartbeat的NFS服务器集群来进行故障转移。

我build议你POHMELFS – 它是由俄罗斯程序员Evgeniy Polyakov创build的,而且非常快。

在可靠性和安全性方面,可能CIFS(也称为Samba),但是NFS“看起来”更加轻量级,并且通过仔细的configuration,有可能不会将有价值的数据完全暴露给networking上的其他机器;-)

没有侮辱FUSE的东西,但它似乎…新鲜,如果你知道我的意思。 我不知道我是否信任它,但这可能只是我古老的古板,但有时在有价值的企业数据方面,有时会认为旧的古板主义。

如果你想在多台机器上永久安装一个共享,你可以玩一些奇怪的东西(主要是UID / GID问题),然后使用NFS。 我用它,并且已经很多年了。

NFS。 这是尝试和真实的,你可以有一个坚实的设置。 GFS性能通常很糟糕,特别是在大量小文件的文件系统上。 我没有使用OCFS,但是我通常对集群文件系统概念不满。 那里有Lustre,但这是另一个蠕虫的jar头…

我会build议反对NFS。 简而言之 – 我们有一个Web服务器场,JBoss,Apache,Tomcat和Oracle都使用NFS共享来共同configuration文件和logging。

当NFS共享消失的时候(当然是罕见的),整个事情就崩溃了(真的可以预见,我build议'devlopers'对这个configuration时间的快捷方式)。

我们使用的NFS版本似乎有一个问题,如果目标在写入过程中消失了,客户端将进入一个无休止的等待循环,等待NFS目标回来。 即使NFS盒重新连接 – 循环仍然没有结束。

我们使用了RHEL 3,4,5的混合。 存储在RHEL4上,服务器在RHEL5上,存储networking是一个单独的局域网,而不是在vlans上运行。

如果有一个负载均衡的前端,检查单个存储 – 这不是瓶颈您的系统?

您是否考虑过只读iSCSI存储连接,通过事件驱动脚本将上传的文件通过ftp / scp上载文件时上传到存储中?

我唯一的一次成功地实现了多个读取头的集中式存储在EMC存储arrays上……所有其他成本效益的尝试都有其缺点。

考虑GFS? GFS是一个集群文件系统,根据我的经验,它非常可靠。 它可以有多个期刊,它的规模相当好

但是你需要安装一些集群服务,而GFS并不完全知道它的快速性。 Otoh,对我来说总是够快的,但是ymmv。

我可能会迟一点,我们使用一个带有集群双端口的MD3220戴尔存储器,我们的单元有两个控制器,一个下来就会继续运行,直到我们解决这个问题。 由于硬盘,风扇,电源和控制器都是热插拔,所以我们更换零件。 至于格式,我们使用NFS。

如果你已经有了Web服务器并且擅长运行它们,为什么不考虑WebDAV呢?

NFS的简单答案+1。 我拥有已经安装好几年的NFS共享,没有问题。

如果您正在寻找超级可靠性,那么就应该考虑将DRBD引入混合中,以及分布式的自动故障转移NFS文件系统。

唯一的其他select(我熟悉)是iSCSI,但它可能是一个痛苦在后面configuration…

你会想到考虑像GFS这样的分布式FS,而iSCSI是过度的。

如果你想简单的使用NFS。 这很简单,快速,软安装相当强劲。 另外考虑禁用所有的locking垃圾。 我有Linux桌面,从NFS抓取所有的主目录和应用程序,它工作正常。

如果你想要使用Lustre的速度,比GFS更容易设置,并且很像RAID NFS。 我们使用Lustre为我们的集群。

你有一堆select,有各种各样的成本。 与FC,iSCSI共享的SAN或最近的新增function之一。 无论如何,它们的设置可能很昂贵,而且您仍然需要运行群集感知文件系统。 聚集的文件系统是一个痛苦的世界。 对于任何成功的希望,您需要单独的高速,低延迟的networking进行集群通信和数据。 即使这样,你很可能会得到一个小故障,导致一个节点被围起来并被杀死。

我遇到的唯一的群集文件系统就是VMFS。 但是,这是非常专业的,即使可以用于一般用途,也是没有用的。

NFS可能是您安装的方式。 如果您担心重新启动,您需要获得适当的NFS群集。 你可以做一个自制的设置,但会遇到上述问题。 最好的select(如果你有钱的话),是集群的NetApp文件pipe理器。 这是一个昂贵的select,但集群实际上没有任何麻烦。 不仅如此,它们非常快。

我会回应一些对NFS的警告 – 尽pipeNFS可能是你最好的select(听起来很奇怪)。

我有一个NFS客户端,我不得不从AC断开连接,因为NFS服务器已经消失,客户端(在内核)拒绝解锁或closures,因为NFS服务器不见了。

为了做到这一点,我坚持使用NFSv4,坚持TCP连接,使用巨型帧,并使用NFS集群。 你不能让你的NFS服务器消失。

GFS是一些严重的黑巫术。 获得简单的两个客户端群集所需的工作量与其他scheme相比是惊人的。 OCFS2部署起来要简单得多,但对于所有连接的服务器所涉及的内核模块版本来说,这是非常挑剔的 – 这只是一个开始。

除非你真的需要集群文件系统提供的那种低级访问,否则NFS或CIFS可能就是你所需要的。

在一个大的服务器场中,我们有数百万个用户创build的html页面。 NFS不能很好地工作,所以我们把它们放在一个mysql表中。 与遍历目录树相比,开销大致相同。

我已经使用SFTP,它为我的目的工作正常 – NFS是我的第一个度假胜地,但用户/组ID的funkiness使我很快下降。

只需设置公钥authentication,你将基本上被设置。 SSHencryption的CPU开销可能会稍微大一点,但是从来没有遇到任何数据损坏的问题。

尽pipeFTP很适合你的目的,但它更轻量。 大概你想让你的networking服务器做web服务,而不是ssh工作。