Резервное копирование, часть 6: Сравнение средств резервного копирования

Резервное копирование, часть 6: Сравнение средств резервного копирования
В данной статье будет проведено сравнение средств резервного копирования, но сначала стоит узнать, как они быстро и хорошо справляются с восстановлением данных из резервных копий.
Для простоты сравнения будет рассматриваться восстановление из полной резервной копии, тем более что данный режим работы поддерживают все кандидаты. Для простоты цифры взяты уже усредненными (среднее арифметическое из нескольких запусков). Результаты будут сведены в таблицу, в которой также будет информация и о возможностях: наличие веб-интерфейса, простота в настройке и работе, способность к автоматизации, наличие различных дополнительных возможностей (к примеру, проверка целостности данных) и т.п. Графики будут показывать загрузку сервера, где данные и будут применяться (не сервера для хранения резервных копий).

Восстановление данных

В качестве опорной точки будут использоваться rsync и tar, поскольку именно на них обычно основаны простейшие скрипты для снятия резервных копий.

Rsync справился с тестовым набором данных за 4 минуты и 28 секунд, показав

такую нагрузкуРезервное копирование, часть 6: Сравнение средств резервного копирования

Процесс восстановления уперся в ограничение дисковой подсистемы сервера хранения резервных копий (пилообразные графики). Также четко видно загрузку одного ядра без особых проблем (низкий iowait и softirq — нет проблем с диском и сетью соответственно). Поскольку две другие программы, а именно rdiff-backup и rsnapshot, основаны на rsync, а также предлагают в качестве средства восстановления обычный rsync, — у них будет примерно такой же профиль нагрузки и время восстановления резервной копии.

Tar справился чуть быстрее, за

2 минуты и 43 секунды:Резервное копирование, часть 6: Сравнение средств резервного копирования

Полная загрузка системы была выше в среднем на 20% из-за возросшего softirq — возросли накладные расходы при работе сетевой подсистемы.

Если архив дополнительно сжать, то время восстановления возрастает до 3 минут 19 секунд с
такой нагрузкой на основном сервере (распаковка на стороне основного сервера):Резервное копирование, часть 6: Сравнение средств резервного копирования

Процесс распаковки занимает оба процессорных ядра, поскольку работает два процесса. В целом — ожидаемый результат. Также сравнимый результат (3 минуты и 20 секунд) получился при запуске gzip на стороне сервера с резервными копиями, профиль нагрузки на основном сервере был весьма похожим на запуск tar без компрессора gzip (см. предыдущий график).

В rdiff-backup можно синхронизировать последнюю сделанную резервную копию с помощью обычного rsync (результаты будут аналогичными), но более старые резервные копии все равно надо восстанавливать с помощью программы rdiff-backup, которая справилась с восстановлением за 17 минут и 17 секунд, показав

такую нагрузку:Резервное копирование, часть 6: Сравнение средств резервного копирования

Возможно так и было задумано, во всяком случае для ограничения скорости авторы предлагают такое решение. Сам процесс восстановление резервной копии занимает чуть меньше половины одного ядра, с пропорционально сравнимой производительностью (т.е. в 2-5 раз медленнее) по диску и сети с rsync.

Rsnapshot для восстановления предлагает использовать обычный rsync, поэтому его результаты будут аналогичными. В целом, так оно и получилось.

Burp с задачей восстановления резервной копии справился за 7 минут и 2 секунды с
такой нагрузкой:Резервное копирование, часть 6: Сравнение средств резервного копирования

Отработал достаточно быстро, и, по крайней мере, гораздо удобнее чистого rsync: не надо помнить какие-либо флаги, простой и интуитивный cli-интерфейс, встроенная поддержка нескольких копий, — правда раза в два медленнее. Если данные надо восстанавливать из последней сделанной резервной копии — можно воспользоваться rsync, с небольшими оговорками.

Примерно такую же скорость и нагрузку показала программа BackupPC при включении режима передачи rsync, развернув резервную копию за

7 минут и 42 секунды:Резервное копирование, часть 6: Сравнение средств резервного копирования

А вот в режиме передачи данных с tar BackupPC справился медленнее: за 12 минут и 15 секунд, нагрузка по процессору при этом была в целом ниже

в полтора раза:Резервное копирование, часть 6: Сравнение средств резервного копирования

