Резервное копирование образов Ceph RBD в Bareos

Резервное копирование образов Ceph RBD в Bareos

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Простой и действенный способ бэкапа снэпшотов виртуальных серверов с блочного устройства Ceph RBD в Bareos

Несмотря на то, что Ceph подразумевает под собой отказоустойчивое хранилище данных, но бэкапы душу греют все-равно теплее. Под рукой как раз оказался тестовый стенд с Bareos, решил на нем и опробовать.

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

Приступим.

Шаг 1. Добавим скрипты экспорта

Сперва добавим скрипты для экспорта и удаления снэпшотов на хост с Ceph.

Создаём папки mkdir -p /root/rbd /root/scripts

vm_backup_bareos.sh
1
2
3
4
5
#!/bin/sh
IMAGE_PATH="/root/rbd"
one=$1
echo "CephRBD backup image: ${one}"
rbd export one/${one} ${IMAGE_PATH}/${one}.img
vm_remove_bareos.sh
1
2
3
4
5
#!/bin/sh
IMAGE_PATH="/root/rbd"
one=$1
echo "CephRBD remove image: ${one}"
rm -f ${IMAGE_PATH}/${one}.img

Шаг 2. Добавим новый набор файлов (Fileset)

Определяем список файлов, который будем резервировать.

1
2
3
4
5
6
7
8
9
10
11
12
FileSet {
Name = "VM_Test"

Include {
Options {
Signature = MD5
Compression = LZ4
noatime = yes
}
File = /root/rbd/one-49-249-0.img
}
}

Шаг 3. Добавим задание (Job)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Job {
Name = "VM_Test"
Type = Backup
Client = "msk-stg.bogachev.biz"
Schedule = "CloudInfraDaily"
Storage = "BackupStorage"
FileSet = "VM_Test"
Messages = Telegram
Pool = CloudInfraFull
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
ClientRunBeforeJob = "/root/scripts/vm_backup_bareos.sh one-49-249-0"
ClientRunAfterJob = "/root/scripts/vm_remove_bareos.sh one-49-249-0"
}

На этом все. По заданию выполняется скрипт экспорт снэпшота диска виртуального сервера, помещается в директорию /root/rbd, копируется в Bareos, после завершения копирования выполняется скрипт удаления снэпшота.

Восстановление

1
rbd import --image-format 2 ${BACKUP_IMAGE} ${POOL}/${IMAGE}