NFS Over OpenVPN:最佳性能增强器

NFS Over OpenVPN:最佳性能增强器

我有两个 VPS - 一个运行 2008 Server R2,另一个安装的是 Ubuntu 12.04。我使用 Windows VPS 进行 Quickbooks 和其他几个应用程序的 RD 会话,并使用 Ubuntu VPS 作为 NFS 文件存储和 OpenVPN 端点。问题是通过 VPN 的 NFS 性能非常糟糕,我的意思是它经常无法连接并且经常超时。

如果我在隧道外设置 NFS,性能还可以...不是很好但可以管理,所以我知道它是 VPN 隧道。

有没有什么针对 openvpn 或 NFS 的调整可以让我尝试一下以提高性能?

答案1

我曾在 ADSL 连接上使用 openvpn 尝试过 NFS 配置,也尝试过不同的 NFS 挂载选项,您可以在此处找到完整的帖子: 通过 ADSL(或慢速连接)上的 OpenVPN 实现 NFS

我在这里引用有趣的部分:我读过很多帖子,也尝试过建议的解决方案的合理子集,这是最好的技巧的总结:

  • 使用小于 MTU 大小的 NFS 数据包大小(默认值为 8Kbytes,新值应小于 1500bytes,很少有人建议使用 1024bytes)
  • 使用 NFS TCP 连接类型;不要在 ADSL/WAN 上使用 UDP
  • 使用 NFS 异步选项
  • 不要设置非常小的超时时间,保留默认的 60 秒(timeo=600)或.. 我也尝试过成功设置 10 秒(timeo=100)
  • 有了硬挂载选项,让我们添加 intr 选项

对于 Linux 用户,这里有一个软挂载的小型 fstab 配置示例:

servername:/shared/     /mnt/foldername/  nfs     rw,suid,dev,soft,exec,nouser,async,noauto,timeo=100,user,rsize=1024,wsize=1024,tcp 0 0 

下面是硬安装:

rw,suid,dev,intr,exec,nouser,async,noauto,timeo=100,user,rsize=1024,wsize=1024,tcp 0 0 

通过 vpn+adsl 的 NFS 仍然非常慢(目前我以大约 150 KB/秒的速度传输文件,这比没有提议的更改要好得多)。请考虑一下我的 7Mbit ADSL 的下载带宽为 800KB/秒。

PS:我稍后也会检查 openvpn 碎片,谢谢分享。希望我的发现也能有用。

PS2:这些技巧在我的环境中非常有效,并且我从不同的人那里得到了两个积极的反馈。

答案2

我做了所有调整以通过 ipsec 链接获得最佳 NFS 性能,“ls /mnt/remote1/etc”仍然需要 12.5 秒。(我距离 280 毫秒,13Mbps/2Mbps 是我最慢的链接)

经过一番搜索,我不断发现 WebDAV 可以作为替代方案。我在客户端上使用带有 webdav 和 davfs2 的 Apache 来挂载共享。使用此设置,ls 从 12.5 秒缩短到 1.5 秒,并且我获得了 10Mbps 的下载速度。现在非常实用。

如果您想要 root 访问权限,则需要使用“CFLAGS=-DBIG_SECURITY_HOLE”构建 apache。这对我来说没问题,因为所有用户都具有 root 访问权限,而且我也只通过 ipsec 隧道为 webdav 提供服务。

答案3

可以尝试以下几件事:

查看 OpenVPN 中的以下选项:fragment、mssfix、link-mtu。基本上,所有与数据包大小和碎片化有关的选项。太小的 VPN 数据包可能会通过分割 NFS 数据包而降低性能。另一方面,太大的 VPN 数据包可能会降低性能,因为某些路由器无法很好地处理它们。在这里很难得出一个简单的一般规则。

尝试在 OpenVPN 上启用/禁用压缩并观察这对性能有何影响。

确保您的 VPN 服务器使用 UDP 进行传输,而不是 TCP。

在 NFS 客户端,查看选项:retrans、rsize、wsize - 或与数据包大小和错误处理相关的任何其他选项。根据您的情况,较小的数据包大小实际上可能会提高性能(在 LAN 上,情况通常相反)。

对于此类问题,没有万无一失的答案,但问题很可能出在上述领域。

答案4

Fabiano Tarlao 给出的这些建议非常有用: https://thegoodcodeinn.blogspot.be/2015/06/nfs-over-openvpn-over-adslor-slow.html?showComment=1488621905080#c2984550821264645538

我在 Casper Netboot 上通过 OpenVPN 站点到站点隧道使用了这个内核参数:

NFSOPTS=tcp,intr,timeo=100,rsize=1024,wsize=1024

相关内容