Максимізація продуктивності та пропускної здатності rsync - безпосередньо підключені гігабітні сервери


27

У мене є два сервери Dell R515, на яких працює CentOS 6.5, причому один з широкоформатних NIC в кожному безпосередньо приєднаний до іншого. Я використовую пряме посилання, щоб щовечора підсилювати резервні копії з основного сервера в парі на вторинний за допомогою rsync over ssh. Контролюючи трафік, я бачу пропускну здатність ~ 2 Мбіт / с, що набагато менше, ніж я очікував від гігабітного порту. Я встановив MTU на 9000 з обох сторін, але це, здається, нічого не змінило.

Чи є рекомендований набір налаштувань та оптимізацій, які б привели мене до максимальної доступної пропускної здатності? Більше того, оскільки я використовую rsync через ssh (або, можливо, просто NFS) для копіювання мільйонів файлів (~ 6Tb невеликих файлів - величезна поштова скринька Zimbra), оптимізації, які я шукаю, можливо, повинні бути більш конкретними для мого конкретного випадку використання .

Я використовую ext4 з обох сторін, якщо це має значення

Спасибі

EDIT: Я використав наступні rsyncваріанти з майже подібними результатами:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

В даний час я переглядаю той самий рівень поганої продуктивності при використанні cpдля експорту NFS через ту саму пряму кабельну лінію.

EDIT2: після закінчення синхронізації я міг запустити iperfі виявив, що продуктивність становила близько 990 Мбіт / с, повільність була пов’язана з фактичним використанням даних.


1
Ви повинні додати rsync до своїх тегів. Ви перевіряли час перерахування частини rsync? Низька пропускна здатність може бути пов’язана з невеликими файлами. Чи можете ви опублікувати команду rsync, щоб перевірити параметри?
kranteg

@kranteg прошу редагувати
dyasny

2
Перевірте зв’язок із iperf.
ewwhite

yup, iperf показує 991mbits / s, я думаю, це такий набір даних, який був настільки повільним
діасний

Ви не можете мати хороший спосіб пошуку з rsync та набором даних з невеликими файлами. Ви обов'язково повинні спробувати дьоготь.
kranteg

Відповіді:


24

Кількість файлів та накладні шифрування SSH, ймовірно, є найбільшою перешкодою. Ви не збираєтесь бачити швидкість проводів на подібній передачі.

Варіанти вдосконалення включають:

  • Використання rsync + SSH з менш затратним алгоритмом шифрування (наприклад -e "ssh -c arcfour")
  • Виключення шифрування повністю через транспорт SSH з чимось на зразок HPN-SSH .
  • Блокові перекази. Знімки, dd, ZFS знімок відправити / отримати , і т.д.
  • Якщо це разова або нечаста передача, використовуючи tarnetcat ( nc), mbuffer або якусь комбінацію.
  • Перевірте свої tuned-admнастройки CentOS .
  • Видалення аніме з кріплення вашої файлової системи. Вивчення інших параметрів кріплення файлової системи.
  • Буфери для передачі / прийому NIC.
  • Налаштування rsyncкоманди. Буде чи -W, в цілому-файли опція має сенс тут? Чи ввімкнено стиснення?
  • Оптимізуйте підсистему зберігання даних щодо типу передачі (SSD, кількість шпинделів, кеш-пам'ять контролера RAID.)

Я скинув SSH для NFS, побачивши майже однакові результати. Блоковані передачі - це те, що я планую, переключитися на резервні копії на основі LVM, а також резервні копії на другий сервер, де я буду запускати ZFS для дедупінгу. аніме вимкнено з обох сторін. Не використовується компресія. Як оптимізувати підсистему зберігання для такого виду передачі? Джерело має два RAID10 на 12x 10k SAS-накопичувачі, один на локальних накопичувачах, інший - MD1220. Сервер резервного копіювання має однаковий кількість дисків, але з великими дисками SATA і використовує RAID5. Повний кеш-контролер H800 і H700 з обох сторін. 2 Мбіт / с (з iftop) ~
діасний

~ змушує мене думати, що мережа - це вузьке місце тут.
діасний

@dyasny Перевірте свою мережу, iperfщоб бути впевненим.
ewwhite


1
Переконайтесь, що структуру каталогу каталогів створив, rsyncа не автор cp. Я бачив rsyncвзяти набагато більше часу , щоб оновити віддалене дерево каталогів спочатку створене cp: 88GB оновлюється з контрольною сумою в 1h26m замість 3 годин! Те, як ви створюєте початковий макет диска, має вирішальне значення для отримання хорошої продуктивності оновлення. Час процесора однаковий; реальний час може подвоїтися. (Це ж оновлення без контрольної перевірки працює за 13 хвилин від SSD до Seagate 200 Гб).
Ян Д. Аллен

3

Оскільки ви, мабуть, знаєте, копіювання багатьох маленьких файлів (наприклад, поштових скриньок у форматі MailDir або подібних), безумовно, не найкращий варіант, щоб скористатися високими пропускними можливостями інтерфейсів. SSH, мабуть, не найкращий транспортний протокол для цього. Я б спробував використовувати tar для створення тарболу на вихідному хості до того, як надіслати його вторинному хосту.

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

Якщо вам потрібно додаткове резервне копіювання, ви можете спробувати -gваріанти tar. Якщо вам все ж потрібно максимально використовувати титру, спробуйте використовувати Netcat замість ssh.


Я перейшов на NFS замість SSH, щоб видалити накладні шифрування, ніякої радості
діасний

Ви пробували використовувати дьоготь? Першим кроком можна спробувати створити локальний tarbal на первинному сервері, а потім перенести його по дроту. (або протестуйте свою мережу за допомогою iperf, як @ewwhite запропонував)
alxgomz

Я б, якби у мене був запасний місцевий простір. Це досить величезно, навіть із повністю заселеним коробкою DAS
діасний

то спробуйте перетягнути його через netcat або ssh (але це не настільки ефективно)
alxgomz

Я буду перехід на блок резервного копіювання на основі пізніше, і я маю намір труби ddчерез ncте. але зараз я застряг з двома величезними резервними копіями, потім потрібно перемістити з головного хоста, щоб я міг створити там систему LVM
діасний

1

Спробуйте роздрібнити фактори, що сприяють:

  • ЦП (наприклад, dd / dev / zero проходить через петлю)
  • диск вводу / виводу (наприклад, великого файлу, перекладеного на cat> / dev / null [трубопровід для запобігання короткого замикання])
  • фізична мережа вводу / виводу (наприклад, дд, приєднана до іншої машини)
  • тощо.

і перевірити їх самостійно.

У мене був поганий досвід роботи з драйверами Broadcom, тому моя перша пропозиція - протестувати пропускну здатність мережі за допомогою: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


Або iperf ...
ewwhite
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.