Назад | Перейти на главную страницу

Xen и Ubuntu?

Как правильно подойти к установке серверов Ubuntu на гипервизоре Xen? У меня нет опыта работы с RAID или Xen, кроме теоретического уровня.

Дополнительные требования:

Возможные идеи на данный момент:

  1. Хост Ubuntu (dom0) с пакетом ubuntu-xen-server (это якобы не поддерживается)
    • хост dom0 будет "владельцем" раздела RAID 5
    • Больше серверов Ubuntu в качестве гостей
  2. Хост Citrix XenServer без операционной системы
    • XenServer будет владеть RAID
  3. Хост Citrix XenServer без операционной системы
    • Гостевой экземпляр Ubuntu создает и владеет RAID

Вопросы и опасения:

  1. Можно ли использовать Ubuntu в качестве хоста dom0 Xen?
  2. Может ли XenServer установить такие пакеты, как mdadm, и создать раздел?
  3. Может ли множественный гостевой доступ (R + W) к одному и тому же разделу данных (RAID)?

Примечание: поскольку это может иметь отношение к поддержке, я имею в виду Ubuntu Server 10.04.

Ответы:

  1. Ubuntu можно использовать как хост dom0. Я использовал rhel5 в качестве хоста xen dom0, поверх него я установил сервер Windows 2k8 r2, и он отлично работает. Я знаю, что лицензия rhel нарушена, но в любом случае я не использую контракт на поддержку rhel 5. я помогаю себе и от сообщества. Шаги, которые я предпринял для установки xen на rhel с помощью win serv 2k8, описаны в моем блоге по этому URL-адресу. http://maximus2882.blogspot.com/2010/10/windows-2008-enterprise-on-rhel-55.html . Может быть, это будет вам полезно. Это должно быть похоже, если не проще.
  2. Xenserver не устанавливает mdadm, в этом ubuntu он исходит из пакета os. Вы должны выполнить #sudo apt-get install mdadm и использовать команду mdadm для создания раздела RAID.
  3. Несколько гостей могут использовать одно хранилище данных, но не могут совместно использовать одни и те же файлы. Но может жить в одном разделе. разделы и данные в гостевой ОС хранятся в виде файлов в ОС хоста. Таким образом, они могут использовать один и тот же раздел. Я думаю, что есть способы сделать определенный общий каталог между ОС хоста и гостевой ОС. Я сделал это в виртуальном боксе в Windows 7 в качестве хоста и Fedora 14 в качестве гостя. Не уверен, как сделать то же самое в xen, так как я ограничился с xen. Я бы посоветовал вам использовать vmware, если вы можете. Как показывает мой опыт работы с vmware, эта программа уже давно сформировалась, является лидером отрасли, имеет плавную и последовательную работу и интерфейс, который не вызывает особых сбоев.

Если вы используете программный рейд в Linux, вы должны создать раздел для вашего экземпляра dom0 и большой раздел с остальной частью жесткого диска.

Затем вы используете этот большой раздел как физический диск lvm и создаете один или несколько логических дисков lvm для каждой виртуальной машины.

Это позволяет вам легко увеличивать / уменьшать размер конкретного логического привода.

1. Можно ли использовать Ubuntu в качестве хоста dom0 Xen?

Установите Ubuntu 10.04 Server PV DomU на Xen 4.0 Dom0

Установите Libvirt 0.8.1 и Xen 4.0.1 Dom0

2. Может ли XenServer устанавливать такие пакеты, как mdadm, и создавать раздел?

Установка может быть немного сложной, но я могу работать. XenServer использует RHEL 5 с настраиваемым ядром из окна rhel, вы можете указать ldd / path / to / mdadm и скопировать все связанные библиотеки в XenServer в тех же местах. Я мог бы работать;)

** 3. Может ли множественный гостевой доступ (R + W) к одному и тому же разделу данных (RAID)? ****

Я уверен, что вы знали ответ.

По моему опыту, я просто оставляю детали для libvirt. Он скрывает для меня детали виртуализации. Типичная установка - установить стандартный ubuntu, затем инструменты libvirt и md. Предполагая, что у вас есть устройства для вашего рейда, убедитесь, что они имеют правильную систему (linux raid autodetect) в fdisk. Запустите fdisk, выберите раздел / устройство, используйте команду t, чтобы изменить его тип. Пример для рейда 1 показан ниже. Отрегулируйте уровень в вашей настройке на 5 получить рейд 5

