Ранее мы уже рассказывали про систему резервирования данных в коммерческой версии Carbonio. Напомним, что она поддерживает два вида резервирования - снятие снапшотов системы, а также транзакционное резервирование, которое позволяет сохранять каждую транзакцию и в случае возникновения проблем восстанавливать не только систему целиком, но и отдельные элементы. Однако для действительно надежного резервирования данных требуется, чтобы сервер и резервная копия данных находились в географически разнесенных локациях. В данной статье мы расскажем о том, как настроить Carbonio Backup таким образом, чтобы получить полноценное Off-site резервирование данных. Данная инструкция подходит только для коммерческой версии Carbonio. В этой статье мы будем исходить из того, что у вас уже настроено резервное копирование в локальную папку /opt/zextras/backup и рассмотрим варианты настройки как с полностью удаленным резервным копированием, так и вариант, при котором будут создаваться как локальная, так и off-site резервные копии. Самым простым способом организовать резервное копирование на удаленной машине - это примонтировать в пути резервирования 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 с хранилищем, а также сетевой задержке. В случае, если они будут недостаточными, возможно возникновение различных проблем, связанных с недостаточной скоростью резервирования данных. Другим вариантом организации 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/CarbonioBackupdone Здесь мы настраиваем inotifywait, чтобы запускать rsync при каждом изменении файловой системы, чтобы оба хранилища оставались автоматически синхронизированными. Копирование резервной копии в объектное хранилище, которое поддерживает избыточное хранение и географическое распределение данных, является наиболее надежным способом организовать 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.    Глава представительства Zextras в России и СНГ