Duplicity без шифрования показал чуть лучшие результаты, справившись с восстановлением резервной копии за 10 минут и 58 секунд. Если активировать шифрование с помощью gpg — время восстановления возрастает до 15 минут и 3 секунд. Также при создании репозитория для хранения копий можно указать размер архива, который будет использован при разбиении потока входящих данных. В целом, на обычных жестких дисках, так же в связи с однопоточным режимом работы, особой разницы нет. Она, возможно, появится при разных размерах блоков, когда используются гибридные хранилища. Нагрузка на основном сервере при восстановлении была такой:

без шифрованияРезервное копирование, часть 6: Сравнение средств резервного копирования

с шифрованиемРезервное копирование, часть 6: Сравнение средств резервного копирования

Duplicati показал сравнимую скорость восстановления, справившись за 13 минут и 45 секунд. Еще порядка 5 минут заняла проверка корректности восстановленных данных (суммарно около 19 минут). Нагрузка при этом была

достаточно высокой:Резервное копирование, часть 6: Сравнение средств резервного копирования

Когда шифрование aes активировалось внутренними средствами, время восстановления составило 21 минуту 40 секунд, причем загрузка по процессору была максимальной (оба ядра!) во время восстановления; при проверке данных был активен только один поток, занимающий одно процессорное ядро. Проверка данных после восстановления заняла те же 5 минут (суммарно почти 27 минут).

РезультатРезервное копирование, часть 6: Сравнение средств резервного копирования

Чуть быстрее duplicati управился с восстановлением при использовании для шифрования внешней программы gpg, но в целом отличия от предыдущего режима — минимальны. Время работы составило 16 минут 30 секунд, с проверкой данных в 6 минут. Нагрузка была

такой:Резервное копирование, часть 6: Сравнение средств резервного копирования

AMANDA, использующая tar, справилась за 2 минуты 49 секунд, что, в принципе, весьма близко к обычному tar. Нагрузка на систему в принципе

такая же:Резервное копирование, часть 6: Сравнение средств резервного копирования

При восстановлении резервной копии средствами zbackup получились следующие результаты:

шифрование, сжатие lzmaРезервное копирование, часть 6: Сравнение средств резервного копирования

Время работы 11 минут и 8 секунд

шифрование aes, сжатие lzmaРезервное копирование, часть 6: Сравнение средств резервного копирования

Время работы 14 минут

шифрование aes, сжатие lzoРезервное копирование, часть 6: Сравнение средств резервного копирования

Время работы 6 минут, 19 секунд

В целом, неплохо. Все упирается в скорость процессора на сервере резервного копирования, что достаточно четко видно по времени работы программы с разными компрессорами. Со стороны сервера резервного копирования запускался обычный tar, так что если сравнить с ним — восстановление работает в 3 раза медленнее. Возможно, стоит проверить работу в многопоточном режиме, с числом потоков больше двух.

BorgBackup в режиме без шифрования справился чуть медленнее tar, за 2 минуты 45 секунд, однако, в отличие от того же tar, появилась возможность дедупликации репозитория. Нагрузка при этом получилась

следующей:Резервное копирование, часть 6: Сравнение средств резервного копирования

Если активировать шифрование на основе blake, то скорость восстановления резервной копии чуть замедляется. Время восстановления в этом режиме 3 минуты 19 секунд, а нагрузка вышла

такая:Резервное копирование, часть 6: Сравнение средств резервного копирования

Шифрование aes работает чуть медленнее, время восстановления 3 минуты 23 секунды, нагрузка особо

не поменялась:Резервное копирование, часть 6: Сравнение средств резервного копирования

Поскольку Borg может работать в многопоточном режиме — загрузка процессора максимальна, при этом при активации дополнительных функций просто растет время работы. По всей видимости, стоит исследовать многопоточность работы аналогично zbackup.

Restic справился с восстановлением чуть помедленнее, время работы составило 4 минуты 28 секунд. Нагрузка при этом выглядела

так:Резервное копирование, часть 6: Сравнение средств резервного копирования

По всей видимости процесс восстановления работает в несколько потоков, но эффективность не такая высокая, как у BorgBackup, но сравнимо по времени с обычным rsync.

С помощью UrBackup получилось восстановить данные за 8 минут и 19 секунд, нагрузка при этом была

такой:Резервное копирование, часть 6: Сравнение средств резервного копирования

