Ранее мы уже рассказывали про систему резервирования данных в коммерческой версии Carbonio. Напомним, что она поддерживает два вида резервирования - снятие снапшотов системы, а также транзакционное резервирование, которое позволяет сохранять каждую транзакцию и в случае возникновения проблем восстанавливать не только систему целиком, но и отдельные элементы. Однако для действительно надежного резервирования данных требуется, чтобы сервер и резервная копия данных находились в географически разнесенных локациях. В данной статье мы расскажем о том, как настроить Carbonio Backup таким образом, чтобы получить полноценное Off-site резервирование данных.

Данная инструкция подходит только для коммерческой версии Carbonio.

В этой статье мы будем исходить из того, что у вас уже настроено резервное копирование в локальную папку /opt/zextras/backup и рассмотрим варианты настройки как с полностью удаленным резервным копированием, так и вариант, при котором будут создаваться как локальная, так и off-site резервные копии.

1. Хранилище NFS

Самым простым способом организовать резервное копирование на удаленной машине - это примонтировать в пути резервирования NFS-папку на удаленной машине и записывать резервную копию туда. 

Монтирование осуществляется средствами системы. Пример записи в /etc/fstab для автоматического монтирования хранилища в пути резервного копирования приведен ниже:

10.0.1.47:/opt/CarbonioBackup /opt/zextras/backup/ nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

В этом примере мы автоматически монтируем папку на сетевом хранилище (10.0.1.47:/opt/CarbonioBackup) в локальную папку (/opt/zextras/backup/), указываем протокол и некоторые параметры, улучшающие скорость и стабильность подключения хранилища.

Отметим, что при монтировании пустого хранилища в пути резервирования вам потребуется заново провести процедуру SmartScan. Это создаст в новом расположении снапшот системы, к которому впоследствии будут инкрементно записываться осуществляемые в системе транзакции.

Также возможен вариант размещения удаленной резервной копии в хранилище, подключенном в другой папке. Для этого необходимо смонтировать хранилище в желаемой папке и смигрировать путь резервирования в нее. Пример:

carbonio backup migrateBackupVolume Local /opt/zextras/backup_nfs threads 10

В этом примере мы вызываем утилиту carbonio-advanced, указываем модуль резервного копирования и команду для переноса папки резервного копирования в другой путь на локальном диске и делаем это ы 10 одновременных потоков.

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

Отметим, что при использовании хранилища NFS для резервного копирования необходимо уделять внимание ширине интернет-канала, связывающего сервер Carbonio с хранилищем, а также сетевой задержке. В случае, если они будут недостаточными, возможно возникновение различных проблем, связанных с недостаточной скоростью резервирования данных.

2. Синхронизация данных в пути резервирования на удаленном сервере

Другим вариантом организации off-site резервного копирования является использование утилиты rsync, которая позволяет синхронизировать данные в локальной папке с удаленным сервером. 

Данная утилита может быть установлена из стандартных репозиториев Ubuntu, а ее использование сводится к одной команде, в которой мы указываем имя исходной папки, а также имя папки на целевом сервере.

Пример использования rsync:

rsync -avzh /opt/zextras/backup/ root@10.0.1.47:/opt/CarbonioBackup

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

Для того, чтобы синхронизация выполнялась постоянно, в связке с rsync следует использовать утилиту inotifywait, которая отслеживает изменения в файловой системе и запускает синхронизацию в случае их возникновения. Пример использования:

while inotifywait -r -e modify,create,delete,move /directory; do
    rsync -avzh /opt/zextras/backup/ root@10.0.1.47:/opt/CarbonioBackup
done

Здесь мы настраиваем inotifywait, чтобы запускать rsync при каждом изменении файловой системы, чтобы оба хранилища оставались автоматически синхронизированными.

3. Резервирование в объектное хранилище

Копирование резервной копии в объектное хранилище, которое поддерживает избыточное хранение и географическое распределение данных, является наиболее надежным способом организовать off-site резервирование данных.

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

Отметим, что для корректной работы резервирования в объектном хранилище, необходимо, чтобы его показатели IOPS и скорости записи соответствовали данным показателям первичного хранилища данных. 

Первое, что нужно сделать для резервирования в объектное хранилище - создать бакет S3, в который будет вестись запись. Это можно сделать как в Консоли администратора, так и в командной строке.

Для добавления бакета перейдите в раздел Хранилище - Список Бакетов и нажмите на кнопку “Создать”.

В появившемся меню выберите формат используемого объектного хранилища и укажите данные добавляемого бакета:

  • Метка — метка подключаемого бакета;

  • Имя блока — название подключаемого бакета;

  • Ключ доступа;

  • Секретный ключ;

  • URL — ссылка на бакет;

  • Обращение — префикс, который будет добавляться к файлам при записи их в данный бакет. Это позволяет отличать данные записанные Carbonio от данных, записанных в тот же бакет другими приложениями;

  • Заметки — поле для указания дополнительной информации, касающейся добавляемого бакета.

После ввода всех данных можно прямо в Консоли администратора протестировать подключение к бакету S3 и добавить в список имеющихся бакетов.

Добавить бакет в командной строке можно с помощью команды carbonio core doCreateBucket с указанием типа хранилища и параметров, аналогичных тем, что указывались в графическом интерфейсе. Например:

carbonio core doCreateBucket MinIO MinioBackup P@ssw0rd ******* http://s3.company.ru BackupBucket

В данном случае мы создаем бакет MinIO с параметрами:

  • Bucket name - MinioBackup

  • Access Key - P@ssw0rd

  • Secret Key - *******

  • URL - http://s3.company.ru

  • Label - BackupBucket

Получить список бакетов можно командой carbonio core listBuckets, добавив тип подключенного бакета. Например, carbonio core listBuckets Yandex

В выводе этой команды помимо введенных нами параметров содержится также uuid подключенного бакета. Он требуется для подключения бакета в качестве хранилища резервной копии.

Настроить резервирование в бакет S3 можно только в командной строке. Делается при помощи команды carbonio backup setBackupVolume. Укажите также тип хранилища и его uuid, чтобы подключить созданный бакет в качестве хранилища для бэкапа. Например: 

carbonio backup setBackupVolume Yandex 39ec16f2-b71c-4cf0-a72e-5117445ff230

После того как хранилище будет подключено, выполните SmartScan для создания off-site снапшота данных почтовой системы:

carbonio backup doSmartScan start deep true remote_metadata_upload true

Еще раз обращаем ваше внимание, что система резервного копирования в Carbonio чрезвычайно чувствительна к скорости хранилища и сетевой задержке, поэтому перед использованием описанной инструкции настоятельно рекомендуем убедиться в том, что показатели IOPS и скорости чтения/записи у вашего хранилища S3 сопоставимы с показателями первичного тома Carbonio.

По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.