Как оценить, сколько времени займет rsync каталога размером 427 ГБ, состоящего из 470 тыс. подкаталогов и 4476 тыс. файлов?

  • У меня есть каталог, который я хочу rsync через 1Gb LAN на другую машину.

  • Команда rsync:

    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh root@machine.local:source-dir destination-dir

  • Этот каталог размером 427GB состоит из 470571 подкаталога и 4476474 файлов.

  • rsync не завершился в выходные.

Как я могу оценить, сколько времени займет rsync?

ОС на обеих машинах - CentOS 7.

0
задан 19 October 2020 в 21:58
3 ответа

Пришло время для некоторых приблизительных оценок Ферми с единицами GNU в качестве калькулятора.

Представьте себе это был один большой архив, который можно было копировать последовательно. Ссылка на 1 Гб, скажем, с накладными расходами на передачу приходится 70% от этого.

You have: (.7 / 8) GB /s
You want: hr / 427 GB
        reciprocal conversion
        * 1.3555556
        / 0.73770492

Но на это ушло больше полутора часов. При большом количестве небольших файлов ввод-вывод метаданных преобладает над временем передачи, и оно в среднем невелико:

You have: 427 GB / 4476474
You want: kB
        * 95.387575
        / 0.010483546

Предположим, что rsync должен выполнять ввод-вывод для каждого файла или каталога для проверки метаданных и другой ввод-вывод для их копирования. Вы не описали хранилище, но указали наихудший случай использования счетчика SATA, поэтому 50 операций ввода-вывода в секунду.

You have: 50 / s
You want: hr / (2 * 5000000)
        reciprocal conversion
        * 55.555556
        / 0.018

Два с четвертью дня на самом деле мало, если вы сказали, что остановили его на 3-й день.

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


О более быстром копировании: копируйте архивы или изображения, а не файлы. Гораздо меньше метаданных файла и последовательная копия. Например, возьмите снимок LVM и используйте dd , чтобы передать всю файловую систему по сети. Не такой гибкий, как rsync, может копировать только весь том.

1
ответ дан 4 January 2021 в 09:20

Оценка составляет (время для сбора информации о файле) + (время для записи данных).

Время для сбора информации о файле:

Выполнить ls -lR> / dev / null над файлами. Это хорошая оценка того, сколько времени потребуется для lstat () каждого файла.

Время записи данных:

Время записи обычно медленнее, чем чтение, поэтому измерьте скорость записи на место назначения с dd bs = 8k count = 53375000 if = / dev / zero of = filename.data . (Время подсчета 8k составляет около 427 ГБ)

Вы также можете учитывать время передачи, но канал 1G может быть быстрее, чем диски могут записывать, поэтому он становится нефакторным. Конечно, если связь была ниже скорости записи (скажем, у модема 9600 бод), это будет решающим фактором.

1
ответ дан 4 January 2021 в 09:20

Включите параметр -v и - progress

Это отобразит таймер обратного отсчета, пока идет процесс копирования.

user@ubuntu:/opt/$ rsync -v --progress test.iso /tmp/
test.iso
  1,459,486,720 100%   51.41MB/s    0:00:27 (xfr#1, to-chk=0/1)

sent 1,459,843,134 bytes  received 35 bytes  53,085,206.15 bytes/sec
total size is 1,459,486,720  speedup is 1.00

В этом примере процесс копирования займет 27 секунд ( 0:00:27 ). Таймер обратного отсчета запускается с 27 секунд (процесс копирования 0%) и полностью опускается до нуля секунд (процесс копирования 100%). После завершения 27 секунд были повторно отображены как индикатор того, что весь процесс занял в общей сложности 27 секунд.

Другой вариант - передать команду rsync по конвейеру команде pv

Ссылка: Здесь

1
ответ дан 4 January 2021 в 09:20

Теги

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