Все так же видно не сильно высокую нагрузку, даже ниже, чем у tar. Местами всплески, но не более загрузки одного ядра.

Выбор и обоснование критериев для сравнения

Как было сказано в одной из предыдущих статей, система резервного копирования должна соответствовать следующим критериям:

  • Простота в работе
  • Универсальность
  • Стабильность
  • Быстрота

Стоит рассмотреть каждый пункт отдельно более детально.

Простота работы

Лучше всего, когда есть одна кнопка «Сделать все хорошо», но если вернуться к реальным программам — удобнее всего будет некоторый привычный и стандартный принцип работы.
Большинству пользователей, вероятнее всего, будет лучше, если не надо запоминать кучу ключей для cli, настраивать кучу разных, зачастую малопонятных опций через web или tui, настраивать оповещения о неудачной работе. Сюда же относится возможность легко «вписать» решение для резервного копирования в существующую инфраструктуру, а также автоматизация процесса резервного копирования. Тут же возможность установки пакетным менеджером, или в одну–две команды вида «скачать и распаковать». curl ссылка | sudo bash — сложный метод, поскольку надо проверить, что прилетает по ссылке.

К примеру, из рассмотренных кандидатов простым решением является burp, rdiff-backup и restic, имеющие мнемонически запоминаемые ключи для разных режимов работы. Чуть более сложным — borg и duplicity. Самым сложным была AMANDA. Остальные по простоте использования где-то посередине. В любом случае, если надо больше 30 секунд на чтение руководства пользователя, или надо сходить в Google или другой поисковик, а также пролистать длинную простыню help — решение сложное, так или иначе.

Часть рассмотренных кандидатов умеют автоматически отправить сообщение по e-mailjabber, другие же полагаются на настроенные оповещения в системе. При этом чаще всего сложные решения имеют не совсем очевидные настройки оповещений. В любом случае, если программа снятия резервной копии выдаст ненулевой код возврата, который будет правильно понят системным сервисом периодических задач (улетит сообщение системному администратору или сразу в мониторинг) — ситуация простая. А вот если система резервного копирования, работающая не на сервере резервных копий, не может без настройки, очевидным способом сказать о проблеме — сложность уже избыточная. В любом случае выдача предупреждений и других сообщений только в веб-интерфейс иили в журнал — плохая практика, поскольку чаще всего они будут проигнорированы.

Что же касается автоматизации — простая программа умеет читать переменные окружения, задающие ее режим работы, либо имеет развитый cli, способный полностью дублировать поведение при работе через веб-интерфейс, к примеру. Сюда же относится возможность поточной работы, наличие возможностей для расширения и т.п.

Универсальность

Частично перекликается с предыдущим подразделом в части автоматизации, не должно быть особой проблемой «вписать» процесс резервного копирования в существующую инфраструктуру.
Стоит отметить, что использование нестандартных портов (ну кроме веб-интерфейса) для работы, реализация шифрования нестандартным способом, обмен данными нестандартным протоколом — признаки неуниверсального решения. По большей части все кандидаты так или иначе их имеют по очевидной причине: простота и универсальность обычно не совместимы. В качестве исключения — burp, есть и другие.

В качестве признака — возможность работы используя обычный ssh.

Скорость работы

Самый противоречивый и спорный пункт. С одной стороны — запустили процесс, он отработал максимально быстро и не мешает основным задачам. С другой — всплеск трафика и нагрузки на процессор на время резервного копирования. Еще стоит отметить, что самые быстрые программы для снятия копий обычно самые бедные по функциям, важным для пользователей. Опять же: если для того, чтобы достать один несчастный текстовый файлик размером несколько десятков байт с паролем, а из-за него стоит весь сервис (да-да, я понимаю, что тут процесс резервного копирования чаще всего не виновен), и надо перечитать последовательно все файлы в репозитории или развернуть целый архив — система резервного копирования ни разу не быстрая. Еще один пункт, который часто становится камнем преткновения — скорость разворачивания резервной копии из архива. Тут явное преимущество у тех, кто может просто скопировать или переместить файлы в нужное место без особых манипуляций (rsync к примеру), но чаще всего проблему надо решать организационным способом, эмпирическим путем: измерять время восстановления резервной копии и открыто об этом сообщать пользователям.

Стабильность

