Назад | Перейти на главную страницу

Многопоточная синхронизация файлов между 2 серверами Linux

На данный момент я запускаю rsync для 2,2 миллиона файлов общим объемом 250 ГБ, а это занимает около 700 тысяч файлов за 6 часов.

Кто-нибудь знает инструмент, подобный rsync, который может делать это с несколькими потоками, чтобы он работал быстрее?

Я сомневаюсь, что здесь ограничивающим фактором является процессор. Скорее всего, вы ограничены как пропускной способностью сети для передачи, так и дисковым вводом-выводом; особенно задержка для всех этих вызовов статистики.

Можете ли вы разбить иерархию файловой системы на более мелкие части для параллельной обработки?

Что такое исходные файлы и что их записывает или изменяет? Можно ли отправлять изменения по мере их появления на уровне приложения?

Если дисковая подсистема принимающего сервера представляет собой массив с несколькими дисками, запуск нескольких процессов rsync может повысить производительность. Я запускаю 3 процесса rsync для копирования файлов на сервер NFS (RAID6 с 6 дисками на группу рейдов) для насыщения Gigabit Ethernet.

Этот парень сообщает о базовой оснастке Python, которая запускает несколько процессов rsync. http://www.reliam.com/company/featured_geek

Я читал много вопросов, похожих на этот. Я думаю, что единственный реальный ответ - вручную разбить копию / переместить. Здесь будет проблема с IOps. Если вам от этого станет легче, я сейчас перемещаю около 200 миллионов файлов, которые занимают более 100 ТБ дискового пространства.

Вы можете попробовать многопоточный клон cp для Linux (с открытым исходным кодом): http://static.usenix.org/event/lisa10/tech/slides/kolano.pdf