rsync дуже повільний (коефіцієнт 8 - 10) порівняно з cp при копіюванні файлів з nfs-share у локальний dir


17

У мене щойно встановлений Ubuntu-сервер, який повинен бути новим резервним сервером для нашого VM-сховища. На сервері є 4 nics, 2 з них 10Gbit (насправді Intel x540-T2 з найновішим наявним драйвером), які використовуються для підключення до SAN. У мене nfs-share встановлено локально і порівнював різниці швидкостей під час копіювання каталогу з ~ 30 файлів, близько 15 vm-зображень та відповідних файлів журналу. Зображення мають розмір від 8 до 600 ГБ.

Використання:

cp -rf /mnt/nfs-share /backup-storage/

bmon показує, отже, близько 600 Мбіт / с.

Використання

rsync -av /mnt/nfs-share /backup-storage/

bmon показує деякі пакети в перші секунди, зупиняється приблизно на 30 секунд і потім накопичує до приблизно 60-75 МіБ / с. CPU становить близько 60%.

Що я повинен / міг би змінити, щоб використовувати rsyncтаку ж продуктивність, як і cp?

Відповіді:


20

Я думаю, що ці відмінності досить добре встановлені між cpі rsync. Дивіться цю статтю як посилання під назвою: Погляд на продуктивність rsync .

витяг:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

Я використовую rsyncщодня. Ви можете зробити, щоб покращити ситуацію.

Наприклад, ви можете спробувати використовувати -Wперемикач:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

Крім того, я хотів би запропонувати , переконавшись , що у вас є 3.x версії rsync. Були помітні поліпшення, коли ми перейшли до новіших версій.


15

Спосіб зробити rsync такою ж продуктивністю, як і cp - написати його "cp".

Різниця між двома командами значна, навіть якщо чистий ефект може бути однаковим. Зокрема, rsync робить читання, щоб побачити, чи слід скопіювати якийсь файл чи частину файлу чи ні.

Чи є якась причина, що ви хочете використовувати rsync? Тому що cp копіює «наосліп», ви побачите більш високу продуктивність. Якщо для набору умов запуску використовується механізм "передачі дельти" rsync, ви побачите падіння швидкості передачі та використання процесора в значній мірі, коли ви повідомляєте.


Я знаю про поведінку, але не очікував такого ефекту. Я думав, що, враховуючи, що CPU-Power та IOPS rsync повинні виконуватись принаймні на рівні 300 Мб / с, але якщо файл для копіювання не існує. Я ще не закінчив тестування. Резервне копіювання з rsync було б більш зручним, але я також можу написати сценарій, використовуючи cp, dd або все, що спадає на думку. Тепер я хочу перевірити різні можливості в різних файлових системах, щоб оцінити, що найкраще підходить.
душевний шлях

7
Ви можете назвати мене емпіриком, але коли ваші очікування та реальність не погоджуються, це помилка, як правило, не реальність. Є десяток причин, за які ви могли понести це покарання; навіть переплутування читання та запису на SAN може мати драматичні покази продуктивності залежно від тонких деталей програмного забезпечення.
msw

3
Я не сумнівався в реальності, просто про rsync, але через ці відмінності я піду писати сценарій за допомогою cp та деяких контрольних сум. Дякую за вашу пораду!
соулпат

Ні, просто не використовуйте rsync у мережевих файлових системах. На комп'ютер потрібно завантажити весь файл, так що ви втратите всю перевагу rsync.
Джакомо Катенацці

На жаль, ця відповідь неправильна у своїх деталях. Під час копіювання між "локальними" файловими системами (і так, NFS-кріплення є локальною файловою системою в цьому контексті), rsync не читає цільовий файл при копіюванні, якщо ви прямо не включите цю контрпродуктивну операцію --whole-file. У цій ситуації це як дуже повільно cp.
roaima
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.