Синхронізація ZFS через ненадійну, повільну мережу WAN. Реплікація ZFS чи rsync?


10

Мені доручено зробити роботу із резервного копіювання за межами веб-сайту. Обидві коробки зберігання - це коробки NASBS на базі FreeBSD, на яких працює ZFS.

Раз чи двічі на тиждень 15-60 гігів фотографічних даних потрапляють до офісу NAS. Моя робота полягає в тому, щоб розібратися, як максимально надійно винести ці дані за межі сайту, використовуючи ДУЖЕ СЛІД DSL-з'єднання (завантаження ~ 700 Кбіт / с). Приймальна коробка знаходиться в набагато кращій формі, на 30 Мбіт / с вниз, на 5 Мбіт / с вгору.

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

Мої варіанти, здається, такі:

  • Поступовий надіслати ZFS через ssh
  • Rsync

rsync - це рішення, яке займається часом, і має все важливу здатність відновити надсилання, якщо щось перерветься. У нього є недолік ітерації над багатьма файлами та невідомо про дедупцію.

Відправлення знімків ZFS може передавати трохи менше даних (воно знає набагато більше про файлову систему, може робити дедуптування, може пакувати зміни метаданих ефективніше, ніж rsync) і має перевагу в тому, щоб правильно дублювати стан файлової системи, а не просто копіювати файли індивідуально (що більш інтенсивно на диску).

Мене хвилює ефективність реплікації ZFS [1] (хоча ця стаття - рік). Я також стурбований можливістю перезапустити передачу, якщо щось знизиться - можливо, знімок не передбачає цього. Вся система повинна бути повністю від руки.

[1] http://wikitech-static.wikimedia.org/articles/z/f/s/Zfs_replication.html

Використовуючи будь-який варіант, я мав би змогу знешкодити трафік шляхом маршрутизації через визначений порт, а потім за допомогою QOS на маршрутизаторах. Мені потрібно уникати серйозного негативного впливу на користувачів обох сайтів під час кожної передачі, оскільки це займе кілька днів.

Отже ... це моє роздуми з цього питання. Я пропустив якісь хороші варіанти? Хтось ще налаштував щось подібне?


Розглянемо Унісон .
sampablokuper

Відповіді:


8
  1. Якщо ви можете передати максимум 6 Гб на день (якщо припустити нульові накладні витрати та нульовий конкуруючий трафік), і вам потрібно переміщати "15-60 концертів" з частотою "один або два рази на тиждень", що працює до 15-120 ГБ на тиждень або десь від 2-17 ГБ на день. Оскільки потрібно планувати максимальний попит, а 17 Гб набагато перевищує навіть ваш теоретичний максимум в 6 ГБ, цілком ймовірно, що у вас є дуже серйозна проблема з пропускною здатністю. Що потрібно для оновлення з'єднання? Якщо оновлення з'єднання неможливе, будь ласка, розгляньте можливість розсилки фізичних носіїв за розкладом (наприклад, щотижня).

  2. Якщо припустити, що ви можете отримати математику пропускної здатності, щоб зробити трохи більше сенсу, rsync , ймовірно, буде найкращим варіантом. Поінформованість про дедуплікацію була б надзвичайно корисною для реплікації високо зайвих даних (наприклад, зображень віртуальної машини), але вона повинна мати мало або взагалі користі, коли мова йде про унікальний цифровий контент (аудіо, відео, фотографії) ... якщо, звичайно, користувачі не ненавмисне зберігання дублікатів копій однакових файлів.


Я думаю, що я можу використовувати доступну пропускну здатність, і більшість скидів даних прагнуть до меншого кінця діапазону. Практично, це буде приблизно 2-3 концерти в день в середньому, судячи з даних минулого місяця. Мені не потрібна реплікація негайно.
Пол Макміллан

І так, розсилка фізичних засобів масової інформації набагато краща ... Я б хотів, щоб це був варіант.
Пол Макміллан

Гарний момент щодо дедупування. Більшість того, що копіюється, не буде дублюватися - користувачі не настільки щільні.
Пол Макміллан

