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.