LINUX.ORG.RU

Узкое место rsync по скорости передачи по сети

 , , ,


0

3

Привет, ЛОР.

Перекидываю файлы по сети на несколько сотен Гб (автоматического бэкап раз в день). Пробую использовать rsync.

iperf3 -c 192.168.88.23 -n 100M
Connecting to host 192.168.88.23, port 5201
[  5] local 192.168.77.30 port 43374 connected to 192.168.88.23 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  18.6 MBytes   156 Mbits/sec   23    126 KBytes
[  5]   1.00-2.00   sec  21.2 MBytes   178 Mbits/sec   17    112 KBytes
[  5]   2.00-3.00   sec  24.2 MBytes   203 Mbits/sec    0    215 KBytes
[  5]   3.00-4.00   sec  23.1 MBytes   193 Mbits/sec   22    178 KBytes
[  5]   4.00-4.53   sec  12.9 MBytes   205 Mbits/sec    3    162 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-4.53   sec   100 MBytes   185 Mbits/sec   65             sender
[  5]   0.00-4.53   sec  98.9 MBytes   183 Mbits/sec                  receiver

iperf Done.

Если делать так, то скорость очень неплохая между устройствами. Но rsync при бэкапе выдает такое:

2,02M 100%  245,79kB/s    0:00:08 (xfr#278, ir-chk=1166/2117)

Где-то чуть больше, где то чуть меньше. Эксперементы с параметрами проводил в таком порядке:

rsync -ahP
rsync -ahtP
rsync -ahWP
rsync -ahtWP
rsync -ahtzP
rsync -ahtzWP

+- везде одинаково вокруг 300 кб/сек. Грешу на шифрование ssh. В принципе, оно мне здесь не нужно, потому что данные передаются внутри туннеля wireguard. Но что в данном случае разумнее использовать? rsh? Второй инстанс ssh с минимальным шифрованием? Какие-то другие вариант? Посоветуйте. Только с учетом возможности полной автоматизации, т. к. это для автобэкапов файлов между двумя устройствами. Оба на GNU/Linux, естественно. Debian 12.5.


Потести скорость SSH:

openssl enc -aes-128-ctr -pass pass:"$RANDOM" -in /dev/zero 2> /dev/null | ssh 192.168.88.23 dd of=/dev/null status=progress

Для генерации псевдошума на хорошей скорости тут нужен процессор с AES-NI.

anonymous
()

не надо шифрование, в конечном итоге упрешься в проц, особенно если машинка еще что-то делает кроме как файлы хранит

на вот

rsync -rltgoDvW –delete

только это не правильный БЭКАП, это срез на конкретное время

Morin ★★★★★
()
Ответ на: комментарий от Xld

Надо явно как то обращаться к демону в обход ssh?

Ну там вообще-то для «rsync --daemon» конфиг нужно сделать. man rsyncd.conf
С удаленной машины обращаться к сконфигурированным в rsyncd.conf модулям.

vel ★★★★★
()

Грешу на шифрование ssh

Думаю, проблема в чём-то другом.

10.0.0.4 в РФ, 10.0.0.1 за границей, wg дополнительно завернут в wstunnel:

$: iperf3 -c 10.0.0.1
Connecting to host 10.0.0.1, port 5201
[  5] local 10.0.0.4 port 34574 connected to 10.0.0.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  39.0 MBytes   327 Mbits/sec   11    703 KBytes
[  5]   1.00-2.00   sec  27.6 MBytes   232 Mbits/sec    0    703 KBytes
[  5]   2.00-3.00   sec  46.6 MBytes   391 Mbits/sec    0    639 KBytes
[  5]   3.00-4.00   sec  46.1 MBytes   387 Mbits/sec    0    703 KBytes
[  5]   4.00-5.00   sec  44.6 MBytes   374 Mbits/sec    0    576 KBytes
[  5]   5.00-6.00   sec  38.4 MBytes   322 Mbits/sec    0    448 KBytes
[  5]   6.00-7.00   sec  44.8 MBytes   375 Mbits/sec    0    703 KBytes
[  5]   7.00-8.00   sec  44.2 MBytes   371 Mbits/sec    0    576 KBytes
[  5]   8.00-9.00   sec  38.5 MBytes   323 Mbits/sec    0    703 KBytes
[  5]   9.00-10.00  sec  46.5 MBytes   390 Mbits/sec    0    448 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   416 MBytes   349 Mbits/sec   11            sender
[  5]   0.00-10.06  sec   398 MBytes   332 Mbits/sec                  receiver

$: rsync -ru --info=PROGRESS2 Backups/05-23 vds:Backups/
    692.340.430 100%   20,56MB/s    0:00:32 (xfr#100, to-chk=0/101)
ALiEN175
()

У rsync прикол есть такой если файл 1 МБ передать со скоростью 10000000ГБ/с он отобразит 1МБ/с потому что ничего больше кроме 1МБ не передавали за эту секунду.

fucpsy
()
Последнее исправление: fucpsy (всего исправлений: 1)

Врядли это из-за ssh, даже с шифрованием он должен больше выдавать. С другой стороны мы ничего не знаем про железо. Ну и по-умолчанию он вроде как дельты для файлов считает. Возможно в этом и затык

cobold ★★★★★
()
Ответ на: комментарий от vel

Такой конфиг

pid file = /var/run/rsyncd.pid
uid = user
gid = user
read only = yes

[torrents]
comment = Torrents
path = /mnt/common/torrents
hosts allow = 192.168.77.23
hosts deny = *

[media]
comment = Media
path = /mnt/media
hosts allow = 192.168.88.23
hosts deny = *

Ошибок в работе сервиса нет. Скорость равна той, которую я описал. То есть он у меня работает:

● rsync.service - fast remote file copy program daemon
     Loaded: loaded (/lib/systemd/system/rsync.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-05-26 19:35:34 MSK; 4min 56s ago
       Docs: man:rsync(1)
             man:rsyncd.conf(5)
   Main PID: 2149424 (rsync)
      Tasks: 1 (limit: 18866)
     Memory: 940.0K
        CPU: 56ms
     CGroup: /system.slice/rsync.service
             └─2149424 /usr/bin/rsync --daemon --no-detach

May 26 19:35:34 nas systemd[1]: Started rsync.service - fast remote file copy program daemon.
May 26 19:35:34 nas rsyncd[2149424]: rsyncd version 3.2.7 starting, listening on port 873

Это я еще раз переустановил rsync и вручную его перезапустил, чтобы убедиться в работе. Он работает. Копираю я на другое устройство из /mnt/media. Скорость 300 кб/сек.

Xld
() автор топика
Ответ на: комментарий от vel

Проверил в локалке с компом-сервером, откуда выкачиваю бекап на удаленный комп, копирование через rsync. Результат:

3,48G  98%    6,74MB/s    0:00:07

Тоже очень медленно, при том что между устройствами гигабитный канал. Все это со включенным сервисом rsync. Такое ощущение, что все же не он используется, а ssh. Как задать явно с клиента, через какой сервис (rsync/sshd) rsync должен передавать файлы?

Xld
() автор топика
Ответ на: комментарий от Xld
rsync -ahPt rsync://192.168.77.30:873/mnt/common/torrents/dir1/ ./
rsync: [Receiver] failed to connect to 192.168.77.30 (192.168.77.30): No route to host (65)
rsync error: error in socket IO (code 10) at clientserver.c(139) [Receiver=3.4.1]

rsync -ahPt rsync://192.168.77.30:873/torrents/dir1/ ./
rsync: [Receiver] failed to connect to 192.168.77.30 (192.168.77.30): No route to host (65)
rsync error: error in socket IO (code 10) at clientserver.c(139) [Receiver=3.4.1]

PING 192.168.77.30 (192.168.77.30): 56 data bytes
64 bytes from 192.168.77.30: icmp_seq=0 ttl=64 time=6.415 ms
64 bytes from 192.168.77.30: icmp_seq=1 ttl=64 time=6.177 ms

--- 192.168.77.30 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.177/6.296/6.415/0.119 ms

При этом хост доступен, ssh к нему доходит, по ssh файлы копирует. ЧЯДНТ?

Xld
() автор топика
Последнее исправление: Xld (всего исправлений: 2)
Ответ на: комментарий от ALiEN175

tracepath нету, есть

traceroute 192.168.77.30
traceroute to 192.168.77.30 (192.168.77.30), 30 hops max, 60 byte packets
 1  192.168.77.30 (192.168.77.30)  68.485 ms  62.651 ms  68.294 ms
 2  192.168.77.30 (192.168.77.30)  126.969 ms  128.117 ms  177.431 ms

Информативно?

ss -tln | grep :873
LISTEN 0      5            0.0.0.0:873        0.0.0.0:*
LISTEN 0      5               [::]:873           [::]:*
Xld
() автор топика
Ответ на: комментарий от Xld

rsync: [Receiver] failed to connect to 192.168.77.30 (192.168.77.30): No route to host (65)

говорит о том, что вы либо не туда идёте, либо вам там не рады.

Что на клиенте говорт ip ro get 192.168.77.30 ?

Выполнив на клиенте sudo traceroute -T -p 873 192.168.77.30 получите более точную диагностику.

[torrents]
  path = /mnt/common/torrents
  hosts allow = 192.168.77.23

Обращаться к нему через rsync -ahP 192.168.77.30::torrents/dir1/ ./

Для проверки работоспособности сервера можно использовать rsync --list-only 192.168.77.30::torrents/dir1/ и эту проверку лучше всего выполнить прямо на сервере.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

На сервере

root@nas /mnt/media # ip addr show eno1
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 60:cb:ff:3a:79:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
    inet 192.168.77.30/24 brd 192.168.77.255 scope global dynamic eno1
       valid_lft 58317sec preferred_lft 58317sec
    inet6 fd80::38eb:f6ff:fe3f:7803/64 scope link
       valid_lft forever preferred_lft forever

root@nas /mnt/media # pgrep -a rsync
2171925 /usr/bin/rsync --daemon --no-detach

root@nas /mnt/media # systemctl status rsync.service
● rsync.service - fast remote file copy program daemon
     Loaded: loaded (/lib/systemd/system/rsync.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-05-26 19:59:52 MSK; 2 days ago
       Docs: man:rsync(1)
             man:rsyncd.conf(5)
   Main PID: 2171925 (rsync)
      Tasks: 1 (limit: 18866)
     Memory: 856.0K
        CPU: 51ms
     CGroup: /system.slice/rsync.service
             └─2171925 /usr/bin/rsync --daemon --no-detach

May 26 19:59:52 nas systemd[1]: Started rsync.service - fast remote file copy program daemon.
May 26 19:59:52 nas rsyncd[2171925]: rsyncd version 3.2.7 starting, listening on port 873
May 29 13:01:08 nas rsyncd[1626244]: name lookup failed for 192.168.77.30: Name or service not known
May 29 13:01:08 nas rsyncd[1626244]: connect from UNKNOWN (192.168.77.30)
May 29 13:01:08 nas rsyncd[1626244]: rsync denied on module torrents from UNKNOWN (192.168.77.30)

Сообщения в логе после предложенной команды

rsync --list-only 192.168.77.30::torrents/
Xld
() автор топика
Последнее исправление: Xld (всего исправлений: 1)
Ответ на: комментарий от Xld

Убрал из конфига rsyncd

hosts allow = 192.168.77.23
hosts deny = *

и rsync получил доступ. Разберусь позже с ограничениями и почему они не работают. Но главный вопрос не отпал. Скорость через rsyncd без ssh все еще 300 кб/сек.

Xld
() автор топика

при бэкапе

А не потому что rsync перед передачей файла считает дельты на обеих концах? Попробуй rsync-нуть в чистый каталог на сервере. Или это ты в чистый делаешь?

urxvt ★★★★★
()
Ответ на: комментарий от Xld

У тебя есть хоть одна машина в локалке рядом с сервером? Если есть, то проверяй с неё скорость.
Хотелось бы исключить wireguard из этой конструкции.

А что из себя представляет /mnt/common/torrent и /mnt/media ? С какой скоростью эти данные читаются?
tar -cf - /mnt/common/torrent | pv >/dev/zero

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)