Пример скриптов для реализации сценариев резервного копирования для Категорий I и II#
Категория I#
Пример скрипта для резервного копирования конфигураций:
#!/bin/bash
# Резервное копирование конфигураций ALDPro
ipa-backup --data
# Резервное копирование конфигураций ПК СВ Брест
tar czf /backup/opennebula-config-$(date +\%F).tar.gz /etc/one /var/lib/one
# Резервное копирование конфигураций ОС
tar czf /backup/os-config-$(date +\%F).tar.gz /etc
# Передача резервных копий на внешнее хранилище
scp /backup/*.tar.gz user@backupserver:/path/to/backup/
Пример команд для восстановления конфигураций:
#!/bin/bash
# Восстановление конфигураций ALDPro
ipa-restore --data /backup/ipa-full-$(date +\%F).gpg
# Восстановление конфигураций ПК СВ Брест
tar xzf /backup/opennebula-config-$(date +\%F).tar.gz -C /
# Восстановление конфигураций ОС
tar xzf /backup/os-config-$(date +\%F).tar.gz -C /
Пример скрипта резервного копирования (backup.sh):
#!/bin/bash
# Резервное копирование конфигураций ALDPro
ipa-backup --data
# Резервное копирование конфигураций ПК СВ Брест
tar czf /backup/opennebula-config-$(date +\%F).tar.gz /etc/one /var/lib/one
# Резервное копирование конфигураций ОС
tar czf /backup/os-config-$(date +\%F).tar.gz /etc
# Передача резервных копий на внешнее хранилище
scp /backup/*.tar.gz user@backupserver:/path/to/backup/
Настройка cron:
0 2 * * * /path/to/backup.sh
Варианты скрипта backup.sh
с добавлением резервного копирования виртуальных машин средствами ПВ:
Резервное копирование всех виртуальных машин:
#!/bin/bash
# Папка для временного хранения резервных копий
TEMP_BACKUP_DIR="/backup/temp"
mkdir -p $TEMP_BACKUP_DIR
# Функция для резервного копирования виртуальных машин
backup_all_vms() {
# Получение списка всех виртуальных машин
VM_IDS=$(onevm list --csv | awk -F, '{if (NR>1) print $1}')
# Создание резервных копий для каждой виртуальной машины
for VM_ID in $VM_IDS; do
onevm backup $VM_ID --datastore 0 --keep-snapshots --dest $TEMP_BACKUP_DIR/vm-$VM_ID-$(date +\%F).tar.gz
done
}
# Резервное копирование конфигураций ALDPro
ipa-backup --data
# Резервное копирование конфигураций ПК СВ Брест
tar czf /backup/opennebula-config-$(date +\%F).tar.gz /etc/one /var/lib/one
# Резервное копирование конфигураций ОС
tar czf /backup/os-config-$(date +\%F).tar.gz /etc
# Резервное копирование всех виртуальных машин
backup_all_vms
# Передача резервных копий на внешнее хранилище
scp /backup/*.tar.gz user@backupserver:/path/to/backup/
scp $TEMP_BACKUP_DIR/*.tar.gz user@backupserver:/path/to/backup/
# Очистка временной папки резервных копий
rm -rf $TEMP_BACKUP_DIR
Резервное копирование нескольких виртуальных машин по их ID:
j
#!/bin/bash
# Папка для временного хранения резервных копий
TEMP_BACKUP_DIR="/backup/temp"
mkdir -p $TEMP_BACKUP_DIR
# IDs виртуальных машин для резервного копирования
VM_IDS="101 102 103"
# Функция для резервного копирования виртуальных машин по их ID
backup_selected_vms() {
for VM_ID in $VM_IDS; do
onevm backup $VM_ID --datastore 0 --keep-snapshots --dest $TEMP_BACKUP_DIR/vm-$VM_ID-$(date +\%F).tar.gz
done
}
# Резервное копирование конфигураций ALDPro
ipa-backup --data
# Резервное копирование конфигураций ПК СВ Брест
tar czf /backup/opennebula-config-$(date +\%F).tar.gz /etc/one /var/lib/one
# Резервное копирование конфигураций ОС
tar czf /backup/os-config-$(date +\%F).tar.gz /etc
# Резервное копирование выбранных виртуальных машин
backup_selected_vms
# Передача резервных копий на внешнее хранилище
scp /backup/*.tar.gz user@backupserver:/path/to/backup/
scp $TEMP_BACKUP_DIR/*.tar.gz user@backupserver:/path/to/backup/
# Очистка временной папки резервных копий
rm -rf $TEMP_BACKUP_DIR
Пример команд для восстановления конфигураций (restore.sh
):
#!/bin/bash
# Восстановление конфигураций ALDPro
ipa-restore --data /backup/ipa-full-$(date +\%F).gpg
# Восстановление конфигураций ПК СВ Брест
tar xzf /backup/opennebula-config-$(date +\%F).tar.gz -C /
# Восстановление конфигураций ОС
tar xzf /backup/os-config-$(date +\%F).tar.gz -C /
Варианты скрипта restore.sh
с добавлением восстановления виртуальных машин средствами ПВ:
Восстановление всех виртуальных машин:
#!/bin/bash
# Папка для временного хранения резервных копий
TEMP_BACKUP_DIR="/backup/temp"
mkdir -p $TEMP_BACKUP_DIR
# Функция для восстановления всех виртуальных машин
restore_all_vms() {
# Получение списка всех архивов резервных копий виртуальных машин
BACKUP_FILES=$(ls $TEMP_BACKUP_DIR/vm-*.tar.gz)
# Восстановление каждой виртуальной машины
for BACKUP_FILE in $BACKUP_FILES; do
VM_ID=$(basename $BACKUP_FILE | sed 's/vm-\([0-9]*\)-.*/\1/')
onedb restore $BACKUP_FILE --force
onevm recover --recreate $VM_ID
done
}
# Восстановление конфигураций ALDPro
ipa-restore --data /backup/ipa-full-$(date +\%F).gpg
# Восстановление конфигураций ПК СВ Брест
tar xzf /backup/opennebula-config-$(date +\%F).tar.gz -C /
# Восстановление конфигураций ОС
tar xzf /backup/os-config-$(date +\%F).tar.gz -C /
# Восстановление всех виртуальных машин
restore_all_vms
# Очистка временной папки резервных копий
rm -rf $TEMP_BACKUP_DIR
Восстановление нескольких виртуальных машин по их ID:
#!/bin/bash
# Папка для временного хранения резервных копий
TEMP_BACKUP_DIR="/backup/temp"
mkdir -p $TEMP_BACKUP_DIR
# IDs виртуальных машин для восстановления
VM_IDS="101 102 103"
# Функция для восстановления виртуальных машин по их ID
restore_selected_vms() {
for VM_ID in $VM_IDS; do
BACKUP_FILE=$TEMP_BACKUP_DIR/vm-$VM_ID-$(date +\%F).tar.gz
if [ -f $BACKUP_FILE ]; then
onedb restore $BACKUP_FILE --force
onevm recover --recreate $VM_ID
else
echo "Backup file for VM ID $VM_ID not found."
fi
done
}
# Восстановление конфигураций ALDPro
ipa-restore --data /backup/ipa-full-$(date +\%F).gpg
# Восстановление конфигураций ПК СВ Брест
tar xzf /backup/opennebula-config-$(date +\%F).tar.gz -C /
# Восстановление конфигураций ОС
tar xzf /backup/os-config-$(date +\%F).tar.gz -C /
# Восстановление выбранных виртуальных машин
restore_selected_vms
# Очистка временной папки резервных копий
rm -rf $TEMP_BACKUP_DIR
Категория II#
Пример настройки репликации с использованием DRBD
DRBD позволяет синхронизировать блоковые устройства между узлами, создавая сетевые RAID1-устройства.
Установка DRBD:
Установить DRBD на всех узлах:
sudo apt-get install drbd-utils
Конфигурация DRBD:
Создать конфигурационный файл
/etc/drbd.d/r0.res
с содержимым, подобным следующему:resource r0 { on node1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.1:7788; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.2:7788; meta-disk internal; } }
Инициализация и синхронизация:
Инициализировать и синхронизировать устройства:
sudo drbdadm create-md r0 sudo drbdadm up r0 sudo drbdadm -- --overwrite-data-of-peer primary r0
Форматирование и монтирование:
Создать файловую систему на устройстве DRBD и смонтировать его:
sudo mkfs.ext4 /dev/drbd0 sudo mount /dev/drbd0 /mnt/drbd
Настройка автоматического монтирования и управления:
Добавить запись в
/etc/fstab
для автоматического монтирования DRBD-устройства при загрузке системы:/dev/drbd0 /mnt/drbd ext4 defaults 0 0Настроить автоматическое управление DRBD через
systemd
, создав соответствующие юниты или обновив существующие:sudo systemctl enable drbd
Мониторинг и проверка состояния DRBD:
Проверить состояние DRBD-ресурса:
sudo drbdadm status r0Использовать команды
drbd-overview
илиcat /proc/drbd
для получения информации о состоянии репликации и синхронизации:sudo drbd-overview