Чому rsync роздвоюється сам? І чому один з таких роздвоєних процесів майже нічим не працює (як видно на iotop)?


11

Це стосується викладеної тут справи, і я теж переживаю те саме.

На одному з моїх серверів я запустив rsync, щоб створити резервну копію величезного каталогу (розміром більше 300 Gb) на іншому диску, встановленому на одній машині. Синхронізований каталог містить тисячі каталогів та файлів. Я видав одну команду rsync з 'nohup', а потім натиснув її на задній план за допомогою команди '&'. Повна команда, віддана на віддалену оболонку bash (за допомогою putty), була:

nohup rsync -avh /some/local/dir /backup/ >> /opt/rsync.dec22.log &

Потім, щоб перевірити, з якою швидкістю копіюються дані, я використав команду 'iotop' і виявив, що 3 rsync працює з тими ж параметрами. Під час пошуку я знайшов посилання вище, в якому сказано, що це нормально.

Але роблячи iotop для моніторингу лише тих і єдиних процесів rsync, що працюють у системі, я бачу, що один процес читає файли, один пише їх, а один простоює. Поведінка здається гарною, оскільки один процес робить лише одну справу за один раз, але що робить 3-й процес (розглядається як середній на зображенні нижче)?

Команда iotop, яку я використав:

iotop -p22250 -p22251 -p22252

Ось скріншот для виводу команди iotop:

команда iotop виводить показ 3 rsync процесу

Я прошу цю причину, я багато використовую rsync і хочу зрозуміти її поведінку на довгострокову користь. Я навіть читав посібник, але в ньому нічого не сказано.

Відповіді:


9

rsync - програма, призначена для клієнта та сервера. Сервер читає і клієнт пише. Уявіть, що замість одного комп’ютера у вас були комп’ютери через мережу, я впевнений, що це набагато зрозуміліше, якщо ви думаєте саме так.

Потім є контролер. Оскільки операції вводу-виводу мають тенденцію до певного ризику, випуск IO не повинен викликати повне блокування або збій. Отже, він створює вилку для кожного з'єднання і сидить на задньому плані.


Дякую за знання Я розумію це з огляду на окремі комп'ютери в мережі, кожен комп'ютер виконує частину роботи синхронізовано. Але чи можете ви також віднести мене до поведінкової документації, де я можу прочитати більше таких матеріалів про rsync, а також про концепцію? Також хотілося б знати, як передані дані читання передаються процесом читання в процес, що пише? Чи використовується концепція IPC?
Гаутам Сомані

3
@GautamSomani Офіційна сторінка rsync стане найкращим джерелом для таких. rsync.samba.org Також про те, як це працює, можна ознайомитись тут: rsync.samba.org/how-rsync-works.html Якщо ви хочете отримати ще детальні відомості, вам, ймовірно, доведеться копатись до джерела.
Бурхливий

Оригінальний автор запускає rsync локально. Він не підключається до rsyncd, тому немає можливості, щоб демон демонтував свою дитину. І підключень до мережі немає. Отже, це питання, чому rsync вилки, коли вони виконуються локально. Відповідь оманлива і неправильна.
drookie

@drookie Не має значення, локальна вона чи по мережі. Це працює так само. Це також пояснює таку поведінку в офіційному документі, який я пов’язав прямо над вашим коментарем, який також говорить, "або в межах локальної передачі, через віддалену оболонку або через мережевий сокет".
Сердитий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.