google translate français italiano español 中国 한국의 Azərbaycan Deutsch Polskie 日本人 O'zbekiston Қазақстан
________________________________________________________________________
Проект резервное копирование гостевых ос Xenserver 6.5 штатными средствами:
Продолжение ниже для XenServer 7 плюс немного XAPI
________________________________________________________________________
Ручное выполнение
Запуск задачи по расписанию:
enter
посмотреть что выполняется в кроне можно командой
Типичная ошибка будет выглядеть как "/bin/sh: root: command not found"
_________________________________________________________________________
Восстановление из *.XVA на новую машину и связка Xenserver 6.5 с разными CPU (pool)
На Xenserver 6.5 который выступит в роли главного (master)
На новом свежеустановленом Xenserver 6.5
Перезагрузить свежий Xenserver 6.5 и выполнить восстановление (импорт).
Для связки на главном создать пул и добавить новый
Вернуть Xenserver 6.5 в нормальный режим без маскировки CPU
дополнительные команды, пока не разобрался, проверять состояние вм (если выключено/если включено) то выполнять те или иные действия:
xe vm-list (список вм)
xe vm-list is-control-domain=false power-state=running params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
(узнать UUID вм)
MOUNT_PATH="/backup" (папка назначения)
xe vm-start power-state=halted --multiple (включить все выключенные вм)
--force (принудительно)
--multiple (все вм)
Для запуска из под виндовс CMD.EXE (*.bat) перед каждой строчкой добавить:
"C:\Program Files (x86)\Citrix\XenCenter\xe.exe" -s 192.168.1.40 -u root -pw pass
(не проверял!!!)
-------------------------------
СПРАВКА:
-------------------------------
nano /etc/crontab
* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)
* = весь диапазон
-----------------------------------------------------------------------------------------
XenServer 7 резервное копирование вручную
открытие crond через nano:
reboot
-----------------------------
создаем скрипт который будет экспотрировать виртуальные машины.
1) Экспорт совершаем на NAS сервер, для этого нужен логин,пароль и адрес.
2) Нужно проверить примотирована ли директория. Например создадим пустой фаил folder.txt в нужной директории на NAS сервере.
3) Экспорт будем делать выключенных виртуальных машин, таким образом их надо выключить и включить. Для этого нам потребуются UUID'ы которые можно получить например из имени:
5) Будем удалять через 7 дней старые копии.
Добавим задачу в крон которая будет запускаться в 11 часов вечера в 11 минут
Справка для редактора Vi
i -ввести
ESC : wq ENTER -сохранить и выйти
перезапуск крон
готово.
--------------------------------------------------------------
СПРАВКА:
посмотреть uuid и name всех виртуальных машин:
не нужно делать резервную копию этой машины:
Internal error: xenopsd internal error: Storage_interface.illegal_trasition(_)
Такая ошибка может возникнуть при непредвиденной поломке хранилища. Например вы перемещали или экспортировали ВМ и произошло: Error: Broken pipe (calling write )
Error: Connection refused (calling connect ) . Сейчас мы не можем запустить ВМ т.к. диск ВМ ей не пренадлежит, он пренадлежит домену ксен. Поехали:
посмотреть uuid у которого id = 0
-------------------------------------------------------
Версия 3-я исправленная
Добавлен второй ресурс не хватило места, добавлены тэги чтобы не прописывать все уиды в скрипте каждый раз, добавлен appliance для последовательной загрузки виртуалок.
Алгортим: два хранилища = два тэга, плюс ещё два тэга на полное копирование. Создается массив из УУИД с отбором по определенному тэгу и циклом перебирается для каждого элемента. Appliance позволяет выключить и включить в определенной последовательности виртуалки. Впринципе можно было сделать перебор и им более гибко включать выключать, но мне показалось это лишнее награмождение конкретно в этой ситуации.
-------------------------------------------------------
________________________________________________________________________
Проект резервное копирование гостевых ос Xenserver 6.5 штатными средствами:
Продолжение ниже для XenServer 7 плюс немного XAPI
________________________________________________________________________
Ручное выполнение
mkdir /mnt/backup
mount -t cifs "//192.168.1.40/XenBackup" -o username=adm,password=pass /mnt/backup
xe vm-list
Создаем фаил backup.sh (через ssh так как есть проблема в кодировках!!!)#!/bin/bash
mkdir /mnt/backup/`date +%d-%m-%Y`
xe vm-shutdown uuid=h571e937-a38h-9376-7de2-ed78i5cdde2b
xe vm-export uuid=h571e937-a38h-9376-7de2-ed78i5cdde2b filename=/mnt/backup/$(date +%d-%m-%Y)/Ubuntu-12-04-64bit.xva
xe vm-start uuid=h571e937-a38h-9376-7de2-ed78i5cdde2b
xe vm-shutdown uuid=XXXXXXXXXXXXX
xe vm-export uuid=XXXXXXXXXXXXX filename=/mnt/backup/$(date +%d-%m-%Y)/vm-2.xva
xe vm-start uuid=XXXXXXXXXXXXX
xe vm-shutdown uuid=YYYYYYYYYYYYYYYYYYYY
xe vm-export uuid=YYYYYYYYYYYYYYYYYYYY filename=/mnt/backup/$(date +%d-%m-%Y)/vm-36.xva
xe vm-start uuid=YYYYYYYYYYYYYYYYYYYY
rm -rf /mnt/backup/$(date -d"-7 days" +%d-%m-%Y)
exit 0
По очереди или разом на ваше усмотрение. И дадим права на выполнение файлу backup.shchmod +x backup.sh
Выполняем разовое копирование через SSH (PuTTY) или Console XenCentrbash "/mnt/backup/backup.sh"
Недостатки этого метода: если по времени не успеет вм экспортироватся, то вылетит ошибка нет такой дирректории.Запуск задачи по расписанию:
nano /etc/cron.d/backup
10 19 * * * /mnt/backup/backup.sh > /mnt/backup/$(date +%d-%m-%Y)/backup.log 2>&1
chmod +x /etc/cron.d/bacup
touch /etc/cron.d/backup
crontab /etc/cron.d/backup
service crond restart
ctrl x yenter
посмотреть что выполняется в кроне можно командой
nano /var/log/cron
есть различия crontab системы и пользователя, для системы надо указывать имя пользователя, а для пользователя не надо указывать имя.Типичная ошибка будет выглядеть как "/bin/sh: root: command not found"
_________________________________________________________________________
Восстановление из *.XVA на новую машину и связка Xenserver 6.5 с разными CPU (pool)
На Xenserver 6.5 который выступит в роли главного (master)
xe host-get-cpu-features
копироватьНа новом свежеустановленом Xenserver 6.5
xe host-set-cpu-features features=<pool_master's_cpu_ features>
вставитьПерезагрузить свежий Xenserver 6.5 и выполнить восстановление (импорт).
Для связки на главном создать пул и добавить новый
Вернуть Xenserver 6.5 в нормальный режим без маскировки CPU
xe host-reset-cpu-features
_________________________________________________________________________дополнительные команды, пока не разобрался, проверять состояние вм (если выключено/если включено) то выполнять те или иные действия:
xe vm-list (список вм)
xe vm-list is-control-domain=false power-state=running params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
(узнать UUID вм)
MOUNT_PATH="/backup" (папка назначения)
xe vm-start power-state=halted --multiple (включить все выключенные вм)
--force (принудительно)
--multiple (все вм)
Для запуска из под виндовс CMD.EXE (*.bat) перед каждой строчкой добавить:
"C:\Program Files (x86)\Citrix\XenCenter\xe.exe" -s 192.168.1.40 -u root -pw pass
(не проверял!!!)
-------------------------------
СПРАВКА:
-------------------------------
nano /etc/crontab
* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)
* = весь диапазон
-----------------------------------------------------------------------------------------
XenServer 7 резервное копирование вручную
открытие crond через nano:
nano ~/.bashrcв конце после fi добавим строчку
export VISUAL=nano; crontab -eпереагрузить хост
reboot
-----------------------------
создаем скрипт который будет экспотрировать виртуальные машины.
touch /root/backup.sh
chmod +x backup.shТеперь зададим условия:
1) Экспорт совершаем на NAS сервер, для этого нужен логин,пароль и адрес.
2) Нужно проверить примотирована ли директория. Например создадим пустой фаил folder.txt в нужной директории на NAS сервере.
3) Экспорт будем делать выключенных виртуальных машин, таким образом их надо выключить и включить. Для этого нам потребуются UUID'ы которые можно получить например из имени:
VM=$(xe vm-list params=uuid --minimal name-label=<name_vm>)
4) Монтировать будем в папку /mnt/backup её необходимо создать, на NAS сервере сделаем папку xenbackup5) Будем удалять через 7 дней старые копии.
#!/bin/bash USERNAS=login #ЛОГИН_УЧЕТНОЙ_ЗАПИСИ_NAS_СЕРВЕРА PASUNAS=superpass #ПАРОЛЬ_УЧЕТНОЙ_ЗАПИСИС PATHNAS="//192.168.0.3/myfolder/XenBackup" #ПУТЬ_ДО_НУЖНОЙ_ДИРЕКТОРИИ PATHFOLDER=/mnt/backup/$(date +%d-%m-%Y) #ПАПКА_ДАТА DDEXP=7 #ВРЕМЯ_УДАЛЕНИЯ_ЧЕРЕЗ_ДНЕЙ if ! [ -f /mnt/backup/folder.txt ]; then mount -t cifs $PATHNAS -o username=$USERNAS,password=$PASUNAS /mnt/backup ; fi if ! [ -d $PATHFOLDER ]; then mkdir $PATHFOLDER ; fi xe vm-shutdown --multiple xe vm-export uuid=$(xe vm-list params=uuid --minimal name-label=VM1) filename=$PATHFOLDER/VM1.xva xe vm-export uuid=$(xe vm-list params=uuid --minimal name-label=VM2) filename=$PATHFOLDER/VM2.xva xe vm-export uuid=$(xe vm-list params=uuid --minimal name-label=VM3) filename=$PATHFOLDER/VM3.xva xe vm-start --multiple if ! [ -d /mnt/backup/$(date -d"-$DDEXP days" +%d-%m-%Y) ]; then echo "no such folder exist" ; else rm -rf /mnt/backup/$(date -d"-$DDEXP days" +%d-%m-%Y) ; fi exit 0-----------------------------
Добавим задачу в крон которая будет запускаться в 11 часов вечера в 11 минут
crontab -e
11 22 * * * /root/backup.sh /mnt/backup/backup.log 2>&1создадим пустой фаил для лога
touch /mnt/backup/backup.log
Справка для редактора Vi
i -ввести
ESC : wq ENTER -сохранить и выйти
перезапуск крон
systemctl restart crond.service
готово.
--------------------------------------------------------------
СПРАВКА:
посмотреть uuid и name всех виртуальных машин:
xe vm-list | grep -E "name-label|uuid"
не нужно делать резервную копию этой машины:
xe vm-list | grep -E "Control domain on host" -B 1--------------------------------------------------------------
Internal error: xenopsd internal error: Storage_interface.illegal_trasition(_)
Такая ошибка может возникнуть при непредвиденной поломке хранилища. Например вы перемещали или экспортировали ВМ и произошло: Error: Broken pipe (calling write )
Error: Connection refused (calling connect ) . Сейчас мы не можем запустить ВМ т.к. диск ВМ ей не пренадлежит, он пренадлежит домену ксен. Поехали:
посмотреть uuid у которого id = 0
~]# list_domains id | uuid | state 0 | 48170197-28ad-4e97-a6a6-5c9fb4ac6876 | R 222 | 2151d047-d10f-2f77-a7e3-7985aca7f481 | B 223 | a03c6260-bfc2-a60a-0abf-e113974f1662 | B H 224 | 53a9116e-8230-7ff0-dc54-1ce436a3e9a5 | B H 225 | 45607daf-83f8-8e00-ae69-762f2279196d | B H 226 | 45ea9ab4-b3fc-65f7-b020-dd2c117ee2cc | B H 227 | b4582cad-b86f-0f4f-614f-721732973fed | B 228 | 6727b189-cff8-a8e6-c439-3ae001412c33 | B 229 | f43c5130-12ed-61b2-43cb-352b459bfece | B 230 | f0425ac2-d5af-0321-d740-6a87537e4439 | B 231 | 6c4558fb-323a-aa67-0514-f2a98f364aaa | B 232 | 457de05e-202b-b5e5-586b-0c926520cd1e | B 233 | d3c5ad98-cf49-f452-362e-862df72f328f | B 235 | ba0e7c07-3c82-819f-de00-0edcea22afda | B 236 | 21c169ed-71c0-a1be-f006-a3135f665c26 | B H 237 | 094003ee-1a93-4d88-ca5c-41ab5a7baabf | B 238 | 39aa94fb-6cad-9713-fd9f-37cdcb623374 | B 239 | 53cccc60-7772-bc22-086b-853d1b66cfae | B 240 | 5b0e654b-f205-e29f-77d0-8b1f03bbadbd | B 241 | 462042e2-c746-5173-75e6-81e2d974ab16 | B H 246 | 7ddf77b2-9725-1f65-e86a-b2607610a14e | B H 247 | bef3476d-061b-2cb5-4d77-0c1542ab7e3b | B Hпосмотреть uuid VBD
~]# xe vbd-list vm-uuid=48170197-28ad-4e97-a6a6-5c9fb4ac6876
uuid ( RO) : 111110d4-aff1-5a3c-b2b7-9cd1fcfaf965
vm-uuid ( RO): 48170197-28ad-4e97-a6a6-5c9fb4ac6876
vm-name-label ( RO): Control domain on host: MyLittleXenServer
vdi-uuid ( RO): 6722faa1-2f2c-4935-b595-7dfefad5f7a4
empty ( RO): false
device ( RO): sm/backend/d97444ba-4666-f335-e064-6606cd1b91dd/6722faa1-2f2c-4935-b595-7dfefad5f7a4
отмонтировать и уничтожить соединени ~]# xe vbd-unplug uuid=111110d4-aff1-5a3c-b2b7-9cd1fcfaf965
~]# xe vbd-destroy uuid=111110d4-aff1-5a3c-b2b7-9cd1fcfaf965Всё. Можем смело стартовать ВМ.
-------------------------------------------------------
Версия 3-я исправленная
#!/bin/bash
USERNAS=sambaUser
PASUNAS=superPass
PATHNAS="//192.168.0.30/data/XenBackup"
PATHNAS1="//192.168.0.31/data/XenBackup"
PATHFOLDER0=/mnt/backup/$(date +%d-%m-%Y)
PATHFOLDER1=/mnt/backup1/$(date +%d-%m-%Y)
PATHFOLDER2=/mnt/backup/all/$(date +%d-%m-%Y)
PATHFOLDER3=/mnt/backup1/all/$(date +%d-%m-%Y)
DDEXP=3
DDEXP2=14
DWEEK=0
DAYX=$(date +%w)
if ! [ -f /mnt/backup/folder.txt ]; then mount -t cifs $PATHNAS -o username=$USERNAS,password=$PASUNAS /mnt/backup ; fi
if ! [ -f /mnt/backup1/folder.txt ]; then mount -t cifs $PATHNAS1 -o username=$USERNAS,password=$PASUNAS /mnt/backup1 ; fi
if ! [ -d /mnt/backup/$(date -d"-$DDEXP days" +%d-%m-%Y) ]; then echo "no such folder exist" ; else rm -rf /mnt/backup/$(date -d"-$DDEXP days" +%d-%m-%Y) ; fi
if ! [ -d /mnt/backup1/$(date -d"-$DDEXP days" +%d-%m-%Y) ]; then echo "no such folder exist" ; else rm -rf /mnt/backup1/$(date -d"-$DDEXP days" +%d-%m-%Y) ; fi
if ! [ -d /mnt/backup/static/$(date -d"-$DDEXP2 days" +%d-%m-%Y) ]; then echo "no such folder exist" ; else rm -rf /mnt/backup/static/$(date -d"-$DDEXP2 days" +%d-%m-%Y) ; fi
if ! [ -d /mnt/backup1/static/$(date -d"-$DDEXP2 days" +%d-%m-%Y) ]; then echo "no such folder exist" ; else rm -rf /mnt/backup1/static/$(date -d"-$DDEXP2 days" +%d-%m-%Y) ; fi
if ! [ -d $PATHFOLDER0 ]; then mkdir $PATHFOLDER0 ; fi
if ! [ -d $PATHFOLDER1 ]; then mkdir $PATHFOLDER1 ; fi
if ! [ -d $PATHFOLDER2 ]; then mkdir $PATHFOLDER2 ; fi
if ! [ -d $PATHFOLDER3 ]; then mkdir $PATHFOLDER3 ; fi
xe appliance-shutdown uuid=a2aa7de8-e516-a136-2c94-2eba33772bba
if [ $DAYX != $DWEEK ]; then echo "start critical export"
Array0=$(xe vm-list params=uuid --minimal tags:contains=bkp_one_to_folder0 | sed -e 's/,/\n/g' )
Array1=$(xe vm-list params=uuid --minimal tags:contains=bkp_one_to_folder1 | sed -e 's/,/\n/g' )
for i in ${Array0[*]}
do
ni=$(xe vm-list params=name-label --minimal uuid=$i)
echo "Start Backup $ni."
xe vm-export uuid=$i filename=$PATHFOLDER0/$ni.xva
done
for i in ${Array1[*]}
do
ni=$(xe vm-list params=name-label --minimal uuid=$i)
echo "Start Backup $ni."
xe vm-export uuid=$i filename=$PATHFOLDER1/$ni.xva
done
echo "end critical export"; else echo "start all export"
Array2=$(xe vm-list params=uuid --minimal tags:contains=bkp_all_to_folder2 | sed -e 's/,/\n/g' )
Array3=$(xe vm-list params=uuid --minimal tags:contains=bkp_all_to_folder3 | sed -e 's/,/\n/g' )
for i in ${Array2[*]}
do
ni=$(xe vm-list params=name-label --minimal uuid=$i)
echo "Start Backup $ni."
xe vm-export uuid=$i filename=$PATHFOLDER2/$ni.xva
done
for i in ${Array3[*]}
do
ni=$(xe vm-list params=name-label --minimal uuid=$i)
echo "Start Backup $ni."
xe vm-export uuid=$i filename=$PATHFOLDER3/$ni.xva
done
echo "end all export"; fi
xe appliance-start uuid=a2aa7de8-e516-a136-2c94-2eba33772bba
sleep 180
exit 0
Добавлен второй ресурс не хватило места, добавлены тэги чтобы не прописывать все уиды в скрипте каждый раз, добавлен appliance для последовательной загрузки виртуалок.
Алгортим: два хранилища = два тэга, плюс ещё два тэга на полное копирование. Создается массив из УУИД с отбором по определенному тэгу и циклом перебирается для каждого элемента. Appliance позволяет выключить и включить в определенной последовательности виртуалки. Впринципе можно было сделать перебор и им более гибко включать выключать, но мне показалось это лишнее награмождение конкретно в этой ситуации.
-------------------------------------------------------
Комментариев нет:
Отправить комментарий