Пример скриптов для реализации сценариев резервного копирования для Категорий I и II

Пример скриптов для реализации сценариев резервного копирования для Категорий 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 с добавлением резервного копирования виртуальных машин средствами ПВ:

  1. Резервное копирование всех виртуальных машин:

#!/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
  1. Резервное копирование нескольких виртуальных машин по их 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 с добавлением восстановления виртуальных машин средствами ПВ:

  1. Восстановление всех виртуальных машин:

#!/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
  1. Восстановление нескольких виртуальных машин по их 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-устройства.

  1. Установка DRBD:

Установить DRBD на всех узлах:

sudo apt-get install drbd-utils
  1. Конфигурация 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;
    }
}
  1. Инициализация и синхронизация:

Инициализировать и синхронизировать устройства:

sudo drbdadm create-md r0
sudo drbdadm up r0
sudo drbdadm -- --overwrite-data-of-peer primary r0
  1. Форматирование и монтирование:

Создать файловую систему на устройстве DRBD и смонтировать его:

sudo mkfs.ext4 /dev/drbd0
sudo mount /dev/drbd0 /mnt/drbd
  1. Настройка автоматического монтирования и управления:

Добавить запись в /etc/fstab для автоматического монтирования DRBD-устройства при загрузке системы:

/dev/drbd0 /mnt/drbd ext4 defaults 0 0

Настроить автоматическое управление DRBD через systemd, создав соответствующие юниты или обновив существующие:

sudo systemctl enable drbd
  1. Мониторинг и проверка состояния DRBD:

Проверить состояние DRBD-ресурса:

sudo drbdadm status r0

Использовать команды drbd-overview или cat /proc/drbd для получения информации о состоянии репликации и синхронизации:

sudo drbd-overview