Установка и настройка 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 хранилищ.