1
Єдине, що я хотів би додати, це, можливо, не використовувати rsync. Я занадто відчував повільність rsync, оскільки використовував її як процес передачі, а не процес синхронізації. Тоді я зрозумів, що більшість моїх існуючих даних не змінюються, і потрібно копіювати лише нові дані, для мене я використовував cp лише для нових файлів, і це було набагато швидше. Якби у мене були файли, які змінювались (або лише частини файлів), я б використовував rsync. Тому я пропоную відокремити нові файли та вибрати спосіб відновлення передачі. Також стиснення буде компромісом процесора та оперативної пам'яті / пропускної здатності (на обох кінцях).
Скотт Маккленінг

Хм ... Я читав, що при правильній конфігурації rsync можна змусити працювати досить швидко. Скільки оптимізації ви намагалися?
Пол Макміллан

13

Провівши деякі дослідження, я вважаю, що ви праві щодо надсилання знімків. ZFS SENDта RECEIVEкоманди можуть бути передані в bzip2, а потім цей файл можна буде синхронізувати на іншій машині.

Ось деякі джерела, які я використав:

Я не знайшов жодної публікації зі скриптами реплікації, але я знайшов когось, хто розмістив їх резервний сценарій . Це сказав, я не зрозумів цього, так що це може бути сміття.

Багато хто з веб-сайтів говорили про те, щоб налаштувати роботу cron для цього часто. Якщо це так, ви можете повторити / створити резервну копію з меншим впливом на пропускну здатність та користувачів та стати хорошою функцією відновлення після аварій, оскільки дані про офш-сайти є більш актуальними. (Тобто після первинного згущення даних під час роботи.)

Знову ж таки, я думаю, що ви мали правильну ідею надсилання знімків, можливо, є багато переваг у використанні SEND/ RECEIVE.

EDIT: Щойно переглянув video1 video2, який може допомогти використовувати SEND/ RECEIVEта говорити про rsync (починається з 3m49s). Бен Роквуд виступив спікером, і ось посилання на його блог .


1
Я думаю, що використання rsync обмежується функцією паузи / відновлення, а не тим, що відрізняється від фактичного файлу. Це має сенс, оскільки сама файлова система (та файли змін, які вона створює) знає краще, ніж rsync, що відбувається.
Пол Макміллан

В якості додаткової примітки: ZSTD - сучасна швидша заміна gzip і bzip, підтримує декілька потоків і більше 20 рівнів стиснення. Він також має додаткову функцію, яку називають "адаптивне стиснення". У цьому режимі рівень стиснення автоматично налаштовується вгору та вниз, як потрібно, щоб мережна труба була повноцінною, роблячи при цьому максимальну кількість стиснення, щоб заощадити час. Це заважає вам робити стільки стиснення, що воно стає вузьким місцем або не вистачає на стиснення, яке ви могли б зробити, оскільки мережа занадто повільна.
Аллан Джуд

2

Яка мета створення резервних копій і як їм потрібно отримати доступ?

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

Однак якщо ваші резервні копії також повинні надавати користувачам доступ до файлів, які могли бути випадково видалені, пошкоджені тощо, тоді rsync може бути кращим варіантом. Кінцеві користувачі можуть не розуміти поняття знімків або, можливо, ваша NAS не надає кінцевим користувачам доступ до попередніх знімків. В будь-якому випадку ви можете використовувати rsync, щоб забезпечити резервну копію, легко доступну для користувача через файлову систему.

За допомогою rsync ви можете використовувати прапор --backup для збереження резервних копій файлів, які були змінені, а за допомогою --suffix flag ви можете керувати тим, як перейменовані старі версії файлів. Це полегшує створення резервної копії, де ви могли б датувати старі версії файлів, як-от

file_1.jpg
file_1.jpg.20101012
file_1.jpg.20101008
etc.

Ви можете легко поєднати це з cronjob, що містить команду find, щоб очистити будь-які старі файли за потребою.

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


2

ZFS повинен отримати функцію "відновлення відправки", яка дозволить продовжувати перервану реплікацію деякий час приблизно до березня цього року. Ця функція була завершена Меттом Аренсом та деякими іншими людьми, і незабаром має бути передана в хід.


Лише зауважте, що "відновлення надсилання" вже давно є у OpenZFS (на FreeBSD, Linux, MacOS тощо). Зараз також є функція "стисненого відправлення", де дані залишатимуться стиснутими, як є на диску, як частина потоку реплікації.
Аллан Джуд

0

Можливо, пристрій стиснення WAN знайде рішення ...? ми використовуємо русло річки, і ми дуже задоволені ними (наприклад, NetApp SnapMirror дуже добре стискається, до 80-90%)

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