Чому 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.