通过smb加速rsync


8

我正在将SMB上的Linux盒备份到NAS。我在本地安装NAS,然后重新同步大量数据(大约100GB)。我相信这需要花费很长时间:超过12个小时。一旦复制了所有内容,我希望速度会更快,因为每天几乎没有任何更改。

有没有办法加快速度?

我当时在想,也许rsync认为它可以与本地硬盘一起使用,并使用校验和而不是时间/大小比较?但是我没有找到强制进行时间和日期比较的方法。我还能检查什么吗?


我还建议改用SMB的NFS-我注意到(也许只是我自己)它在Samba中更快
沃伦(Warren)2009年

不幸的是,此NAS没有NFS,而现在,我仍然坚持使用它。
pupeno

使用端口映射器(例如nmap)检查NAS的功能。我遇到了几个运行本机rsync服务的NAS单元,即使文档中没有提及,配置中也没有提及。
凯尔__

另外,也请这个线程[ “rsync将NAS复制一切每次”] [1] [1]:serverfault.com/questions/262411/...
dtoubelis

请[每次rsync将NAS副本一切]还要检查这个线程[1] [1]:serverfault.com/questions/262411/...
dtoubelis

Answers:


28

我认为您对rsync算法以及应如何使用该工具有误解。

Rsync的性能优势来自进行增量传输-即仅移动文件中更改的位。为了确定更改的位,源主机和目标主机必须读取文件,并比较校验和以确定哪些位已更改。这是rsync的“魔术”部分-rsync算法本身。

当您使用SMB挂载目标卷并使用rsync从Linux视为本地源和本地目标(都安装在该计算机上)的文件中复制文件时,大多数现代rsync版本都切换到“整个文件”复制模式,然后关闭增量复制算法。这是一个“胜利”,因为在启用增量复制算法的情况下,rsync会(通过NAS的线路)读取整个目标文件,以确定文件的哪些位已更改。

使用rsync的“正确方法”是在一台计算机上运行rsync服务器,在另一台计算机上运行rsync客户端。每台机器将从其自己的本地存储中读取文件(应该很快),就文件的哪些位已更改达成一致,并仅传输这些位。它们使您正在使用rsync量大的'cp'。您可以使用“ cp”完成相同的操作,它可能会更快。

如果您的NAS设备支持运行rsync服务器(或客户端),那么您就是在做生意。如果仅打算通过SMB将其安装在源计算机上,则最好使用'cp'复制文件。


7
哦!投票!考虑到它在技术上是准确的,我很想知道为什么您不赞成这个答案。
Evan Anderson

我不能在NAS上运行rsync服务器,否则我会这样做。不使用rsync服务器时,rsync可以使用校验和或大小和日期时间来确定文件是否已更改。根据手册页,默认情况下将使用大小和日期时间,但是我的经验是它没有这样做,并且我看不到强制它的方法。我只看到一种强制校验和的方法。--checksum:如果没有此选项,rsync将使用“快速检查”(默认情况下),以检查每个文件的大小和上次修改时间在发送方和接收方之间是否匹配。
pupeno

埃文,请给我几分钟时间写我的评论。
pupeno

2
您看到什么行为告诉您正在对文件进行校验和?“快速检查”行为是默认行为,因此无法“强制”执行。如果您无法在NAS上运行rsync,请使用'cp'。速度会更快或更快。
Evan Anderson

根据我对rsync工作的理解,它应该检查本地日期和时间,远程日期和时间以及是否匹配而不复制文件。这意味着它不应该复制99%的文件,但是60GB大约要花费12h左右的事实告诉我,要么复制所有内容(这似乎就是您在暗示说cp会更快)。或者它实际上是校验和,这意味着它没有复制所有内容,而是下载了所有内容。
pupeno


4

是的,您可以加快速度。您需要使源或目标看起来像一台远程计算机,方法是将其寻址为“ localhost:”。

您表示正在本地安装SMB共享。这使源或目标看起来像是rsync的本地路径。rsync手册页指出,复制源和目标是本地路径的位置将复制整个文件。手册页中“ --whole-file”选项的段落中对此进行了说明。因此,不使用增量算法。使用“ localhost:”解决方法将恢复增量算法功能并加快传输速度。


1
我想知道应该rsync使用哪种方式…… 使用时间和日期戳来检查文件是否需要更新。如果需要更新,则rsync会将文件分成多个块并比较校验和。这意味着它将读取整个文件以执行此操作。因此,如果您没有远程运行的rsync守护程序,则无论如何都需要传输整个文件以进行分块和校验和,因此您也可以直接传输它。因此,在此情况下,此处概述的“解决方法”实际上没有任何帮助。
TylerDurden

3

以为我会把我的2便士丢进这里。

我的兄弟刚刚在他的办公室网络上安装了Buffalo NAS。他现在正在寻找异地备份,因此,如果办公室烧毁了,至少他仍然将他所有的业务文档都放在其他地方(许多英里之外)。

我的第一个障碍是要获得他拥有的VPS(小型Linux虚拟专用服务器,没有什么强壮的东西)以VPN用户的身份拨入其宽带路由器(他为此使用了DrayTek),以便它本身可以成为他的VPN,因此它可以安全地直接访问NAS。得到了排序并表现出色。

接下来的问题是将文件从NAS传输到VPS服务器。我首先进行了Samba安装,然后遇到了与您描述的完全相同(甚至更糟)的问题。我做了一个空运行的rsync,花了1个小时30分钟才弄清楚要传输的文件,因为正如Evan所说,在这种方法下,另一端不是rsync,因此它必须进行许多归档Samba安装上的系统调用/读取(通过PPTP /隧道连接,往返时间约为40毫秒)。完全不可行。

我几乎不知道Buffalo实际上运行了一个rsync守护进程,因此,使用它,整个空运行只需要1分钟30秒即可处理87k文件,总计50Gb。显然,传输50Gb文件(从出站带宽仅为100k / sec的宽带链接上的NAS)完全是另一回事(这将需要几天时间),但是,一旦初始rsync完成,则应进行任何增量备份润滑脂减轻(他的数据每天都不会有太大变化)。

我的建议是使用支持rsync的体面NAS,原因是Evan在上面说过。它将解决您的所有问题。


+1是让我知道Buffalo NASes运行rsync的原因–谢谢!
2012年

0

闻起来像您有一个便宜的NAS。也可能来自您的网络带宽...

当涉及大量IO时,“标准”消费者NAS确实很弱,这就是您要在此处进行的操作。它也可能是连接您的PC和NAS的廉价交换机,其强度不足以正确处理所有数据包。


同一台NAS,同一台交换机,另一台运行Windows的计算机,在不到四个小时的时间内即可备份到其中,并提供了更多信息。
pupeno


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.