Передача огромных объемов данных в качестве входных данных для команды оболочки.

Гораздо лучше использовать rsync напрямую между двумя хостами, если это возможно. Помните, что rsync создан для оптимизации сетевого ввода-вывода за счет увеличения дискового ввода-вывода; при использовании rsync в файловой системе NFS дисковый ввод-вывод преобразуется в сетевой ввод-вывод, так что это очень неоптимальное решение. Кроме того, если rsync считает, что и источник, и место назначения являются локальными, он будет отключать оптимизацию и каждый раз передавать полные файлы вместо использования дифференциального алгоритма, который отправляет только различия.

Допустим, у вас есть файл размером 5 ГБ, который отличается только 1% данных между источником и местом назначения.

  • При передаче между хостами rsync будет проверять контрольную сумму исходного и целевого файлов и передавать только разницу; в месте назначения файл воссоздается с использованием старого файла и новых данных из источника, а затем старый файл заменяется.
  • При локальной передаче нет смысла проверять контрольную сумму каждого файла, то есть вам придется читать 2 x 5 ГБ и записывать 1 x 5 ГБ для файла примера. При переключении в режим всего файла rsync нужно только прочитать 1 x 5 ГБ и записать 1 x 5 ГБ. На локальных дисках это имеет смысл, когда используется NFS, пропускная способность сети просто зашкаливает.

Если вы можете использовать rsync напрямую для хоста, обслуживающего файловую систему NFS, сделайте это, и вы увидите значительное улучшение производительности.

1
30.05.2020, 19:30
0 ответов

Теги

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