我有一个新安装的 Ubuntu 服务器,它应该是我们虚拟机存储的新备份服务器。该服务器有 4 个网卡,其中 2 个 10Gbit(实际上是具有最新可用驱动程序的 intel x540-T2),用于连接到 SAN。我在本地安装了 nfs-share,并比较了复制包含约 30 个文件、大约 15 个虚拟机映像和相应日志文件的目录时的速度差异。图像大小在 8 GB 到 600 GB 之间。
使用:
cp -rf /mnt/nfs-share /backup-storage/
bmon 显示约为 600 MiB/s。
使用
rsync -av /mnt/nfs-share /backup-storage/
bmon 在最初几秒内显示一些数据包,暂停约 30 秒,然后增加到约 60-75 MiB/s。 CPU占用率在60%左右。
我应该/可以改变什么来使用rsync
与相同的性能cp
?
答案1
cp
我认为这些差异在和之间是相当明确的rsync
。请参阅这篇文章作为参考,标题为:rsync 性能概览。
The four commands tested were:
rsync $SRC $DEST
echo $SRC | cpio -p $DEST
cp $SRC $DEST
cat $SRC > $DEST/$SRC
The results for rsync, cpio, cp, and cat were:
user sys elapsed hog MiB/s test
5.24 77.92 101.86 81% 100.53 cpio
0.85 53.77 101.12 54% 101.27 cp
1.73 59.47 100.84 60% 101.55 cat
139.69 93.50 280.40 83% 36.52 rsync
我rsync
每天都使用。您可以采取一些措施来改善这种情况。
例如,您可以尝试使用-W
开关:
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
另外我建议确保您拥有 3.x 版本的rsync
.当我们升级到新版本时,有明显的改进。
答案2
使rsync具有与cp相同性能的方法是将其拼写为“cp”。
尽管净效果可能相同,但这两个命令之间的差异仍然很大。特别是,rsync 会进行大量读取以查看是否应复制某个文件或文件的一部分。
您想使用 rsync 有什么原因吗?因为 cp “盲目”复制,您将看到更高的原始性能。如果对于一组触发条件,使用 rsync 的“增量传输”机制,您将看到传输速率下降,CPU 使用率按照您报告的方式大幅上升。
答案3
对于此用例,rsync
是一台不必要的复杂机器。如果您同意基于比较文件修改时间和文件大小的同步,则只需在两端收集文件系统元数据,进行比较,然后通过(本地)命令复制已更改(或新)的文件cp
。
您可能对这个小型且简单的同步器感兴趣,它可以执行以下操作:Fitus/Zaloha.sh
它的使用方法如下:
$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"
为了实现分析阶段的最大速度,您可能希望跳过恢复脚本的生成:使用选项--noRestore
。此外,如果您安装了快速mawk
安装程序,请选择--mawk
使用它。
Zaloha.sh
通过命令收集文件系统元数据find
。剩下的一个问题是关于find
NFS 共享的性能......