Установка и настройка Citrix XenServer Часть 3.
В данной статье мы рассмотрим настройку резервного копирования хостов Xen и запущенных виртуальных машин.
Настроим путь к хранилищу бэкапов.
Открываем консоль хоста через XenCenter.
Создадим папку, куда будет примонтировано хранилище резервных копий.
1 |
mkdir /mnt/backup |
Подключаем хранилище.
1 |
mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup |
Далее установите Xentools на каждую виртуальную машину.
Теперь подготовим скрипты для бэкапа виртуальных машин использующих vss. (Данный скрипт подходит для бэкапа windows виртуальных машин)
Создаем каталог для файлов скрипта.
1 |
mkdir /home/backup |
Переходим в созданный каталог.
1 |
cd /home/backup |
Скачиваем скрипты резервного копирования.
1 |
wget www.andy-burton.co.uk/files/xenserver_backup/xenserver_backup.tar.gz |
Распаковываем скрипты.
1 |
tar -xzf xenserver_backup.tar.gz |
Назначаем права на файлы скриптов.
1 |
chmod 700 vm_backup.* |
Теперь перейдем к настройке.
Нам нужно отредактировать файл vm_backup.cfg , расположенный в каталоге /home/backup.
Для удобства можно подключиться к серверу через программу winscp, или использовать консольный редактор vi.
Открываем файл через vi и редактируем.
1 |
vi /home/backup/vm_backup.cfg |
Теперь рассмотрим параметры конфига.
Секция где указывается путь к логам:
1 2 3 |
# Set log path log_path="/home/backup/vm_backup.log" |
Включение/отключение логирования.
1 2 3 4 |
# Enable logging # Remove to disable logging log_enable |
Путь к хранилищу резервных копий.
1 2 3 4 |
# Local backup directory # You can link this to a Windows CIFS share using the blog article backup_dir="/mnt/backup" |
Формат резервной копии (рекомендуется не изменять!)
1 2 3 4 |
# Backup extension # .xva is the default Citrix template/vm extension backup_ext=".xva" |
Какие виртуальные машины бэкапить.
1 2 3 4 5 6 7 |
# Which VMs to backup. Possible values are: # "all" - Backup all VMs # "running" - Backup all running VMs # "list" - Backup all VMs in the backup list (see below) # "none" - Don't backup any VMs, this is the default backup_vms="all" |
Список виртуальных машин, которые нужно бэкапить (индивидуальный список)
1 2 3 4 5 6 |
# VM backup list # Only VMs in this list will be backed up when backup_ext="list" # You can add VMs to the list using: add_to_backup_list "uuid" # Example: # add_to_backup_list "2844954f-966d-3ff4-250b-638249b66313" |
Формат даты в файле резервной копии.
1 2 3 4 5 |
# Current Date # This is appended to the backup file name and the format can be changed here # Default format: YYYY-MM-DD_HH-MM-SS date=$(date +%Y-%m-%d_%H-%M-%S) |
После настройки конфига, запустим скрипт резервного копирования.
1 |
vm_backup.sh |
После этого вы увидите бэкапы виртуальных машин в формате .xva на вашем хранилище. Данный способ подходит только для Windows подобных виртуальных машин.
Автоматизируем данный скрипт.
Чтобы каждый раз не подключать хранилище вручную добавим в файл vm_backup.sh следующую строку в начале файла, под #!/bin/bash.
1 |
mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup |
Должно получится так:
1 2 3 |
#!/bin/bash mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup |
Теперь добавим следующую строку в самый конец файла.
1 |
umount /mnt/backup |
Должно получится так:
1 2 3 4 5 6 |
if [ $vm_log_enabled ]; then log_disable fi umount /mnt/backup |
Теперь отмонтируем наше хранилище.
1 |
umount /mnt/backup |
Теперь составим расписание резервного копирования. Тут нам поможет планировщик заданий Cron.
Открываем консоль хоста xen1 и вводим команду:
1 |
crontab -e |
Откроется редактор vi, в нем нужно ввести расписание и выполняемую команду.
Рассмотрим примеры расписания Cron:
Задание Cron выглядит как строка
1 |
поле1 поле2 поле3 поле4 поле5 команда |
Значения первых пяти полей:
минуты — число от 0 до 59
часы — число от 0 до 23
день месяца — число от 1 до 31
номер месяца в году — число от 1 до 12
день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)
Примеры расписания:
# выполнять резервное копирование раз в час в 0 минут
1 |
0 */1 * * * /home/backup/vm_backup.sh |
# выполнять резервное копирование каждые три часа в 0 минут
1 |
0 */3 * * * /home/backup/vm_backup.sh |
# выполнять резервное копирование по понедельникам в 1 час 15 минут ночи
1 |
15 1 * * 1 /home/backup/vm_backup.sh |
# выполнять резервное копирование 5 апреля в 0 часов 1 минуту каждый год
1 |
1 0 5 4 * /home/backup/vm_backup.sh |
# выполнять резервное копирование в пятницу 13 числа в 13 часов 13 минут
1 |
13 13 13 * 5 /home/backup/vm_backup.sh |
# выполнять резервное копирование ежемесячно 1 числа в 6 часов 10 минут
1 |
10 6 1 * * /home/backup/vm_backup.sh |
Мы будем выполнять резервное копирование каждый день в 23:00
1 |
00 23 * * * /home/backup/vm_backup.sh |
Для редактирования в VI нажмите A, далее введите строку задания Cron и нажмите Enter, чтобы следующая строка была пустая.
Чтобы Cron корректно сохранил задание последняя строка всегда должна быть пустая.
Для сохранения изменений в Cron нажмите Esc а затем 2 раза z. Теперь Cron задание сохранено.
Мы рассмотрели резервное копирование для Windows подобных VM. Теперь рассмотрим скрипт резервного копирования, который подходит для все типов гостевых ОС.
Создадим новый файл.
1 |
touch /home/backup/backupall |
Настроим права.
1 |
chmod 700 /home/backup/backupall |
Теперь подключитесь к хосту через Winscp, откройте файл /home/backup/backupall.
Вставьте в файл следующее содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#! /bin/bash set -e # exit on any error mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup RUNNINGVMS=`xe vm-list is-control-domain=false power-state=running | grep name | awk 'BEGIN { FS = ":" };{ print $2 }'` for i in $RUNNINGVMS; do SNAPSHOTUUID=`xe vm-snapshot vm=$i new-name-label=Backup-$i`; xe template-param-set is-a-template=false uuid=$SNAPSHOTUUID; xe vm-export uuid=$SNAPSHOTUUID filename=/mnt/backup/backup-$i-$(date +%Y-%m-%d).xva; xe vm-uninstall uuid=$SNAPSHOTUUID force=true; done; HALTEDVMS=`xe vm-list power-state=halted | grep name | awk 'BEGIN { FS = ":" };{ print $2 }'` for j in $HALTEDVMS; do xe vm-export vm=$j filename=/backupfolder/backup-$j-$(date +%Y-%m-%d).xva; done; umount /mnt/backup |
Сохраните файл.
В строке :
1 |
mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup |
Вводится подключение к бэкап хранилищу.
Данный скрипт экспортирует запущенные VM и выключенные VM.
Внимание! Имена виртуальных машин не должны содержать пробелы! Иначе скрипт работать не будет.
Запустите скрипт. После выполнения скрипта, на хранилище появятся новые файлы с расширением .xva
Теперь добавим данный скрипт в Cron, строка в Cron должна выглядеть так:
1 |
30 23 * * * /home/backup/backupall |
Данный скрипт будет запускаться в 23:30
Данный скрипт может быть запущен на пул мастере, при этом резервные копии будут делаться для всех серверов в пуле Xen.
Теперь рассмотрим резервное копирование конфигурации Xen хоста.
Тут нам нужна команда:
1 |
xe host-backup host=xen1 file-name=/mnt/backup/Xen1-$(date +%Y-%m-%d).xbk |
Где xen1 имя хоста, а Xen1-$(date +%Y-%m-%d).xbk имя файла резервной копии.
Автоматизируем данную задачу.
Создадим новый скрипт:
1 |
touch /home/backup/hostbackup |
Настраиваем права:
1 |
chmod 700 /home/backup/hostbackup |
Добавляем в файл следующее содержимое:
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash xenhost=xen1 mount -t cifs "//192.168.1.51/backup" -o username=admin,password=Password /mnt/backup xe host-backup host=$xenhost file-name=/mnt/backup/$xenhost-$(date +%Y-%m-%d).xbk umount /mnt/backup |
В переменную xenhost указывается имя хоста Xen.
Добавим строку в задание Cron:
1 |
00 01 * * * /home/backup/hostbackup |
Конфигурация хоста будет сохраняться в час ночи, каждый день.
Теперь рассмотрим восстановление виртуальных машин.
Открываем консоль XenCenter и выбираем «Import»
Выбираем файл резервной копии.
Выбираем сервер на который будет восстановлена VM.
Указываем хранилище.
Выбираем сеть.
Проверяем параметры и импортируем VM.
После этого восстановленная VM появится в списке.
На этом настройка резервного копирования закончена. Разумеется коммерческие решения удобнее и проще чем скрипты. Но скрипты бесплатны =)
В следующей статье мы рассмотрим настройку локальных хранилищ на хостах Xen.
Будет рассмотрено создание LVM, EXT и ISO хранилищ.
Комментарии