Wdrożenie Xen 4.6 na serwerze z CentOS 7

By | 13 lipca 2018

RedHat Enterprise Linux 7 jak sama nazwa mówi, należy do jednych z najbardziej popularnych dystrybucji Linuksa przeznaczonych do zastosowań w korporacjach i dużych firmach stawiających na jakość oraz wsparcie techniczne. Jej bezpłatnym odpowiednikiem jest CentOS, który zdobył szeroką rzeszę użytkowników pośród mniejszych podmiotów gospodarnych, którym zależy na jakości, ale bez wsparcie technicznego ze strony dostawcy. Wirtualizacja umożliwia mniejszym kosztem tworzyć zaawansowane środowiska, które mogą cechować się wysoką dostępnością i skalowalnością. Przedstawię instalację i wstępną konfigurację jednej z popularniejszych tj. Xen-a w wersji 4.6.

yum install centos-release-xen
yum update
yum install xen kernel-xen
reboot

Otwieramy główny plik konfiguracyjny Gruba i znajdujemy poniższą linię.

vim /etc/default/grub

GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M,max:1024M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"
Ustawiamy na sztywno maksymalne zużycie pamięci operacyjnej przez DOM0.
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M,cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"

Możemy jeszcze wyedytować config kernela z poziomu configa xena tj. w pliku „/etc/sysconfig/xen-kernel”

vim /etc/sysconfig/xen-kernel

XEN_KERNEL_ARGS="dom0_mem=1024M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"

grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.75-29.el7.x86_64
Found initrd image: /boot/initramfs-4.9.75-29.el7.x86_64.img
Found linux image: /boot/vmlinuz-4.9.75-29.el7.x86_64
Found initrd image: /boot/initramfs-4.9.75-29.el7.x86_64.img
Found linux image: /boot/vmlinuz-4.9.75-29.el7.x86_64
Found initrd image: /boot/initramfs-4.9.75-29.el7.x86_64.img
Found linux image: /boot/vmlinuz-4.9.75-29.el7.x86_64
Found initrd image: /boot/initramfs-4.9.75-29.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.17.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.17.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-02c984abab014580961c5edfdc57fa94
Found initrd image: /boot/initramfs-0-rescue-02c984abab014580961c5edfdc57fa94.img
done

Lepiej być pewnym i zrobić restart wszystkiego.

reboot

Wyłączamy zachowywanie stanu (hibernacja) maszyn wirtualnych przy restarcie.

vim /etc/sysconfig/xendomains

Komentujemy wpis
XENDOMAINS_SAVE=/var/lib/xen/save
Ustawiamy wartość „XENDOMAINS_RESTORE” na false.

Konfigurujemy sieć, w naszym przypadku w formie bridge.

ifconfig -a

enp32s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 72.212.116.146 netmask 255.255.255.0 broadcast 72.212.116.255
ether 78:e7:d1:f5:e0:dc txqueuelen 1000 (Ethernet)
RX packets 851 bytes 64306 (62.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 246 bytes 27695 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16

enp34s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 78:e7:d1:f5:e0:dd txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 84 bytes 6908 (6.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 84 bytes 6908 (6.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vim /etc/sysconfig/network-scripts/ifcfg-xenbr0

DEVICE=xenbr0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
IPADDR=72.212.116.146
PREFIX=24
GATEWAY=72.212.116.1
DNS1=8.8.8.8
DNS2=8.8.4.4
USERCTL=no

vim /etc/sysconfig/network-scripts/ifcfg-enp32s0

DEVICE=enp32s0
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE="xenbr0"
USERCTL=no

vim /etc/sysconfig/network-scripts/ifcfg-xenbr2

DEVICE=xenbr2
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.30.2
PREFIX=24
USERCTL=no

vim /etc/sysconfig/network-scripts/ifcfg-enp34s0

DEVICE=enp34s0
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE="xenbr2"
USERCTL=no

Czas na restart sieci.

service network restart
ifconfig

enp32s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 78:e7:d1:f5:e0:dc txqueuelen 1000 (Ethernet)
RX packets 987364271 bytes 1143051725270 (1.0 TiB)
RX errors 0 dropped 67 overruns 0 frame 0
TX packets 335911441 bytes 26638277777 (24.8 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16

enp34s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 78:e7:d1:f5:e0:dd txqueuelen 1000 (Ethernet)
RX packets 339762 bytes 61539812 (58.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 699 bytes 52158 (50.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17

xenbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 72.212.116.146 netmask 255.255.255.0 broadcast 72.212.116.255
ether 78:e7:d1:f5:e0:dc txqueuelen 1000 (Ethernet)
RX packets 251252416 bytes 1052813669024 (980.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 126021278 bytes 8815768337 (8.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

xenbr2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.30.2 netmask 255.255.255.0 broadcast 192.168.30.255
ether 78:e7:d1:f5:e0:dd txqueuelen 1000 (Ethernet)
RX packets 339781 bytes 55425666 (52.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 350 bytes 24336 (23.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Wygląda na to, że się udało. Przydatnym poleceniem do sprawdzania działania bridge jest „brctl show”. Pamiętajmy o włączeniu autostartu usługi xendomains, ponieważ domyślnie jest wyłączona.

systemctl enable xendomains

Na koniec konfiguracji, uruchamiamy ponownie maszynę

reboot

Po restarcie powinniśmy być w stanie uruchamiać maszyny wirtualne w naszym nowym środowisku 🙂 Przyda nam się poniższa komenda:

xm create nazwa_pliku_konfiguracyjnego_maszyny_z_dokładną_ścieżką

Należy pamiętać, iż w configu maszyny wirtualnej nazwy urządzeń typu storage, powinny być również z „pełną ścieżką” np. „phy:/dev/vg0/vps,xvda1,w”, a nie „phy:vg0/vps,xvda1,w” jak można było jeszcze w starszych wersjach Xen-a.