Россия 8 843 233-41-33

Заказать звонок

office@voicerouter.net

Виртуализация XenServer 6.5, настройка ISO и резервного копирования на USB

Установка и настройка гипервизора Xen 6.5 для нужд малого офиса

О чем пойдет речь в данной статье:
1. Установка гипервизора Xen 6.5
2. Настройка Local storage (пространства для хранения виртуальных машин)
3. Настройка пространства для хранения установочных образов систем (файлов ISO)
4. Настройка бэкапирования виртуальных машин на USB диск по расписанию (по крону)

Вступление
Как известно, современное серверное железо имеет внушительное количество избыточных ресурсов. Процессоры и гигабайты оперативной памяти простаивают 80% времени без нагрузки. С другой стороны, в современном офисе (пусть даже и небольшом офисе), всегда есть необходимость иметь несколько серверов с разными операционными системами для разных задач. К примеру, в нашем офисе есть необходимость в следующих серверах:
1. Сервер с Asterisk для обеспечения офиса телефонией;
2. Сервера с Linux для прочих сервисов и задач офиса;
3. Сервера с Windows для некоторого ПО офиса;
А также, у нашего технического отдела возникает необходимость развернуть одну или несколько машин для организации исследования, тестирования, и разного рода экспериментов.
Что такое виртуализация, я, пожалуй, рассказывать не буду. Расскажу про дистрибутив, который позволяет запускать несколько виртуальных машин на одной физической машине. Это XenServer. На момент написания данной статьи актуальная версия XenServer 6.5.
Софт бесплатен. Имеет ряд платных плагинов для более удобного администрирования. Данный гипервизор целиком покрывает потребности нашего офиса. Даже без плагинов.
Итак, приступим к изучению.

Постановка задачи:
От любого сервера, в том числе и от виртуального, нужно выполнение 3-х условий:
1. Сервер должен быть в работоспособном состоянии 24 часа в сутки 7 дней в неделю;
2. Жесткий диск сервера может выйти из строя в любой момент, поэтому данные с жесткого диска нужно дублировать с помощью RAID, или регулярно бэкапить;
3. Другое железо сервера (процессор, сетевая карта...) может выйти из строя. При этом нам необходимо иметь возможность восстановить работоспособность наших сервисов на другом железе.

Восстановление работоспособности желательно произвести не только быстро, но и без обильного изучения мануалов, написания непонятных скриптов, выдергивания волос на голове, и так далее...

Установка XenServer 6.5
Сама установка ничего сложного из себя не представляет. Скачивается ISO образ дистрибутива XenServer на официальном сайте. С помощью Universal-USB-Installer образ переносится на флэшку. Загружаю компьютер с флэшки. Далее все просто. Статьи по установке XenServer в большом количестве представлены в интернете. Воспользуйтесь поиском Google.

Настройка Local storage (пространства для хранения виртуальных машин)
На данном этапе я столкнулся с 3-мя особенностями:
1. Место для хранения виртуалок "Local storage" иногда не создается в интерфейсе. Физически на диске есть раздел, но он никуда не подцеплен;
2. Local storage создается, прицепляется. Но из первичной системы CentOS, доступ к файлам виртуальных дисков виртуальных машин получить мне не удалось;
3. Использовать 3-й раздел диска (тот самый Local storage) для хранения образов ISO тоже оказалось непонятно как.

Итак, я подсоединлся к свежеустановленному XenServer клиентской программой "XenCenter". Вижу что Local storage создан, и необходимо его отключить.
Для этого подключаюсь к XenServer по ssh.
Командой

Код: WinSCP с официального сайта Используя путь до папки ISO, начинаю загружать на сервер ISO-шники. Пока процесс идет, продолжаю:

Теперь нам осталось настроить сохранение бэкапов виртуальных машин.
Лично для меня бэкапирование на сетевой ресурс, дисковую полку, и остальные популярные методы не оказались рабочими. Просто потому, что я хочу чтобы в офисе был один постоянно работающий физический сервер - это гипервизор с виртуальными машинами. Так как для гипервизора я взял обычный компьютер, то RAID контроллера там нет. Покупать его для моих требований по отказоустойчивости смысла не вижу. Но если все виртуальные машины потеряются - это будет для меня большим огорчением. Поэтому то я буду использовать внешний USB диск для копирования на него образов виртуальных машин по расписанию, то есть по крону (cron).

