у нас есть два сервера syslog и процесс rsync между ними. Процесс rsync запускается каждые 15 минут. Мы обновляем журналы ежедневно, но, в конце концов, все еще остаются десятки ГБ журналов, а это означает, что операции ввода-вывода жесткого диска становятся довольно тяжелыми. (Я думаю, потому что rsync всегда синхронизирует целые файлы)
Дело не в том, что файлов журнала много, просто файлы журнала становятся довольно большими.
Есть ли способ постепенной синхронизации? Например, "уже есть первые 100 000 строк журналов, я хочу отправить только последние 2000?"
Или вы могли бы предложить другие улучшения такой установки? В настоящее время мы используем команду rsync -avrH.
Спасибо за ваши предложения!
Кажется, что система работает так, как задумано. В протокол rsync только отправляет изменения в существующие файлы в удаленный файл. Он делает это, определяя, различаются ли временные метки локального и удаленного файлов. Если они есть, то считывает контрольные суммы вычислений локального файла для блоков (как и удаленный), и измененные блоки отправляются на удаленный.
Это всегда требует полного сканирования файла, так как я не думаю, что вы можете исключить его части.
Если ввод-вывод действительно является для вас проблемой, я бы подумал о более частом ротации журналов. Это будет означать, что после поворота и закрытия файл будет рассматриваться для rsync только один раз. Файл активного журнала также будет намного меньше, поэтому потребуется меньше операций ввода-вывода, чтобы выяснить, где находятся изменения.