2

Есть ли способ , чтобы nice RSync Deamon на машине назначения? Я должен rsync огромный кусок данных, включая множество небольших файлов, и я боюсь, что удаленный клиент RSync значительно замедлит пункт назначения.

2 ответа2

2

В моем Ubuntu 16.04 я имею следующий текст в /etc /default /rsync:

# run rsyncd at a nice level?
#  the rsync daemon can impact performance due to much I/O and CPU usage,
#  so you may want to run it at a nicer priority than the default priority.
#  Allowed values are 0 - 19 inclusive; 10 is a reasonable value.
RSYNC_NICE=''

# run rsyncd with ionice?
#  "ionice" does for IO load what "nice" does for CPU load.
#  As rsync is often used for backups which aren't all that time-critical,
#  reducing the rsync IO priority will benefit the rest of the system.
#  See the manpage for ionice for allowed options.
#  -c3 is recommended, this will run rsync IO at "idle" priority. Uncomment
#  the next line to activate this.
# RSYNC_IONICE='-c3'

Теоретически, установив эти значения равными 10 и -c3 соответственно, а затем перезапустив демон rsync, он должен запустить демон на запрошенных хороших уровнях. Однако после этого я обнаружил, что он все еще работает на хорошем уровне 0.

$ ps -lfp $(pidof rsync)
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root     18704     1  0  80   0 -  2785 poll_s 13:42 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

Так что здесь происходит? Я посмотрел на файл модуля systemd для rsync и нашел это:

$ cat /lib/systemd/system/rsync.service 
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf

[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach

[Install]
WantedBy=multi-user.target

Он даже не смотрит на мой файл /etc /default /rsync. Этот файл используется только в том случае, если вы используете System-V init-System. Для systemd (который используется по умолчанию с Debian 8 /jessie, он игнорируется.

Поскольку файл /lib/systemd/system/rsync.service может быть перезаписан, скопируйте его в /etc/systemd/system/rsync.service. Затем измените строку ExecStart, чтобы она выглядела следующим образом:

ExecStart=/usr/bin/nice -n 10 /usr/bin/ionice -c3 /usr/bin/rsync --daemon --no-detach

затем перезагрузил конфигурацию systemd (sudo systemctl daemon-reload) и перезапустил rsync (sudo systemctl restart rsync). Это дало мне следующее:

$ ps -lfp $(pidof rsync)
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root     18762     1  0  90  10 -  2785 -      13:43 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

Теперь у меня есть хорошее значение 10, как я хотел, но я не думаю, что оно выживет в следующий раз, когда я установлю обновление для rsync. В зависимости от вашего дистрибутива вы можете добиться успеха, просто изменив значения в /etc /default /rsync, но обязательно проверьте работающий процесс после перезапуска демона.

1

Используйте параметр --rsync-path для запуска любой оболочки или комбинации команд (включая sudo , nice и другие) вместо базового rsync на удаленной стороне.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .