Rsync через SSHFS зависает

Я имею sshfs настройка для подключения к другой системе (Rackspace Cloud Sites), которой у меня нет ssh доступ к (но по какой-то причине я могу использовать sshfs? Перейти рисунок). Я пытаюсь rsync файлы из sshfs смонтировать на мой локальный диск. Это несколько тысяч маленьких файлов (1k-200k). Иногда rsync просто останавливается и на некоторое время зависает на файлах очень маленького размера. Он будет приостановлен, скажем, текстовый файл 10 КБ в течение примерно 5 минут, а затем продолжится.

Есть ли место, где я могу посмотреть на своей машине, чтобы определить, почему rsync зависает так? Или есть хороший шанс, что это просто проблема на другом конце, с которой я ничего не могу поделать?

Мои параметры rsync просто -avrP,

1 ответ

Решение

Хорошо, я собираюсь сделать удар в этом, потому что я думаю, что моя идея имеет смысл.

В этом случае вы имеете дело с несколькими кэшами, и это то, что вас сбивает с толку, я думаю.

Первое, что делает rsync, это определяет, какие файлы ему нужно перенести. Обычно это делается путем создания экземпляра rsync на удаленной стороне, чтения метаданных для каждого из файлов в каталоге в источнике, в то же время считывая метаданные для локальных файлов, а затем сравниваются два набора метаданных., Все более новое (или другое, в зависимости от параметров rsync) передается.

У вас нет "удаленной стороны", согласно rsync. Вы работаете "локально", поэтому он будет перебирать как каталоги, так и источник и место назначения.

Это очень интенсивно использует диск, особенно с кучей маленьких файлов - чем больше файлов, тем больше дискретных дисковых операций. Это приводит к значительному перерасходу диска, плюс он заполняет кэш метаданными из этих файлов.

Обратите внимание, что это происходит на всем пути вниз по стеку. Ваша локальная машина кэширует метаданные из файловой системы FUSE, которую вы смонтировали через ssh И локальный каталог. Удаленная машина кэширует метаданные с локального монтирования диска. И хост виртуальной машины, на котором работает ваша удаленная машина, почти наверняка перегружен и дает вам раздутую память.

Я подозреваю, что очень вероятно, что вы пересекаете пороговые значения, когда он замерзает, и все должно наверстать упущенное и либо дешифроваться, либо менять местами.

Мне было бы очень интересно посмотреть, если это произойдет, когда вы делаете rsync через ssh без монтирования диска.

Другие вопросы по тегам