Итак, приступаю:
Команда

ls /dev/sd*

Выдает мне структуру дисков моего гипервизора:

/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
Подключаю USB диск, структура меняется:

/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1
Вижу, что новый диск зовется /dev/sdb

Форматирую раздел диска с меткой "addon" командой:

mkfs -t ext2 -L addon /dev/sdb1
Создаю точку монтирования командой:

mkdir /addon
Открываю файл /etc/fstab командой:

nano /etc/fstabи добавляю строку

LABEL=addon /addon ext2 defaults 0 0
После перезагрузки USB диск должен автоматически монтироваться в директорию /addon
Вот как это выглядит у меня:

# mount

/dev/sda1 on / type ext3 (rw)

none on /proc type proc (rw)

none on /sys type sysfs (rw)

none on /dev/pts type devpts (rw)

none on /dev/shm type tmpfs (rw)

none on /sys/fs/cgroup type cgroup (rw,memory)

/opt/xensource/packages/iso/XenCenter.iso on /var/xen/xc-install type iso9660 (ro,loop=/dev/loop0)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

/dev/mapper/XSLocalEXT--7bf5743d--1346--533c--e131--f9a8de1143dc-7bf5743d--1346--533c--e131--f9a8de1143dc on /var/run/sr-mount/7bf5743d-1346-533c-e131-f9a8de1143dc type ext3 (rw)

/dev/sdb1 on /addon type ext2 (rw)Осталось создать скрипт для крона, который будет бэкапить мои виртуалки.

Создаю файл, и сразу открываю его:

Код: <a>[Выделить]</a>

<code>nano -w /etc/cron.daily/backup.cron
Вставляю следующий текст:

Код: <a>[Выделить]</a>

<code>#!/bin/bash

<code>UUID=""<br>NAME=""

<code><br>xe vm-list is-control-domain=false is-a-snapshot=false | while read line; do<br> if [[ "$line" =~ "^$" ]]; then<br> if [ -n "${UUID}" -a -n "${NAME}" ]; then<br> echo "$UUID $NAME"<br> rm -rf /addon/${NAME}_02.xva<br> mv /addon/${NAME}_01.xva /addon/${NAME}_02.xva<br> mv /addon/${NAME}.xva /addon/${NAME}_01.xva<br> SNAPUUID=$(xe vm-snapshot uuid=${UUID} new-name-label="${NAME}_Snapshot")<br> echo $SNAPUUID<br> xe template-param-set is-a-template=false ha-always-run=false uuid=$SNAPUUID<br> xe vm-export vm=$SNAPUUID filename=/addon/${NAME}.xva<br> xe vm-uninstall uuid=$SNAPUUID force=true

<code> UUID=""<br> NAME=""<br> fi<br> fi<br> if [[ "$line" =~ "^uuid" ]]; then<br> UUID=$(echo $line | awk -F":" '{gsub(/ /,"",$2); print $2}')<br> fi<br> if [[ "$line" =~ "name-label" ]]; then<br> NAME=$(echo $line | awk -F":" '{gsub(/ /,"",$2); print $2}')<br> fi<br>done<br>exitДаю права на файл скрипта командой:<br>

<code>Код: <a>[Выделить]</a>

<code><code>chmod 777 /etc/cron.daily/backup.cron
Коротко о том, как работает скрипт:
Скрипт выводит перечень виртуалок, снимает с каждой снапшот, на основе снапшоте делает готовый к импортированию образ виртуальной машины.
Всего на диске будут храниться по 3 бэкапа каждой виртуалки.
Чтобы развернуть виртуалку из бэкапа, мне нужно будет подсоединить диск к своему компьютеру и с помощью кнопки "импорт" в меню программы ХenСenter, сделать импорт в два клика.

<code><strong>PS:</strong><br>Описанный здесь способ неидеален. Просто, он мне ближе и кажется прямее. В ходе применения такой системы, я планирую дописывать эту статью.

<code><strong>Благодарности:</strong><br>Огромное спасибо Сергею Дергачеву за написание скрипта.

Наши клиенты

<
>