Hetzner - DokuWiki

Citrix XenServer/ru
Zeile 1: Zeile 1:
 
{{Languages|Citrix XenServer}}
 
{{Languages|Citrix XenServer}}
   
+
 
 
= Установка XenServer =
 
= Установка XenServer =
   
+
 
 
Для начала следует установить минимальную ОС с поддержкой GPT (например, Debian или Ubuntu). Далее следует зайти на сервер и переписать (запомнить) сетевые настройки из файла /etc/ networking/interfaces.
 
Для начала следует установить минимальную ОС с поддержкой GPT (например, Debian или Ubuntu). Далее следует зайти на сервер и переписать (запомнить) сетевые настройки из файла /etc/ networking/interfaces.
   
+
 
 
== Скачивание и распаковка XenServer ==
 
== Скачивание и распаковка XenServer ==
   
+
 
 
Скачайте ISO-образ с
 
Скачайте ISO-образ с
 
     [http://xenserver.org/overview-xenserver-open-source-virtualization/download.html xenserver.org]
 
     [http://xenserver.org/overview-xenserver-open-source-virtualization/download.html xenserver.org]
   
+
 
 
     wget http://downloadns.citrix.com.edgesuite.net/akdlm/6760/XenServer-6.0.201-install-cd.iso
 
     wget http://downloadns.citrix.com.edgesuite.net/akdlm/6760/XenServer-6.0.201-install-cd.iso
 
     mount -o loop XenServer-6.0.201-install-cd.iso /mnt
 
     mount -o loop XenServer-6.0.201-install-cd.iso /mnt
 
     mkdir /var/www/xenserver
 
     mkdir /var/www/xenserver
 
     cp -a /mnt/* /var/www/xenserver
 
     cp -a /mnt/* /var/www/xenserver
   
+
 
 
== Создание файла ответов ==
 
== Создание файла ответов ==
   
+
 
 
Вот пример файла с именем xenserver.xml.<br>
 
Вот пример файла с именем xenserver.xml.<br>
 
'''Обратите внимание:''' после копирования убедитесь в правильности указанных сетевых настроек.
 
'''Обратите внимание:''' после копирования убедитесь в правильности указанных сетевых настроек.
   
+
 
 
     <pre><installation mode="fresh" srtype="lvm">
 
     <pre><installation mode="fresh" srtype="lvm">
 
     <primary-disk gueststorage="yes">sda</primary-disk>
 
     <primary-disk gueststorage="yes">sda</primary-disk>
Zeile 42: Zeile 42:
 
     <ntpservers>213.239.239.166</ntpservers>
 
     <ntpservers>213.239.239.166</ntpservers>
 
     </installation></pre>
 
     </installation></pre>
   
+
 
 
Этот файл следует расположить там же, где расположено остальное содержимое диска XenServer. В нашем примере это директория /var/www/xenserver.
 
Этот файл следует расположить там же, где расположено остальное содержимое диска XenServer. В нашем примере это директория /var/www/xenserver.
   
+
 
 
== Настройки PXE ==
 
== Настройки PXE ==
   
+
 
 
На новом сервере: скопируйте следующие файлы с вашего web-сервера на сервер, используемый для установки XenServer:
 
На новом сервере: скопируйте следующие файлы с вашего web-сервера на сервер, используемый для установки XenServer:
  
Zeile 53: Zeile 53:
 
     wget http://www.example.com/xenserver/boot/vmlinuz
 
     wget http://www.example.com/xenserver/boot/vmlinuz
 
     wget http://www.example.com/xenserver/boot/xen.gz
 
     wget http://www.example.com/xenserver/boot/xen.gz
   
+
 
 
Также следует изменить настройки загрузчика. В Ubuntu 12.04 используется GRUB2. В файле /boot/grub/grub.cfg следует изменить первую запись (смотри последние 3 строки):
 
Также следует изменить настройки загрузчика. В Ubuntu 12.04 используется GRUB2. В файле /boot/grub/grub.cfg следует изменить первую запись (смотри последние 3 строки):
   
+
 
 
     <pre>if [ "${linux_gfx_mode}"&nbsp;!= "text" ]; then load_video; fi
 
     <pre>if [ "${linux_gfx_mode}"&nbsp;!= "text" ]; then load_video; fi
 
     menuentry 'Ubuntu, with Linux 3.2.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
 
     menuentry 'Ubuntu, with Linux 3.2.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
Zeile 73: Zeile 73:
 
     }
 
     }
 
     </pre>
 
     </pre>
   
+
 
 
Обратите внимание: в адресе файла ответов следует использовать IP-адрес, а не доменное имя. Поэтому следует быть осторожным при использовании виртуальных хостов и т.п.
 
Обратите внимание: в адресе файла ответов следует использовать IP-адрес, а не доменное имя. Поэтому следует быть осторожным при использовании виртуальных хостов и т.п.
   
+
 
 
== Перезагрузка ==
 
== Перезагрузка ==
   
+
 
 
Перезагрузите сервер, например, при помощи команды reboot. Теперь должна начаться установка XenServer. Несколько опосредованно следить за ходом установки наблюдая за обращениями к веб-серверу, например, при помощи команды "tail -f /var/log/apache2/access.log".
 
Перезагрузите сервер, например, при помощи команды reboot. Теперь должна начаться установка XenServer. Несколько опосредованно следить за ходом установки наблюдая за обращениями к веб-серверу, например, при помощи команды "tail -f /var/log/apache2/access.log".
   
+
 
Если в теение нескольких минут после презагрузки нет активности, скорее всего это означает, что сервер остановился загрузочном меню. В этом случае попросите подключить к серверу IP-KVM (LARA) и подтвердите выбор первого пункта, просто нажав <ENTER>.
+
Если в теение нескольких минут после презагрузки нет активности, скорее всего это означает, что сервер остановился загрузочном меню. В этом случае попросите подключить к серверу IP-KVM (KVM консоль) и подтвердите выбор первого пункта, просто нажав <ENTER>.
   
+
 
 
= Программный RAID1 =
 
= Программный RAID1 =
   
+
 
 
После установки XenServer должен быть доступен по SSH с паролем, указанным в файле ответов. При создании таблицы разделов XenServer 6 использует GPT, а не MBR. Это означает, что большие диски (например 3 TB в EX4) будут доступны полностью.
 
После установки XenServer должен быть доступен по SSH с паролем, указанным в файле ответов. При создании таблицы разделов XenServer 6 использует GPT, а не MBR. Это означает, что большие диски (например 3 TB в EX4) будут доступны полностью.
   
+
 
 
== Подготовка второго диска (sdb) ==
 
== Подготовка второго диска (sdb) ==
   
+
 
 
Диск /dev/sda после установки должен содержать 3 раздела. To transfer the partitions evenly you can look at the partitions on /dev/sda:
 
Диск /dev/sda после установки должен содержать 3 раздела. To transfer the partitions evenly you can look at the partitions on /dev/sda:
   
+
 
 
     sgdisk -p /dev/sda
 
     sgdisk -p /dev/sda
   
+
 
 
Удалите разделы на диске /dev/sdb:
 
Удалите разделы на диске /dev/sdb:
   
+
 
 
     sgdisk --zap-all /dev/sdb
 
     sgdisk --zap-all /dev/sdb
   
+
 
 
Создайте новую таблицу разделов GPT:
 
Создайте новую таблицу разделов GPT:
   
+
 
 
     sgdisk --mbrtogpt --clear /dev/sdb
 
     sgdisk --mbrtogpt --clear /dev/sdb
   
+
 
 
Добавьте новые разделы указав их границы (пример для диска объёмом 3 ТБ):
 
Добавьте новые разделы указав их границы (пример для диска объёмом 3 ТБ):
   
+
 
 
     sgdisk --new=1:2048:8388641 /dev/sdb
 
     sgdisk --new=1:2048:8388641 /dev/sdb
 
     sgdisk --typecode=1:fd00 /dev/sdb
 
     sgdisk --typecode=1:fd00 /dev/sdb
Zeile 113: Zeile 113:
 
     sgdisk --typecode=2:fd00 /dev/sda
 
     sgdisk --typecode=2:fd00 /dev/sda
 
     sgdisk --typecode=3:fd00 /dev/sda
 
     sgdisk --typecode=3:fd00 /dev/sda
   
+
 
 
== Создание массива ==
 
== Создание массива ==
   
+
 
 
Массив RAID1, настроенный Hetzner, всё ещё частично задействован. XenServer создал 3 раздела на /dev/sda и оставил /dev/sdb нетронутым, как показано в файле ответа в примере. Остатки RAID удалены:
 
Массив RAID1, настроенный Hetzner, всё ещё частично задействован. XenServer создал 3 раздела на /dev/sda и оставил /dev/sdb нетронутым, как показано в файле ответа в примере. Остатки RAID удалены:
   
+
 
 
     mdadm --stop /dev/md0
 
     mdadm --stop /dev/md0
   
+
 
 
Создание нового массива RAID:
 
Создание нового массива RAID:
   
+
 
 
     mknod /dev/md0 b 9 0
 
     mknod /dev/md0 b 9 0
 
     mknod /dev/md1 b 9 1
 
     mknod /dev/md1 b 9 1
Zeile 128: Zeile 128:
 
     mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
 
     mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
 
     mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3
 
     mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3
   
+
 
 
Опционально: Создание битовых карт для каждого устройства в RAID массиве. Битовые карты мало влияют на производительность, однако значительно сокращают время восстановления массива после сбоя.
 
Опционально: Создание битовых карт для каждого устройства в RAID массиве. Битовые карты мало влияют на производительность, однако значительно сокращают время восстановления массива после сбоя.
   
+
 
 
     mdadm --grow /dev/md0 -b internal
 
     mdadm --grow /dev/md0 -b internal
 
     mdadm --grow /dev/md1 -b internal
 
     mdadm --grow /dev/md1 -b internal
 
     mdadm --grow /dev/md2 -b internal
 
     mdadm --grow /dev/md2 -b internal
   
+
 
 
Сохраните новую конфигурацию RAID в обновлённом файле mdadm.conf:
 
Сохраните новую конфигурацию RAID в обновлённом файле mdadm.conf:
   
+
 
 
     mdadm --examine --scan > /etc/mdadm.conf
 
     mdadm --examine --scan > /etc/mdadm.conf
   
+
 
 
Скопируйте в RAID данные Store Manager:
 
Скопируйте в RAID данные Store Manager:
   
+
 
 
     pvcreate -ff /dev/md2
 
     pvcreate -ff /dev/md2
 
     vgextend VG_<TAB> /dev/md2
 
     vgextend VG_<TAB> /dev/md2
 
     pvmove /dev/sda3 /dev/md2
 
     pvmove /dev/sda3 /dev/md2
   
+
 
 
Удалите /dev/sda3 из группы томов SR:
 
Удалите /dev/sda3 из группы томов SR:
   
+
 
 
     vgreduce VG_<TAB> /dev/sda3
 
     vgreduce VG_<TAB> /dev/sda3
 
     pvremove /dev/sda3
 
     pvremove /dev/sda3
   
+
 
 
Примонтируйте /dev/md0 и скопируйте файловую систему:
 
Примонтируйте /dev/md0 и скопируйте файловую систему:
   
+
 
 
     mkfs.ext3 /dev/md0
 
     mkfs.ext3 /dev/md0
 
     mount /dev/md0 /mnt
 
     mount /dev/md0 /mnt
 
     cd /
 
     cd /
 
     cp -axv . /mnt
 
     cp -axv . /mnt
   
+
 
 
Теперь нужно отредактировать файл /mnt/etc/fstab:
 
Теперь нужно отредактировать файл /mnt/etc/fstab:
   
+
 
 
Примечание: текстовый редактор nano использовать не рекомендууется, так как он автоматически вставляет перенос строки, если строки длинные. Это может привести к нечитаемости конфигурационного файла. Такое поведение редактора можно избежать, использовав ключ «nano --nowrap», или просто, используя другой текстовый редактор, такой, как vi.
 
Примечание: текстовый редактор nano использовать не рекомендууется, так как он автоматически вставляет перенос строки, если строки длинные. Это может привести к нечитаемости конфигурационного файла. Такое поведение редактора можно избежать, использовав ключ «nano --nowrap», или просто, используя другой текстовый редактор, такой, как vi.
   
+
 
 
     vi /mnt/etc/fstab
 
     vi /mnt/etc/fstab
   
+
 
 
Замените параметр "root=LABEL=root-xxxxxx" на "/dev/md0"
 
Замените параметр "root=LABEL=root-xxxxxx" на "/dev/md0"
   
+
 
 
Создайте новый Initrd:
 
Создайте новый Initrd:
   
+
 
 
     mkdir /mnt/root/initrd-raid
 
     mkdir /mnt/root/initrd-raid
 
     mkinitrd -v --fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
 
     mkinitrd -v --fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
 
     cd /mnt/root/initrd-raid
 
     cd /mnt/root/initrd-raid
 
     zcat initrd-`uname -r`-raid.img | cpio -i
 
     zcat initrd-`uname -r`-raid.img | cpio -i
   
+
 
 
Отредактируйте файл "init", добавив для «raidautorun /dev/md0» следующее:
 
Отредактируйте файл "init", добавив для «raidautorun /dev/md0» следующее:
   
+
 
 
     raidautorun /dev/md1
 
     raidautorun /dev/md1
 
     raidautorun /dev/md2
 
     raidautorun /dev/md2
   
+
 
 
Скопируйте новый ramdisk в /mnt/boot:
 
Скопируйте новый ramdisk в /mnt/boot:
   
+
 
 
     <pre>find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img
 
     <pre>find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img
   
+
 
 
     rm /mnt/boot/initrd-2.6-xen.img
 
     rm /mnt/boot/initrd-2.6-xen.img
   
+
 
 
     ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img
 
     ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img
   
+
 
 
     vi /mnt/boot/extlinux.conf
 
     vi /mnt/boot/extlinux.conf
 
     </pre>
 
     </pre>
   
+
 
 
Теперь замените «root=LABEL=root-xyz» на «root=/dev/md0» во всех пунктах меню.
 
Теперь замените «root=LABEL=root-xyz» на «root=/dev/md0» во всех пунктах меню.
   
+
 
 
Установите MBR для GPT на /dev/sdb:
 
Установите MBR для GPT на /dev/sdb:
   
+
 
 
     cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
 
     cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
 
     cd /mnt
 
     cd /mnt
Zeile 197: Zeile 197:
 
     umount /dev/md0
 
     umount /dev/md0
 
     sync
 
     sync
   
+
 
 
Теперь RAID массив почти готов, не достаёт лишь /dev/sda1. Загрузитесь в Rescue систему (активируйте Rescue систему в панели Robot, скопируйте пароль и перезапустите сервер с помощью опции «hardware reset»). В Rescue системе выполните следующее:
 
Теперь RAID массив почти готов, не достаёт лишь /dev/sda1. Загрузитесь в Rescue систему (активируйте Rescue систему в панели Robot, скопируйте пароль и перезапустите сервер с помощью опции «hardware reset»). В Rescue системе выполните следующее:
   
+
 
 
     mdadm -a /dev/md0 /dev/sda1
 
     mdadm -a /dev/md0 /dev/sda1
 
     mdadm -a /dev/md2 /dev/sda3
 
     mdadm -a /dev/md2 /dev/sda3
   
+
 
 
Теперь RAID массив должен будет впервые синхронизироваться, что может занять продолжительное время (!) (Согласно данной инструкции, на свеже установленном сервере EX4S это занимает около 6 часов). Прогресс можно наблюдать так:
 
Теперь RAID массив должен будет впервые синхронизироваться, что может занять продолжительное время (!) (Согласно данной инструкции, на свеже установленном сервере EX4S это занимает около 6 часов). Прогресс можно наблюдать так:
   
+
 
 
     watch -n 1 cat /proc/mdstat
 
     watch -n 1 cat /proc/mdstat
   
+
 
 
= Подключение локальной библиотеки ISO  =
 
= Подключение локальной библиотеки ISO  =
   
+
 
 
XenServer не имеет возможности доступа к образам ISO на локальном диске. Чтобы это исправить, необходимо создать новый LV в зоне данных LVM, чтобы затем пробросить его через локальный NFS сервер. Это не самое оптимальное решение, но это работает.
 
XenServer не имеет возможности доступа к образам ISO на локальном диске. Чтобы это исправить, необходимо создать новый LV в зоне данных LVM, чтобы затем пробросить его через локальный NFS сервер. Это не самое оптимальное решение, но это работает.
 
Источник:[http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0 http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0]
 
Источник:[http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0 http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0]
   
+
 
 
== Найдите свой собственный VG ==
 
== Найдите свой собственный VG ==
   
+
 
 
     vgscan
 
     vgscan
 
     #Reading all physical volumes. This may take a while...
 
     #Reading all physical volumes. This may take a while...
 
     #Found volume group "VG_XenStorage-709d46ed-8193-d470-4ab8-21953af4f863" using metadata type lvm2
 
     #Found volume group "VG_XenStorage-709d46ed-8193-d470-4ab8-21953af4f863" using metadata type lvm2
   
+
 
 
== Создайте новый LVM ==
 
== Создайте новый LVM ==
   
+
 
 
(Пример с 20 ГБ)
 
(Пример с 20 ГБ)
   
+
 
 
     lvcreate -L 20G -n ISO VG_XenStorage-<myID>
 
     lvcreate -L 20G -n ISO VG_XenStorage-<myID>
 
     #Logical volume "ISO" created
 
     #Logical volume "ISO" created
   
+
 
 
== Создание файловой системы ==
 
== Создание файловой системы ==
   
+
 
 
     mkfs.ext3 /dev/VG_XenStorage-<myID>/ISO
 
     mkfs.ext3 /dev/VG_XenStorage-<myID>/ISO
   
+
 
 
== Правка /etc/exports ==
 
== Правка /etc/exports ==
   
+
 
 
     mkdir /ISO
 
     mkdir /ISO
 
     echo "/ISO 127.0.0.1(rw,no_root_squash,sync)" >> /etc/exports
 
     echo "/ISO 127.0.0.1(rw,no_root_squash,sync)" >> /etc/exports
   
+
 
 
== Активация NFS и Portmap ==
 
== Активация NFS и Portmap ==
   
+
 
 
     chkconfig --level 345 nfs on
 
     chkconfig --level 345 nfs on
 
     chkconfig --level 345 portmap on
 
     chkconfig --level 345 portmap on
 
     service nfs start
 
     service nfs start
 
     service portmap start
 
     service portmap start
   
+
 
 
== Монтирование при загрузке ==
 
== Монтирование при загрузке ==
   
+
 
 
     Добавьте в конец файла «/etc/rc.local» следующее:
 
     Добавьте в конец файла «/etc/rc.local» следующее:
   
+
 
 
     lvchange -a y /dev/VG_XenStorage-<myID>/ISO
 
     lvchange -a y /dev/VG_XenStorage-<myID>/ISO
 
     mount /dev/VG_XenStorage-<myID>/ISO /ISO
 
     mount /dev/VG_XenStorage-<myID>/ISO /ISO
   
+
 
 
== Введите библиотеку ISO в XenCenter ==
 
== Введите библиотеку ISO в XenCenter ==
   
+
 
 
В XenCenter, вы теперь можете добавить библиотеку хранилище типа «NFS ISO». В качестве точки монтирования можно указать «localhost:/ISO».
 
В XenCenter, вы теперь можете добавить библиотеку хранилище типа «NFS ISO». В качестве точки монтирования можно указать «localhost:/ISO».
   
+
 
 
= Сетевые настройки =
 
= Сетевые настройки =
   
+
 
 
== Настройка хоста в качестве маршрутизатора ==
 
== Настройка хоста в качестве маршрутизатора ==
   
+
 
 
XenServer можно сделать маршрутизатором с помощью изменений в файле «/etc/sysctl.conf» (первые несколько строк до «net.ipv4.ip_forward = 0» включительно, должны быть заменены на следующее):
 
XenServer можно сделать маршрутизатором с помощью изменений в файле «/etc/sysctl.conf» (первые несколько строк до «net.ipv4.ip_forward = 0» включительно, должны быть заменены на следующее):
   
+
 
 
     <pre># Kernel sysctl configuration file for Red Hat Linux
 
     <pre># Kernel sysctl configuration file for Red Hat Linux
 
     #
 
     #
 
     # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
 
     # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
 
     # sysctl.conf(5) for more details.
 
     # sysctl.conf(5) for more details.
   
+
 
 
     # Controls IP packet forwarding
 
     # Controls IP packet forwarding
 
     net.ipv4.ip_forward = 1
 
     net.ipv4.ip_forward = 1
 
     net.ipv6.conf.all.forwarding=1
 
     net.ipv6.conf.all.forwarding=1
   
+
 
 
     # Controls proxy arp
 
     # Controls proxy arp
 
     net.ipv4.conf.default.proxy_arp = 0
 
     net.ipv4.conf.default.proxy_arp = 0
   
+
 
 
     # Turn off redirects
 
     # Turn off redirects
 
     net.ipv4.conf.all.send_redirects = 0
 
     net.ipv4.conf.all.send_redirects = 0
Zeile 276: Zeile 276:
 
     net.ipv4.conf.xenbr0.send_redirects = 0
 
     net.ipv4.conf.xenbr0.send_redirects = 0
 
     </pre>
 
     </pre>
   
+
 
 
Настройки теперь актуальны после каждой перезагрузки. Их также можно применить и без перезагрузки, с помощью следующей команды:
 
Настройки теперь актуальны после каждой перезагрузки. Их также можно применить и без перезагрузки, с помощью следующей команды:
   
+
 
 
     sysctl -p
 
     sysctl -p
   
+
 
 
== IPv4 ==
 
== IPv4 ==
   
+
 
 
=== Настройка дополнительных IP-адресов ===
 
=== Настройка дополнительных IP-адресов ===
   
+
 
 
У всех серверов в Hetznerб по умолчанию есть один IPv4 адрес. Однако, вы можете заказать до 3-х дополнительных одиночных IPv4 адресов. Смотрите: [[IP-Adressen/ru|IP-адреса]]
 
У всех серверов в Hetznerб по умолчанию есть один IPv4 адрес. Однако, вы можете заказать до 3-х дополнительных одиночных IPv4 адресов. Смотрите: [[IP-Adressen/ru|IP-адреса]]
   
+
 
 
=== Настройка failover IP  ===
 
=== Настройка failover IP  ===
   
+
 
Failover IP это дополнительный адрес, который можно переключать между серверами Hetzner.  
+
Failover IP это дополнительный адрес, который можно переключать между серверами Hetzner.
   
+
 
 
=== Настройка дополнительной подсети ===
 
=== Настройка дополнительной подсети ===
   
+
 
 
В обычном варианте настройки с 3 дополнительными IPv4 адресами, вы можете запустить до 3-х виртуальных машин. Вы также можете заказать и подсети. Смотрите: [[IP-Adressen/ru|IP-адреса]]
 
В обычном варианте настройки с 3 дополнительными IPv4 адресами, вы можете запустить до 3-х виртуальных машин. Вы также можете заказать и подсети. Смотрите: [[IP-Adressen/ru|IP-адреса]]
   
+
 
 
Вышесказанное применимо и к дополнительным подсетям. Один из адресов подсети используется в качестве шлюза, а остальные можно назначать на гостевые системы.
 
Вышесказанное применимо и к дополнительным подсетям. Один из адресов подсети используется в качестве шлюза, а остальные можно назначать на гостевые системы.
   
+
 
 
Для того, чтобы хост система маршрутизировала пакеты из подсети, нам нужно добавить первый адрес подсети на интерфейс xenbr0 (в примере использууется сеть xx.yy.177.160/27):
 
Для того, чтобы хост система маршрутизировала пакеты из подсети, нам нужно добавить первый адрес подсети на интерфейс xenbr0 (в примере использууется сеть xx.yy.177.160/27):
   
+
 
 
     ip addr add xx.yy.177.161/27 dev xenbr0
 
     ip addr add xx.yy.177.161/27 dev xenbr0
   
+
 
 
=== Маршрутизация на соседние серверы ===
 
=== Маршрутизация на соседние серверы ===
   
+
 
 
Если вы заказали сразу несколько серверов и они оказались в одной стойке и их IP-адреса идут один за другим, вы обнаружите, однако, что они не будут «видеть» друг друга (отвечать на ping), тогда как обычно, серверы из одной подсети способны «видеть» друг друга напрямую, без шлюза. В Hetzner это невозможно в виду соображений безопасности. Соседствующие серверы имеют доступ друг другу только через шлюз от Hetzner. Настроить моршрут необходимо следующим образом:
 
Если вы заказали сразу несколько серверов и они оказались в одной стойке и их IP-адреса идут один за другим, вы обнаружите, однако, что они не будут «видеть» друг друга (отвечать на ping), тогда как обычно, серверы из одной подсети способны «видеть» друг друга напрямую, без шлюза. В Hetzner это невозможно в виду соображений безопасности. Соседствующие серверы имеют доступ друг другу только через шлюз от Hetzner. Настроить моршрут необходимо следующим образом:
   
+
 
 
     route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
 
     route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
   
+
 
 
В данном случае xx.yy.44.65 является IP-адресом шлюза Hetzner. Для получения IP-адреса сети, мы прости отнимаем 1, и получаем xx.yy.44.64.
 
В данном случае xx.yy.44.65 является IP-адресом шлюза Hetzner. Для получения IP-адреса сети, мы прости отнимаем 1, и получаем xx.yy.44.64.
   
+
 
 
Данную команду нужно выполнять после каждой перезагрузки сервера, иначе виртуальные машины не будут иметь подключения к Интернет.
 
Данную команду нужно выполнять после каждой перезагрузки сервера, иначе виртуальные машины не будут иметь подключения к Интернет.
   
+
 
 
Пример конфигурации:<br/>
 
Пример конфигурации:<br/>
 
     *Серверу назначены следующие IP-адреса: xx.yy.44.76, xx.yy.44.105, xx.yy.44.108 and xx.yy.44.110.
 
     *Серверу назначены следующие IP-адреса: xx.yy.44.76, xx.yy.44.105, xx.yy.44.108 and xx.yy.44.110.
Zeile 321: Zeile 321:
 
     **IP-адрес xx.yy.177.161 является шлюзом, итого, остаются доступными 29 IP-адресов: xx.yy.177.162 - xx.yy.177.191
 
     **IP-адрес xx.yy.177.161 является шлюзом, итого, остаются доступными 29 IP-адресов: xx.yy.177.162 - xx.yy.177.191
 
     **Шлюзом для виртуальных машин в жтой подсети служит xx.yy.177.161.
 
     **Шлюзом для виртуальных машин в жтой подсети служит xx.yy.177.161.
   
+
 
 
Для того, чтобы настройки оставались в силе и после перезагрузки, в файл /etc/sysconfig/networking-scripts/ifcfg-xenbr0 нужно добавить следующее:
 
Для того, чтобы настройки оставались в силе и после перезагрузки, в файл /etc/sysconfig/networking-scripts/ifcfg-xenbr0 нужно добавить следующее:
   
+
 
 
     up ip addr add xx.yy.177.161/27 dev xenbr0
 
     up ip addr add xx.yy.177.161/27 dev xenbr0
 
     down ip addr del xx.yy.177.161/27 dev xenbr0
 
     down ip addr del xx.yy.177.161/27 dev xenbr0
 
     up route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
 
     up route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
 
     down route del -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
 
     down route del -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
   
+
 
 
== IPv6 ==
 
== IPv6 ==
   
+
 
 
Все серверы поставляются с подсетью  /64 протокола IPv6. Для тех клиентов, кто получил свои серверы до февраля 2013 года, эта подсеть можеь быть бесплатно заказана из панели Robot и автоматически активирована.
 
Все серверы поставляются с подсетью  /64 протокола IPv6. Для тех клиентов, кто получил свои серверы до февраля 2013 года, эта подсеть можеь быть бесплатно заказана из панели Robot и автоматически активирована.
   
+
 
 
Возьмём для примера подсеть 2a01:4f8:xxx:xxxx::/64
 
Возьмём для примера подсеть 2a01:4f8:xxx:xxxx::/64
   
+
 
 
В данном случае XenServer получит IP-адрес 2a01:4f8:161:xxxx::2/112.
 
В данном случае XenServer получит IP-адрес 2a01:4f8:161:xxxx::2/112.
   
+
 
 
Поскольку XenServer не поддерживает настройку IPv6 через интерфейс управления в xconsole, нужно будет использовать небольшой скрипт. Он располагается в "/etc/init.d" и называется «network6». Скрипт выглядит так:
 
Поскольку XenServer не поддерживает настройку IPv6 через интерфейс управления в xconsole, нужно будет использовать небольшой скрипт. Он располагается в "/etc/init.d" и называется «network6». Скрипт выглядит так:
   
+
 
 
     <pre>#!/bin/bash
 
     <pre>#!/bin/bash
 
     #
 
     #
Zeile 359: Zeile 359:
 
     IPV6HOSTADDR=2a01:4f8:161:xxxx::2/112
 
     IPV6HOSTADDR=2a01:4f8:161:xxxx::2/112
 
     IPV6HOSTSUBNET=2a01:4f8:161:xxxx::0/112
 
     IPV6HOSTSUBNET=2a01:4f8:161:xxxx::0/112
   
+
 
 
     usage ()
 
     usage ()
 
     {
 
     {
Zeile 375: Zeile 375:
 
       ip -6 route add $IPV6GATEWAY dev xenbr0
 
       ip -6 route add $IPV6GATEWAY dev xenbr0
 
       ip -6 route add default via $IPV6GATEWAY
 
       ip -6 route add default via $IPV6GATEWAY
   
+
 
 
       # Enable ipv6 forwarding (don't work in /etc/sysctl.conf)
 
       # Enable ipv6 forwarding (don't work in /etc/sysctl.conf)
 
       sysctl -w net.ipv6.conf.all.forwarding=1
 
       sysctl -w net.ipv6.conf.all.forwarding=1
   
+
 
 
     }
 
     }
 
     stop ()
 
     stop ()
Zeile 391: Zeile 391:
 
     ########
 
     ########
 
     </pre>
 
     </pre>
   
+
 
 
Примечание: некоторые строки необходимо изменить согласно с вашей конфигурацией. Перед использованием скрипта, отредактируйте его соответственно. С помощью команды
 
Примечание: некоторые строки необходимо изменить согласно с вашей конфигурацией. Перед использованием скрипта, отредактируйте его соответственно. С помощью команды
   
+
 
 
     chmod a+x
 
     chmod a+x
   
+
 
 
скрипт делается исполняемым, а с помощью команды
 
скрипт делается исполняемым, а с помощью команды
   
+
 
 
     chkconfig network6 on
 
     chkconfig network6 on
   
+
 
 
он добавляется в процесс загрузки.
 
он добавляется в процесс загрузки.
   
+
 
 
Загрузка модуля ядра «esp6» является решением для XenServer, так как «modprobe ipv6» заканчивается выводом «Module not found», тогда как «modprobe esp6» загружает IPv6 модуль.
 
Загрузка модуля ядра «esp6» является решением для XenServer, так как «modprobe ipv6» заканчивается выводом «Module not found», тогда как «modprobe esp6» загружает IPv6 модуль.
   
+
 
 
На виртуальных машинах (если они работают на Linux) вы можете добавить следующие настройки:
 
На виртуальных машинах (если они работают на Linux) вы можете добавить следующие настройки:
   
+
 
 
     ip addr add 2a01:4f8:161:xxx::y/64 dev eth0
 
     ip addr add 2a01:4f8:161:xxx::y/64 dev eth0
 
     ip route add default via 2a01:4f8:161:xxx::2
 
     ip route add default via 2a01:4f8:161:xxx::2
   
+
 
 
= Замена драйвера сетевой карты (опционально) =
 
= Замена драйвера сетевой карты (опционально) =
   
+
 
 
Драйвер по умолчанию в XenServer, который используется для сетевой карты Realtek (r8169), в некоторых случаях служит причиной потери пакетов. Поэтому, его можно заменить другим: r8168. Для сборки драйвера необходим специальный набор Driver Development Kit (DDK), который можно скачать с сайта Citrix:
 
Драйвер по умолчанию в XenServer, который используется для сетевой карты Realtek (r8169), в некоторых случаях служит причиной потери пакетов. Поэтому, его можно заменить другим: r8168. Для сборки драйвера необходим специальный набор Driver Development Kit (DDK), который можно скачать с сайта Citrix:
 
     [http://support.citrix.com/article/CTX138885 http://support.citrix.com/article/CTX138885] (Для XenServer 6.2.0 с Hotfix XS62E004)
 
     [http://support.citrix.com/article/CTX138885 http://support.citrix.com/article/CTX138885] (Для XenServer 6.2.0 с Hotfix XS62E004)
   
+
 
 
Предположим, ISO файл уже скопирован в /ISO.
 
Предположим, ISO файл уже скопирован в /ISO.
 
Во-первых, хранилище виртуальных машин должно быть обозначено из XenCenter, как хранилище по умолчанию (клик правой кнопко мыши -> Default Storage), так как в противном случае команда xe vm-import не работает.
 
Во-первых, хранилище виртуальных машин должно быть обозначено из XenCenter, как хранилище по умолчанию (клик правой кнопко мыши -> Default Storage), так как в противном случае команда xe vm-import не работает.
   
+
 
 
Монтирование ISO:
 
Монтирование ISO:
   
+
 
 
     mkdir /mnt/iso
 
     mkdir /mnt/iso
 
     mount -o loop /local/iso/XenServer-6.2.0-XS62E004-ddk.iso /mnt/iso
 
     mount -o loop /local/iso/XenServer-6.2.0-XS62E004-ddk.iso /mnt/iso
   
+
 
 
Импорт DDK VM:
 
Импорт DDK VM:
   
+
 
 
     xe vm-import filename=/mnt/iso/ddk/ova.xml
 
     xe vm-import filename=/mnt/iso/ddk/ova.xml
   
+
 
 
В XenCenter сетевое устройство нужно добавить на виртуальную машину. После этого машину можно перезапустить и назначить root-пароль, с которым вы сможете авторизоваться.
 
В XenCenter сетевое устройство нужно добавить на виртуальную машину. После этого машину можно перезапустить и назначить root-пароль, с которым вы сможете авторизоваться.
   
+
 
 
Теперь мы можем добавить корректные сетевые настройки для виртуальных машин в следующих файлах:
 
Теперь мы можем добавить корректные сетевые настройки для виртуальных машин в следующих файлах:
 
     «/etc/sysconfig/network-scripts/ifcfg-eth0»
 
     «/etc/sysconfig/network-scripts/ifcfg-eth0»
   
+
 
 
     DEVICE=eth0
 
     DEVICE=eth0
 
     BOOTPROTO=static
 
     BOOTPROTO=static
Zeile 437: Zeile 437:
 
     ONBOOT=yes
 
     ONBOOT=yes
 
     TYPE=ethernet
 
     TYPE=ethernet
   
+
 
 
     «/etc/sysconfig/network-scripts/route-eth0»
 
     «/etc/sysconfig/network-scripts/route-eth0»
   
+
 
 
     IP-ADRESSE-DER_VM dev eth0 scope link
 
     IP-ADRESSE-DER_VM dev eth0 scope link
 
     default via IP-DES-XENSERVERS-BZW-BEI-IP-NETZ-DIE-DES-xenbr0:1
 
     default via IP-DES-XENSERVERS-BZW-BEI-IP-NETZ-DIE-DES-xenbr0:1
   
+
 
 
     «/etc/resolv.conf»
 
     «/etc/resolv.conf»
   
+
 
 
     nameserver 213.133.99.99
 
     nameserver 213.133.99.99
 
     nameserver 213.133.100.100
 
     nameserver 213.133.100.100
   
+
 
 
Теперь скачайте драйвер, разархивируйте его, и скомпилируйте:
 
Теперь скачайте драйвер, разархивируйте его, и скомпилируйте:
   
+
 
 
     cd /root
 
     cd /root
 
     wget [http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2 http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2]
 
     wget [http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2 http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2]
Zeile 455: Zeile 455:
 
     cd r8168-8.037.00
 
     cd r8168-8.037.00
 
     make all
 
     make all
   
+
 
 
Новый драйвер (src/r8168.ko) необходимо перенести на хост систему: «/lib/modules/<newest kernel version>/kernel/drivers/net/»
 
Новый драйвер (src/r8168.ko) необходимо перенести на хост систему: «/lib/modules/<newest kernel version>/kernel/drivers/net/»
   
+
 
 
Назначьте корректные права:
 
Назначьте корректные права:
   
+
 
 
     chmod 0744 /lib/modules/<newest kernel version>/kernel/drivers/net/r8168.ko
 
     chmod 0744 /lib/modules/<newest kernel version>/kernel/drivers/net/r8168.ko
   
+
 
 
Теперь добавьте драйвер в файл «/etc/modprobe.conf»:
 
Теперь добавьте драйвер в файл «/etc/modprobe.conf»:
   
+
 
 
     echo "alias eth0 r8168" > /etc/modprobe.conf
 
     echo "alias eth0 r8168" > /etc/modprobe.conf
   
+
 
 
Скомпилированный драйвер теперь должен быть активирован. Поскольку сервер не будет доступен всё это время (несколько секунд), необходимые инструкции будут добавлены в одну команду:
 
Скомпилированный драйвер теперь должен быть активирован. Поскольку сервер не будет доступен всё это время (несколько секунд), необходимые инструкции будут добавлены в одну команду:
   
+
 
 
     rmmod r8169 && depmod -a && modprobe r8168 && service network restart && service ipaliases restart
 
     rmmod r8169 && depmod -a && modprobe r8168 && service network restart && service ipaliases restart
   
+
 
 
Через несколько секунд сервер должен стать доступен по сети с новым драйвером.
 
Через несколько секунд сервер должен стать доступен по сети с новым драйвером.
   
+
 
 
     lspci -nnk | grep -i net -A2
 
     lspci -nnk | grep -i net -A2
   
+
 
 
Последняя строка вывода должна выглядеть так: «Kernel driver in use: r8168»
 
Последняя строка вывода должна выглядеть так: «Kernel driver in use: r8168»
   
+
 
 
= Перенос виртуальных машин с другого (более старого) Xenserver =
 
= Перенос виртуальных машин с другого (более старого) Xenserver =
   
+
 
 
К счастью, XenServer достаточно гибок в отношении переноса виртуальных машин на другой хост. Существует много способов сделать это, один из которых — это удалённо примонтировать директорию (как NFS) старого хоста на новом. В этой директории ВМ экспортируется на другой хост (с помощью «xe vm-export uuid=xxx-xxx filename=vm1.xva») и затем импортируется на новый хост («xe vm-import filename=vm1.xva»).
 
К счастью, XenServer достаточно гибок в отношении переноса виртуальных машин на другой хост. Существует много способов сделать это, один из которых — это удалённо примонтировать директорию (как NFS) старого хоста на новом. В этой директории ВМ экспортируется на другой хост (с помощью «xe vm-export uuid=xxx-xxx filename=vm1.xva») и затем импортируется на новый хост («xe vm-import filename=vm1.xva»).
   
+
 
 
= Источники =
 
= Источники =
   
+
 
 
     *[[XenServer 5.5]] (Немецкий)
 
     *[[XenServer 5.5]] (Немецкий)
 
     *[[Zusaetzliche IP-Adressen/ru|Дополнительные IP-адреса]]
 
     *[[Zusaetzliche IP-Adressen/ru|Дополнительные IP-адреса]]
     *[[XenServer 5.6 Installation per LARA#Den r8168 Netzwerkkarten Treiber einbinden|XenServer 5.6 Installation per LARA]] (Немецкий)
+
     *[[XenServer 5.6 Installation per KVM-Konsole#Den r8168 Netzwerkkarten Treiber einbinden|XenServer 5.6 Installation per KVM Console]] (Немецкий)
 
     *[http://blog.codeaddict.org/?p=5 http://blog.codeaddict.org/?p=5]
 
     *[http://blog.codeaddict.org/?p=5 http://blog.codeaddict.org/?p=5]
 
     *[http://pastebin.com/psaWg7QK http://pastebin.com/psaWg7QK]
 
     *[http://pastebin.com/psaWg7QK http://pastebin.com/psaWg7QK]

Version vom 14. Juli 2017, 19:26 Uhr

Inhaltsverzeichnis

Установка XenServer

Для начала следует установить минимальную ОС с поддержкой GPT (например, Debian или Ubuntu). Далее следует зайти на сервер и переписать (запомнить) сетевые настройки из файла /etc/ networking/interfaces.

Скачивание и распаковка XenServer

Скачайте ISO-образ с

   xenserver.org
    wget http://downloadns.citrix.com.edgesuite.net/akdlm/6760/XenServer-6.0.201-install-cd.iso
    mount -o loop XenServer-6.0.201-install-cd.iso /mnt
    mkdir /var/www/xenserver
    cp -a /mnt/* /var/www/xenserver

Создание файла ответов

Вот пример файла с именем xenserver.xml.
Обратите внимание: после копирования убедитесь в правильности указанных сетевых настроек.

<installation mode="fresh" srtype="lvm">
    <primary-disk gueststorage="yes">sda</primary-disk>
    <keymap>de</keymap>
    <hostname>xenserver-ex4s</hostname>
    <root-password>my_password</root-password>
    <source type ="url">http://xx.xx.xx.xx/xenserver/</source>
    <!-- No Post install scripts configured -->
    <admin-interface name="eth0" proto="static">
    <ip>Hetzner Server IP</ip>
    <subnet-mask>255.255.255.224</subnet-mask>
    <gateway>Hetzner Gateway IP</gateway>
    </admin-interface>
    <nameserver>213.133.98.98</nameserver>
    <nameserver>213.133.99.99</nameserver>
    <nameserver>213.133.100.100</nameserver>
    <timezone>Europe/Berlin</timezone>
    <time-config-method>ntp</time-config-method>
    <ntp-servers>ntp</ntp-servers>
    <ntpservers>213.239.239.164</ntpservers>
    <ntpservers>213.239.239.165</ntpservers>
    <ntpservers>213.239.239.166</ntpservers>
    </installation>

Этот файл следует расположить там же, где расположено остальное содержимое диска XenServer. В нашем примере это директория /var/www/xenserver.

Настройки PXE

На новом сервере: скопируйте следующие файлы с вашего web-сервера на сервер, используемый для установки XenServer:

   cd /boot
    wget http://www.example.com/xenserver/install.img
    wget http://www.example.com/xenserver/boot/vmlinuz
    wget http://www.example.com/xenserver/boot/xen.gz

Также следует изменить настройки загрузчика. В Ubuntu 12.04 используется GRUB2. В файле /boot/grub/grub.cfg следует изменить первую запись (смотри последние 3 строки):

if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
    menuentry 'Ubuntu, with Linux 3.2.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod raid
    insmod mdraid1x
    insmod part_gpt
    insmod part_gpt
    insmod ext2
    set root='(mduuid/xxxxxxxxxxxxx)'
    search --no-floppy --fs-uuid --set=root 2caba589-8a66-457a-81a2-2f43c7203736
    multiboot /xen.gz dom0_mem=752M acpi=off nosmp noapic noirqbalance
    module /vmlinuz answerfile=http://<IP-адрес удалённого сервера>/xenserver/xenserver.xml install
    module /install.img
    }
    

Обратите внимание: в адресе файла ответов следует использовать IP-адрес, а не доменное имя. Поэтому следует быть осторожным при использовании виртуальных хостов и т.п.

Перезагрузка

Перезагрузите сервер, например, при помощи команды reboot. Теперь должна начаться установка XenServer. Несколько опосредованно следить за ходом установки наблюдая за обращениями к веб-серверу, например, при помощи команды "tail -f /var/log/apache2/access.log".

Если в теение нескольких минут после презагрузки нет активности, скорее всего это означает, что сервер остановился загрузочном меню. В этом случае попросите подключить к серверу IP-KVM (KVM консоль) и подтвердите выбор первого пункта, просто нажав <ENTER>.

Программный RAID1

После установки XenServer должен быть доступен по SSH с паролем, указанным в файле ответов. При создании таблицы разделов XenServer 6 использует GPT, а не MBR. Это означает, что большие диски (например 3 TB в EX4) будут доступны полностью.

Подготовка второго диска (sdb)

Диск /dev/sda после установки должен содержать 3 раздела. To transfer the partitions evenly you can look at the partitions on /dev/sda:

    sgdisk -p /dev/sda

Удалите разделы на диске /dev/sdb:

    sgdisk --zap-all /dev/sdb

Создайте новую таблицу разделов GPT:

    sgdisk --mbrtogpt --clear /dev/sdb

Добавьте новые разделы указав их границы (пример для диска объёмом 3 ТБ):

    sgdisk --new=1:2048:8388641 /dev/sdb
    sgdisk --typecode=1:fd00 /dev/sdb
    sgdisk --new=2:8390656:16777249 /dev/sdb
    sgdisk --typecode=2:fd00 /dev/sdb
    sgdisk --new=3:16779264:5860533134 /dev/sdb
    sgdisk --typecode=3:fd00 /dev/sdb
    sgdisk /dev/sda --attributes=1:set:2
    sgdisk /dev/sdb --attributes=1:set:2
    sgdisk --typecode=1:fd00 /dev/sda
    sgdisk --typecode=2:fd00 /dev/sda
    sgdisk --typecode=3:fd00 /dev/sda

Создание массива

Массив RAID1, настроенный Hetzner, всё ещё частично задействован. XenServer создал 3 раздела на /dev/sda и оставил /dev/sdb нетронутым, как показано в файле ответа в примере. Остатки RAID удалены:

    mdadm --stop /dev/md0

Создание нового массива RAID:

    mknod /dev/md0 b 9 0
    mknod /dev/md1 b 9 1
    mknod /dev/md2 b 9 2
    mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
    mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
    mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Опционально: Создание битовых карт для каждого устройства в RAID массиве. Битовые карты мало влияют на производительность, однако значительно сокращают время восстановления массива после сбоя.

    mdadm --grow /dev/md0 -b internal
    mdadm --grow /dev/md1 -b internal
    mdadm --grow /dev/md2 -b internal

Сохраните новую конфигурацию RAID в обновлённом файле mdadm.conf:

    mdadm --examine --scan > /etc/mdadm.conf

Скопируйте в RAID данные Store Manager:

    pvcreate -ff /dev/md2
    vgextend VG_<TAB> /dev/md2
    pvmove /dev/sda3 /dev/md2

Удалите /dev/sda3 из группы томов SR:

    vgreduce VG_<TAB> /dev/sda3
    pvremove /dev/sda3

Примонтируйте /dev/md0 и скопируйте файловую систему:

    mkfs.ext3 /dev/md0
    mount /dev/md0 /mnt
    cd /
    cp -axv . /mnt

Теперь нужно отредактировать файл /mnt/etc/fstab:

Примечание: текстовый редактор nano использовать не рекомендууется, так как он автоматически вставляет перенос строки, если строки длинные. Это может привести к нечитаемости конфигурационного файла. Такое поведение редактора можно избежать, использовав ключ «nano --nowrap», или просто, используя другой текстовый редактор, такой, как vi.

    vi /mnt/etc/fstab

Замените параметр "root=LABEL=root-xxxxxx" на "/dev/md0"

Создайте новый Initrd:

    mkdir /mnt/root/initrd-raid
    mkinitrd -v --fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
    cd /mnt/root/initrd-raid
    zcat initrd-`uname -r`-raid.img | cpio -i

Отредактируйте файл "init", добавив для «raidautorun /dev/md0» следующее:

    raidautorun /dev/md1
    raidautorun /dev/md2

Скопируйте новый ramdisk в /mnt/boot:

find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img

    rm /mnt/boot/initrd-2.6-xen.img

    ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img

    vi /mnt/boot/extlinux.conf
    

Теперь замените «root=LABEL=root-xyz» на «root=/dev/md0» во всех пунктах меню.

Установите MBR для GPT на /dev/sdb:

    cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
    cd /mnt
    extlinux  --raid -i boot/
    umount /dev/md0
    sync

Теперь RAID массив почти готов, не достаёт лишь /dev/sda1. Загрузитесь в Rescue систему (активируйте Rescue систему в панели Robot, скопируйте пароль и перезапустите сервер с помощью опции «hardware reset»). В Rescue системе выполните следующее:

    mdadm -a /dev/md0 /dev/sda1
    mdadm -a /dev/md2 /dev/sda3

Теперь RAID массив должен будет впервые синхронизироваться, что может занять продолжительное время (!) (Согласно данной инструкции, на свеже установленном сервере EX4S это занимает около 6 часов). Прогресс можно наблюдать так:

    watch -n 1 cat /proc/mdstat

Подключение локальной библиотеки ISO

XenServer не имеет возможности доступа к образам ISO на локальном диске. Чтобы это исправить, необходимо создать новый LV в зоне данных LVM, чтобы затем пробросить его через локальный NFS сервер. Это не самое оптимальное решение, но это работает. Источник:http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0

Найдите свой собственный VG

    vgscan
    #Reading all physical volumes. This may take a while...
    #Found volume group "VG_XenStorage-709d46ed-8193-d470-4ab8-21953af4f863" using metadata type lvm2

Создайте новый LVM

(Пример с 20 ГБ)

    lvcreate -L 20G -n ISO VG_XenStorage-<myID>
    #Logical volume "ISO" created

Создание файловой системы

    mkfs.ext3 /dev/VG_XenStorage-<myID>/ISO

Правка /etc/exports

    mkdir /ISO
    echo "/ISO 127.0.0.1(rw,no_root_squash,sync)" >> /etc/exports

Активация NFS и Portmap

    chkconfig --level 345 nfs on
    chkconfig --level 345 portmap on
    service nfs start
    service portmap start

Монтирование при загрузке

   Добавьте в конец файла «/etc/rc.local» следующее:
    lvchange -a y /dev/VG_XenStorage-<myID>/ISO
    mount /dev/VG_XenStorage-<myID>/ISO /ISO

Введите библиотеку ISO в XenCenter

В XenCenter, вы теперь можете добавить библиотеку хранилище типа «NFS ISO». В качестве точки монтирования можно указать «localhost:/ISO».

Сетевые настройки

Настройка хоста в качестве маршрутизатора

XenServer можно сделать маршрутизатором с помощью изменений в файле «/etc/sysctl.conf» (первые несколько строк до «net.ipv4.ip_forward = 0» включительно, должны быть заменены на следующее):

# Kernel sysctl configuration file for Red Hat Linux
    #
    # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
    # sysctl.conf(5) for more details.

    # Controls IP packet forwarding
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding=1

    # Controls proxy arp
    net.ipv4.conf.default.proxy_arp = 0

    # Turn off redirects
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.lo.send_redirects = 0
    net.ipv4.conf.xenbr0.send_redirects = 0
    

Настройки теперь актуальны после каждой перезагрузки. Их также можно применить и без перезагрузки, с помощью следующей команды:

    sysctl -p

IPv4

Настройка дополнительных IP-адресов

У всех серверов в Hetznerб по умолчанию есть один IPv4 адрес. Однако, вы можете заказать до 3-х дополнительных одиночных IPv4 адресов. Смотрите: IP-адреса

Настройка failover IP

Failover IP это дополнительный адрес, который можно переключать между серверами Hetzner.

Настройка дополнительной подсети

В обычном варианте настройки с 3 дополнительными IPv4 адресами, вы можете запустить до 3-х виртуальных машин. Вы также можете заказать и подсети. Смотрите: IP-адреса

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

Для того, чтобы хост система маршрутизировала пакеты из подсети, нам нужно добавить первый адрес подсети на интерфейс xenbr0 (в примере использууется сеть xx.yy.177.160/27):

    ip addr add xx.yy.177.161/27 dev xenbr0

Маршрутизация на соседние серверы

Если вы заказали сразу несколько серверов и они оказались в одной стойке и их IP-адреса идут один за другим, вы обнаружите, однако, что они не будут «видеть» друг друга (отвечать на ping), тогда как обычно, серверы из одной подсети способны «видеть» друг друга напрямую, без шлюза. В Hetzner это невозможно в виду соображений безопасности. Соседствующие серверы имеют доступ друг другу только через шлюз от Hetzner. Настроить моршрут необходимо следующим образом:

    route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0

В данном случае xx.yy.44.65 является IP-адресом шлюза Hetzner. Для получения IP-адреса сети, мы прости отнимаем 1, и получаем xx.yy.44.64.

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

Пример конфигурации:

   *Серверу назначены следующие IP-адреса: xx.yy.44.76, xx.yy.44.105, xx.yy.44.108 and xx.yy.44.110.
   **Все эти адреса из одной сети xx.yy.44.64/26.
   **Шлюз подсети — это xx.yy.44.65.
   *XenServer виртуальные машины получают IP-адреса xx.yy.44.105, xx.yy.44.108 и xx.yy.44.110
   **Шлюз xx.yy.44.76.
   *Дополнительно заказанная подсеть из 32 IP-адресов — это xx.yy.177.160/27
   **Первый и последний адреса подсети не используются, один из них является сетевым адресом, второй — широковещательным
   **IP-адрес xx.yy.177.161 является шлюзом, итого, остаются доступными 29 IP-адресов: xx.yy.177.162 - xx.yy.177.191
   **Шлюзом для виртуальных машин в жтой подсети служит xx.yy.177.161.

Для того, чтобы настройки оставались в силе и после перезагрузки, в файл /etc/sysconfig/networking-scripts/ifcfg-xenbr0 нужно добавить следующее:

    up ip addr add xx.yy.177.161/27 dev xenbr0
    down ip addr del xx.yy.177.161/27 dev xenbr0
    up route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
    down route del -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0

IPv6

Все серверы поставляются с подсетью /64 протокола IPv6. Для тех клиентов, кто получил свои серверы до февраля 2013 года, эта подсеть можеь быть бесплатно заказана из панели Robot и автоматически активирована.

Возьмём для примера подсеть 2a01:4f8:xxx:xxxx::/64

В данном случае XenServer получит IP-адрес 2a01:4f8:161:xxxx::2/112.

Поскольку XenServer не поддерживает настройку IPv6 через интерфейс управления в xconsole, нужно будет использовать небольшой скрипт. Он располагается в "/etc/init.d" и называется «network6». Скрипт выглядит так:

#!/bin/bash
    #
    # network6      This starts and stops ipv6 on xenbr0
    #
    # chkconfig: 2345 15 85
    # description: ipv6 configuration
    # source: http://www.wirrewelt.de/entry/ipv6-mit-xenserver-5-5-bei-hetzner
    # Copyright 2010 Sascha Huck
    #
    ### BEGIN INIT INFO
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    ### END INIT INFO
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Von Hetzner zugewiesenes Gateway
    IPV6GATEWAY=fe80::1
    # Eigene Adresse und eigenes Subnetz
    IPV6HOSTADDR=2a01:4f8:161:xxxx::2/112
    IPV6HOSTSUBNET=2a01:4f8:161:xxxx::0/112

    usage ()
    {
       echo "Usage: service $prog {start|stop}"
       RETVAL=1
    }
    start ()
    {
       # Insert kernel modules
       modprobe esp6
      # Configure our ip address
       ip -6 addr add $IPV6HOSTADDR dev xenbr0
      # Configure routing to hetzner gateway
       ip -6 route add $IPV6GATEWAY dev eth0
       ip -6 route add $IPV6GATEWAY dev xenbr0
       ip -6 route add default via $IPV6GATEWAY

      # Enable ipv6 forwarding (don't work in /etc/sysctl.conf)
       sysctl -w net.ipv6.conf.all.forwarding=1

    }
    stop ()
    {
    }
    case "$1" in
       start) start; RETVAL=$? ;;
       stop) stop; RETVAL=$? ;;
       *) usage ; RETVAL=2 ;;
    esac
    exit $RETVAL
    ########
    

Примечание: некоторые строки необходимо изменить согласно с вашей конфигурацией. Перед использованием скрипта, отредактируйте его соответственно. С помощью команды

    chmod a+x

скрипт делается исполняемым, а с помощью команды

    chkconfig network6 on

он добавляется в процесс загрузки.

Загрузка модуля ядра «esp6» является решением для XenServer, так как «modprobe ipv6» заканчивается выводом «Module not found», тогда как «modprobe esp6» загружает IPv6 модуль.

На виртуальных машинах (если они работают на Linux) вы можете добавить следующие настройки:

    ip addr add 2a01:4f8:161:xxx::y/64 dev eth0
    ip route add default via 2a01:4f8:161:xxx::2

Замена драйвера сетевой карты (опционально)

Драйвер по умолчанию в XenServer, который используется для сетевой карты Realtek (r8169), в некоторых случаях служит причиной потери пакетов. Поэтому, его можно заменить другим: r8168. Для сборки драйвера необходим специальный набор Driver Development Kit (DDK), который можно скачать с сайта Citrix:

   http://support.citrix.com/article/CTX138885 (Для XenServer 6.2.0 с Hotfix XS62E004)

Предположим, ISO файл уже скопирован в /ISO. Во-первых, хранилище виртуальных машин должно быть обозначено из XenCenter, как хранилище по умолчанию (клик правой кнопко мыши -> Default Storage), так как в противном случае команда xe vm-import не работает.

Монтирование ISO:

    mkdir /mnt/iso
    mount -o loop /local/iso/XenServer-6.2.0-XS62E004-ddk.iso /mnt/iso

Импорт DDK VM:

    xe vm-import filename=/mnt/iso/ddk/ova.xml

В XenCenter сетевое устройство нужно добавить на виртуальную машину. После этого машину можно перезапустить и назначить root-пароль, с которым вы сможете авторизоваться.

Теперь мы можем добавить корректные сетевые настройки для виртуальных машин в следующих файлах:

   «/etc/sysconfig/network-scripts/ifcfg-eth0»
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=<IP address of the VM>
    NETMASK=255.255.255.224
    ONBOOT=yes
    TYPE=ethernet
   «/etc/sysconfig/network-scripts/route-eth0»
    IP-ADRESSE-DER_VM dev eth0 scope link
    default via IP-DES-XENSERVERS-BZW-BEI-IP-NETZ-DIE-DES-xenbr0:1
   «/etc/resolv.conf»
    nameserver 213.133.99.99
    nameserver 213.133.100.100

Теперь скачайте драйвер, разархивируйте его, и скомпилируйте:

    cd /root
    wget http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2
    tar xjf r8168-8.037.00.tar.bz2
    cd r8168-8.037.00
    make all

Новый драйвер (src/r8168.ko) необходимо перенести на хост систему: «/lib/modules/<newest kernel version>/kernel/drivers/net/»

Назначьте корректные права:

    chmod 0744 /lib/modules/<newest kernel version>/kernel/drivers/net/r8168.ko

Теперь добавьте драйвер в файл «/etc/modprobe.conf»:

    echo "alias eth0 r8168" > /etc/modprobe.conf

Скомпилированный драйвер теперь должен быть активирован. Поскольку сервер не будет доступен всё это время (несколько секунд), необходимые инструкции будут добавлены в одну команду:

    rmmod r8169 && depmod -a && modprobe r8168 && service network restart && service ipaliases restart

Через несколько секунд сервер должен стать доступен по сети с новым драйвером.

    lspci -nnk | grep -i net -A2

Последняя строка вывода должна выглядеть так: «Kernel driver in use: r8168»

Перенос виртуальных машин с другого (более старого) Xenserver

К счастью, XenServer достаточно гибок в отношении переноса виртуальных машин на другой хост. Существует много способов сделать это, один из которых — это удалённо примонтировать директорию (как NFS) старого хоста на новом. В этой директории ВМ экспортируется на другой хост (с помощью «xe vm-export uuid=xxx-xxx filename=vm1.xva») и затем импортируется на новый хост («xe vm-import filename=vm1.xva»).

Источники

   *XenServer 5.5 (Немецкий)
   *Дополнительные IP-адреса
   *XenServer 5.6 Installation per KVM Console (Немецкий)
   *http://blog.codeaddict.org/?p=5
   *http://pastebin.com/psaWg7QK
   *https://wiki.archlinux.org/index.php/Installing_with_Software_RAID_or_LVM#RAID_installation
   *http://www.schirmacher.de/display/INFO/XenServer+5.5+auf+Hetzner+Server+installieren (Немецкий)
   *http://www.wirrewelt.de/2010/10/ipv6-mit-xenserver-5-5-bei-hetzner/ (Немецкий)


© 2020. Hetzner Online GmbH. Alle Rechte vorbehalten.