Rsync 速度超过两台配备 10Gb NIC 的 Debian 服务器

Rsync 速度超过两台配备 10Gb NIC 的 Debian 服务器

我在新的 debian/openmediavault 服务器上使用此 rsync 命令,以便将所有数据从旧服务器移至此服务器:

rsync -hazP --stats -e "ssh -T -c [email protected] -o Compression=no -x" [email protected]:/srv/27829c9c-dbc1-4408-a111-56dbcd8f0ec0/media/ /srv/mergerfs/norman_pool2/media

在这两种情况下,数据都位于 unionfs 或 mergefs 池中。 10.10.10.15 是源服务器上 NIC 的 IP,应使其仅通过 10Gb 进行通信,因为该端口已使用 DAC 电缆插入新服务器上的 10Gb NIC。唯一的其他接口是主要的 1Gb NIC,每个接口都有一条线路连接到我的路由器/交换机

新服务器是英特尔 I3 12100,配备 32 GB 内存,旧服务器是戴尔 R710,配备双 Xeon L5664 CPU 和 32 GB 内存。它们在处理过程中都显示出较低的 CPU 利用率和 RAM 利用率,但我没有看到较大文件的速度超过 15MB/s,较小文件的速度不超过 5-10MB。我认为我见过的最高速度是 18MB/s,这对于直接 10Gb 连接来说似乎慢得离谱

有什么我没有想到的,或者命令可以用来加快速度的任何东西

答案1

编辑:哎呀,忘记了 tar 的参数,这样它就可以 tar 一些东西......

Rsync 特别适合更新存储库,特别是如果只有部分文件发生更改(例如增长的日志文件等),但在这里您说您希望复制所有内容。

由于源计算机和目标计算机上的 cpu 使用率都很低,并且您需要移动所有数据,因此使用更简单的工具(例如 tar?)可能会看到一些改进。

在目标服务器的 ~destuser/.ssh/authorized_keys 上有一个 ssh 密钥,然后简单地:

( cd /somesourcedir/ && tar czf - ./ ) | ( ssh destuser@destserver "cd /somedestdir/ && tar xzf -" )
# send the full content of /somesourcedir/ into /somedestdir/
# Do use `z` (gzip) option only if most of the data can easily be compressed.
# If most of the data is videos or jpegs or already compressed files, take out both z
# and it will be lighter on the cpu and maybe even a bit faster

并且不要中断它......因为没有办法从停止点继续 tar (特别是这里远程 tar 位于单独的进程上)...

如果你确实中断了它,你应该找到聪明的方法来只发送可能不完整的最后发送的文件,以及以下丢失的文件和目录,这涉及到 shell 命令的一些巧妙使用......或者再次使用 rsync 来完成工作?

请小心使用常规 ssh,尤其不要添加任何压缩(尤其不要使用任何 -t (或其变体)提供终端模拟,因为它会弄乱 tar 输出并修改远程文件)。

我相信您还可以添加:|光伏 | ,而不仅仅是 | ,获取有关吞吐量速度的一些信息( pv 是:管道查看器)...但我不记得 pv 的选项来显示简单的 MB/s 信息(iirc,一个选项允许您提供它,如果您知道的话) ,预期要传输的总大小,但如果 tars 具有 z 选项,则信息将非常不同)

相关内容