Низкая производительность NFS при высокой задержке, rsync по ssh примерно в 100 раз быстрее

Можете ли вы проверить диск на наличие сбойных секторов или сбойных блоков? вы можете использовать команду badblocks или smartctl для проверки в Linux, я думаю, что плохой диск является единственной причиной вашей проблемы.

0
19.04.2021, 20:50
1 ответ

Мне кажется, вы пытаетесь использовать rsync неправильно. Протокол Rsync разработан для точного случая сравнения/синхронизации больших файловых систем на двух отдельных серверах. Он делает все возможное локально на как на локальном, так и на удаленном компьютере перед сравнением в середине.

Его протокол разработан таким образом, что агент rsync на одном компьютере взаимодействует с агентом rsync на другом, и протокол предназначен для значительного сокращения количества циклов (и общего объема данных ), необходимых для выполнения задачи.

То есть rsync предназначен для работы:

            [fast]        [slow SSH]        [fast]
File system <----> rsync <----------> rsync <----> File system

Rsync оптимизирован для производительности сети между двумя агентами, но он не может управлять протоколом, используемым для доступа к диску. Таким образом, когда вы монтируете удаленную файловую систему NFS, вы меняете профиль доступа к сети :

.
            [fast]        [fast]        [slow NFS]
File system <----> rsync <------> rsync <---------> File system

Rsync ничего не может с этим поделать, потому что он абсолютно не контролирует протокол NFS.


Одно конкретное отличие заключается в том, что в NFS каждый файл должен запрашиваться индивидуально .Чтобы исследовать дерево файлов, содержащее /foo/bar/baz, вы должны запросить /[подождать], затем запросить /foo[подождать], затем запросить /foo/bar[подождать] и, наконец, запросить /foo/bar/baz. При задержке 110 мс на запрос это задержка 330 мс, и вы получили только один файл.

Протокол Rsync между агентами не имеет этого ограничения. Агент, работающий на удаленной машине, с готовностью составляет список всех синхронизируемых файлов и каталогов в удаленной файловой системе и отправляет все. Всего один запрос на все дерево файлов!

См. , как работает rsync

4
28.04.2021, 22:51

Теги

Похожие вопросы