root@mail:/etc/ldap# fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        2433    19543041   83  Linux
/dev/sda2            2434        3042     4891792+  83  Linux
/dev/sda3            3043        3286     1959930   82  Linux swap / Solaris
/dev/sda4            3287        9729    51753397+  fd  Linux raid autodetect

Disk /dev/sdb: 80.0 GB, 80032038912 bytes
255 heads, 63 sectors/track, 9730 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2433    19543041   83  Linux
/dev/sdb2            2434        3042     4891792+  83  Linux
/dev/sdb3            3043        3286     1959930   82  Linux swap / Solaris
/dev/sdb4            3287        9729    51753397+  fd  Linux raid autodetect

**You may need to modprobe the right raid module**
raid0   raid1   raid10  raid5   raid6
root@mail:/etc/ldap# modprobe raid1

**Create your array**
root@mail:/etc/ldap#  mdadm --create /dev/md0   --level=1  --raid-devices=2 /dev/sda4 /dev/sdb4
mdadm: array /dev/md0 started.
root@mail:/etc/ldap# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb4[1] sda4[0]
      51753280 blocks [2/2] [UU]
      [>....................]  resync =  0.9% (466176/51753280) finish=14.6min speed=58272K/sec

unused devices: <none>
root@mail:/etc/ldap# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb4[1] sda4[0]
      51753280 blocks [2/2] [UU]
      [==>..................]  resync = 11.5% (5956160/51753280) finish=13.6min speed=55983K/sec

unused devices: <none>

Вы можете начать использовать свой массив даже во время его синхронизации. Итак, мы начинаем с lvm: обычно вам нужно настроить PV, затем vg и, наконец, ваш LV для отдельных виртуальных машин.

Создайте свой физический объем с помощью pvcreate, VG и LV

# pvcreate /dev/md0  
# vgcreate xen02 /dev/md0
# lvcreate -L 100G -n nosql.example.net.storage /dev/xen02

тогда просмотрите свою работу

xen02:~# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/md0   xen02 lvm2 a-   462.49g 273.52g
xen02:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               xen02
  PV Size               462.50 GiB / not usable 3.81 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              118398
  Free PE               70022
  Allocated PE          48376
  PV UUID               ,.........

xen02:~# vgdisplay
  --- Volume group ---
  VG Name               xen02
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  30
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                13
  Open LV               9
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               462.49 GiB
  PE Size               4.00 MiB
  Total PE              118398
  Alloc PE / Size       48376 / 188.97 GiB
  Free  PE / Size       70022 / 273.52 GiB
  VG UUID               ,,,,,......

xen02:~# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  xen02   1  13   0 wz--n- 462.49g 273.52g

xen02:~# lvs
  LV                                  VG    Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  acme.example.net.root            xen02 -wi-ao 15.00g
  ca.example.net.root              xen02 -wi-ao 15.00g
  externalra.example.net.root      xen02 -wi-ao 15.00g
  box2.example.net.root          xen02 -wi-ao 15.00g

Теперь вы можете использовать libvirt для установки поверх такого типичного LV (обратите внимание, что вы можете изменить тип virt-type с kvm на xen .. :)) - Возможно, вам потребуется удалить параметр virtio, поскольку он специфичен для KVM.

virt-install --name=virtio_template \
--ram 1024 \
--os-type linux --os-variant debiansqueeze \
--disk path=/dev/xen02/nosql.example.net.storage,bus=virtio \
--network network=default,model=virtio \
--vnc \
--noautoconsole \
--cdrom ~/debian-testing-amd64-netinst.iso \
--virt-type kvm \
--force yes

Обычно я создаю виртуальную машину-шаблон и клонирую ее для создания рабочей виртуальной машины (--conect может быть специфичным для kvm):

#!/bin/sh
 # invoke as ./script "machine3"
MACHINENAME="Somemachine"

lvcreate -L 15G -n  "$MACHINENAME".example.net.root  /dev/xen02


echo Cloning template to $MACHINENAME
virt-clone \
        --prompt \
        --connect qemu:///system \
        --original template_master \
        --name "$MACHINENAME" \
        --file /dev/xen02/"$MACHINENAME".example.net.root 

Теперь вы можете весело провести время, используя команды virsh. Смотрите, это помощь.

virsh start $MachineName

virsh shutdown $MachineName

Счастливого ВМ