Взято: http://habrahabr.ru/post/86769/

 

Спасибо автору! Очень помогла статья

По некоторым обстоятельствам мне потребовалось установить и настроить Citrix XenServer. Дистрибутив был скачан с сайта Citrix и успешно установлен на сервер HP. Вроде бы можно бы засунуть его в стойку и радоваться виртуальной жизни серверов, но не тут то было. Как оказалось в XenServer не предусмотрено локальное хранилище для дистрибутивов, точнее для ISO-образов. Предполагается, что все дистрибутивы будут лежать на сетевом хранилище (для работы с которым есть все инструменты), но если говорить про Stand-alone сервер, без какого либо сетевого хранилища, то тут и возникают различные идеи. Одна из таких идей под катом.


Итак, есть задача: необходимо сделать хранилище ISO-образов на том же сервере, на котором установлен XenServer.

Первым делом идём в документацию Citrix XenServer, и находим там статью: docs.vmd.citrix.com/XenServer/5.0.0/1.0/en_gb/guest.html#iso_local_copies, в которой вроде бы как очень просто и быстро решается поставленная задача. Однако делать так не рекомендую. Под операционную систему с гипервизором отведено на диске около 3-х гигабайт, свободных из которых остаётся 1,7 гигабайта. Следовательно, попытавшись скопировать ISO образ Windows Server 2008 R2 объёмом примерно 2,5 гигабайта, убили XenServer напрочь.

Полазив по Admin Guide по XenServer, находим, что XenServer умеет подключаться к сетевым ISO-хранилищам. В связи с этим необходимо на сервер выделить место под ISO-хранилище, сделать его доступным по сети и затем подключить к нашему XenServer. Не претендую на правильность данного решения, однако в моём случае оно меня вполне устроило.

Теперь подробнее по шагам:
1. На скриншоте видно, что у нас есть Local Storage, от которого и будем отрезать кусочек, чтобы организовать ISO-репозиторий
image

2. Необходимо определить SR UUID (Storage Repositpry Universal Unique IDentificator) для диска Local Storage, для этого вводим команду:
xe sr-list type=lvm, результат выполнения команды видим на скриншоте:
image
из выходной информации нам понадобиться выделенный идентификатор sr uuid

3. Теперь определим PBD UUID (Phisical Block Device Universal Unique IDentificator) на котором располагается Local Storage, для это введём команду:
хе pbd-list sr-uuid=… (тут указываем тот номер, который мы получили на предыдущем шаге)
image
из полученной информации нам в дальнейшем понадобиться выделенный идентификатор pbd uuid

4. Отмонтируем Local Storage, для этого вводим:
xe pbd-unplug uuid=… (тут указывается номер, полученный на шаге №3)
image
после этого в консоли XenCenter хранилище Local Storage будет подсвечен восклицательным знаком:
image

5. Удаляем теперь Local Storage командой:
xe pbd-destroy uuid=… (указываем pbd uuid, полученный на шаге №3)
image
обратите внимание, что теперь Local Storage стал серым

6. Теперь удаляем ссылку на Local Storage:
xe sr-forget uuid=… (указываем sr uuid, полученный на шаге №2)
image
Теперь Local Storage вообще исчез:
image

7. Далее смотрим какие разделы есть у нас на диске с помощью команды fdisl -l
image
Видим, что у нас 3 раздела, самый большой из которых /dev/sda3 (Linux LVM) — это тот самый раздел на котором располагался Local Storage

8. Удаляем данный раздел:
image
вводимые команды и значения выделены.
Проверим, что необходимый раздел удалён с помощью fdisk -l
image

9. Теперь вместо удалённого раздела мы создадим два, используя для этого так же команду fdisk:
Раздел под ISO-образы (/dev/sda3)
image
Раздел под Local Storage (/dev/sda4)
image
вводимые команды и значения выделены.
Посмотрим текущее состояние разделов:
image

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

11. Форматируем раздел, который отвели под ISO-репозиторий (/dev/sda3):
mkfs -t ext3 /dev/sda3
image

12. Создадим в файловой системе точку монтирования к которой будем монтировать вновь созданный раздел, и смонтируем его:
mkdir /mnt/iso
mount -t ext3 /dev/sda3 /mnt/iso
image
для автоматического монтирвоания при старте сервера пропишем строчку монтирования в файл /etc/fstab:
/dev/sda3 /mnt/iso ext3 defaults 0 0
image

13. Теперь точку монтирования /mnt/iso необходимо сделать доступной по сети. Для этого добавим строчку в файл /etc/exports:
/mnt/iso 127.0.0.1/255.255.255.255(rw,no_root_squash) — обратите внимание, что между адресом и открывающейся скобкой нет пробела!
image
для того чтобы изменения в файле сразу вступили в силу делаем команду:
exportfs -r
и для проверки, что мы все в написали правильно, вводим команду:
exportfs
image

14. Стартуем NFS сервис:
service nfs start
затем влючаем старт сервиса при загрузке сервера:
chlconfig nfs on
image

15. Теперь нам необходимо подключить этот диск через XenCenter. В меню XenCenter выбираем пункт New Storage, в появившемся окне выбираем пункт NFS ISO, нажимаем Next.
Далее заполняем поля в следующем окне: В поле Share Name пишем следующее: 127.0.0.1:/mnt/iso
image
В консоли XenCenter теперь появилось новое хранилище:
image
На этом создание ISO-репозитория закончилось. Копируйте iso-образы в /mnt/iso и пользуйтесь.

16. Однако нам ещё осталось вернуть раздел под виртуалки. Для этого на оставшемся /dev/sda4 создадим lvm и подключим его к XenServer:
xe sr-create type=lvm content-type=user device-config:device=/dev/sda4 name-label=«Local Storage»
image
Обратите внимание, в левой части XenCenter появился Local Storage. Нажимаем на нём правой кнопкой мыши и из контекстного меню выбираем Set as Default
image

Задача выполнена.

Несколько дополнений:

Если необходимо предоставить доступ к iso-репозиторию по сети то для этого необходимо:
1. Подправить файл /etc/exports, добавив туда IP-адреса, с которых будет осуществляться доступ.
2. Подправить файл /etc/sysconfig/portmap, удалить параметр -l, строчка должна выглядеть так: PMAP_ARGS=""
3. Подправить файл /etc/sysconfig/iptables