Следует понимать так: с одной стороны, должна быть возможность развернуть обратно резервную копию по-любому, с другой — устойчивость к различным проблемам: обрыв сети, отказ диска, удаление части репозитория.

Сравнение средств резервного копирования

Время создания копии
Время восстановления копии
Простая установка
Простая настройка
Простое использование
Простая автоматизация
Нужен ли клиентсервер?
Проверка целостности репозитория
Разностные копии
Работа через pipe
Универсальность
Самостоятельность
Прозрачность репозитория
Шифрование
Сжатие
Дедупликация
Web-интерфейс
Заливка в облако
Поддержка Windows
Балл

Rsync
4m15s
4m28s
да
нет
нет
нет
да
нет
нет
да
нет
да
да
нет
нет
нет
нет
нет
да
6

Tar
pure
3m12s
2m43s
да
нет
нет
нет
нет
нет
да
да
нет
да
нет
нет
нет
нет
нет
нет
да
8,5

gzip
9m37s
3m19s
да

Rdiff-backup
16m26s
17m17s
да
да
да
да
да
нет
да
нет
да
нет
да
нет
да
да
да
нет
да
11

Rsnapshot
4m19s
4m28s
да
да
да
да
нет
нет
да
нет
да
нет
да
нет
нет
да
да
нет
да
12,5

Burp
11m9s
7m2s
да
нет
да
да
да
да
да
нет
да
да
нет
нет
да
нет
да
нет
да
10,5

Duplicity
no encryption
16m48s
10m58s
да
да
нет
да
нет
да
да
нет
нет
да
нет
да
да
нет
да
нет
да
11

gpg
17m27s
15m3s

Duplicati
no encryption
20m28s
13m45s
нет
да
нет
нет
нет
да
да
нет
нет
да
нет
да
да
да
да
да
да
11

aes
29m41s
21m40s

gpg
26m19s
16m30s

Zbackup
no encryption
40m3s
11m8s
да
да
нет
нет
нет
да
да
да
нет
да
нет
да
да
да
нет
нет
нет
10

aes
42m0s
14m1s

aes+lzo
18m9s
6m19s

BorgBackup
no encryption
4m7s
2m45s
да
да
да
да
да
да
да
да
да
да
нет
да
да
да
да
нет
да
16

aes
4m58s
3m23s

blake2
4m39s
3m19s

Restic
5m38s
4m28s
да
да
да
да
нет
да
да
да
да
да
нет
да
нет
да
нет
да
да
15,5

UrBackup
8m21s
8m19s
да
да
да
нет
да
нет
да
нет
да
да
нет
да
да
да
да
нет
да
12

Amanda
9m3s
2m49s
да
нет
нет
да
да
да
да
нет
да
да
да
да
да
нет
да
да
да
13

BackupPC
rsync
12m22s
7m42s
да
нет
да
да
да
да
да
нет
да
нет
нет
да
да
нет
да
нет
да
10,5

tar
12m34s
12m15s

Легенда таблицы:

  • Зеленый, время работы меньше пяти минут, или ответ «Да» (кроме столбца «Нужен клиентсервер?»), 1 балл
  • Желтый, время работы пять-десять минут, 0.5 балла
  • Красный, время работы больше десяти минут, или ответ «Нет» (кроме столбца «Нужен клиентсервер?»), 0 баллов

Согласно вышеприведенной таблице наиболее простым, быстрым, а вместе с тем удобным и мощным инструментом для резервного копирования является BorgBackup. Второе место занял Restic, остальные рассмотренные кандидаты разместились примерно одинаково с разбросом в один-два балла в конце.

Благодарю всех, кто дочитали цикл до конца, предлагаю обсудить варианты, предложить свои, если есть. По мере обсуждения таблица может быть дополнена.

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

Анонс

Резервное копирование, часть 1: Зачем нужно резервное копирование, обзор методов, технологий
Резервное копирование, часть 2: Обзор и тестирование rsync-based средств резервного копирования
Резервное копирование, часть 3: Обзор и тестирование duplicity, duplicati
Резервное копирование, часть 4: Обзор и тестирование zbackup, restic, borgbackup
Резервное копирование, часть 5: Тестирование bacula и veeam backup for linux
Резервное копирование, часть 6: Сравнение средств резервного копирования
Резервное копирование, часть 7: Выводы

Источник: habr.com