[[oktatas:operációs_rendszerek:virtualizálás|< Virtualizálás]]
====== XEN ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2015
* Licenc: GNU Free Documentation License 1.3
* Web: http://szit.hu
===== A XEN-ről =====
Szerverek virtualizálására használjuk.
===== A gazdagép telepítése =====
Ha vendéggépek partíciói LVM-en keresztül érhetők el, gyorsabb működést
eredményezhet, mint virtuális képfájlok használata, ezért már
telepítéskor gondolni kell egy külön partícióra.
Gyakorlásképpen Virtualboxban is telepíthetünk egy 64 bites Debiant.
A telepítés során a gazdagépnek három partíciója lesz. Az első a
Debian rendszer gyökerének. A második a lehet LVM kötetkezelős partíció.
A harmadik pedig egy cserehely.
A kísérlethez Virtualboxon egy 8 GB, merevlemezt választottam, amely
valójában 8.6 GB volt. Az első és második partíciónak 4 GB helyet
hagytam, a maradék ment a swapnak. Az első partíció szimpla ext4 lett,
a másodikra LVM kötetet tettem:
* /dev/sda1 /
* /dev/sda2 LVM
* /dev/sda3 cserehely
Az LVM kötetet nem csatoltam.
===== A LVM kötet felkészítése =====
Telepíteni kell az lvm2 csomagot.
A következő paranccsal ellenőrizhetjük, hogy telepítve van-e:
dpkg -l lvm2 | grep ^ii
Ha nincs:
apt-get install lvm2
A telepítés után, ha újraindítjuk a gépet,
ellenőrizzük a dm_mod modul be van-e töltve:
lsmod | grep dm_mod
Ha nem íródik semmi a képernyőre akkor nincs betöltve.
Ha be van töltve a válasz valami ehhez hasonló lesz:
dm_mod 89405 0
Az fdisk paranccsal ellenőrizzük milyen partícióink vannak:
A válasz a következőhöz hasonló:
# fdisk -l
Disk /dev/sda: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb9531eb4
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 7813119 7811072 3,7G 83 Linux
/dev/sda2 7813120 15626239 7813120 3,7G 8e Linux LVM
/dev/sda3 15626240 16775167 1148928 561M 82 Linux swap / Solaris
Hozzuk létre az sda2 partíción egy fizikai kötetet:
# pvcreate /dev/sda2
Physical volume "/dev/sda2" successfully created
Ellenőrizzük:
# pvdisplay
"/dev/sda2" is a new physical volume of "3,73 GiB"
--- NEW Physical volume ---
PV Name /dev/sda2
VG Name
PV Size 3,73 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID lTmPaD-P3c6-iAAZ-F2zY-qviY-l69F-Aw8zxb
Most hozzunk létre egy kötetcsoportot:
vgcreate gv0 /dev/sda2
Ellenőrizzük:
# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 3,72 GiB
PE Size 4,00 MiB
Total PE 953
Alloc PE / Size 768 / 3,00 GiB
Free PE / Size 185 / 740,00 MiB
VG UUID vQbmMA-xkhk-SOFE-0LwF-s0xb-fuwY-PeX31
A gv0-ra tesszük majd a logikai kötetet, de erről majd később
gondoskodunk.
===== Xen telepítése =====
apt-get install xen-tools xen-linux-system-adm64
Ezzel megkapjuk például a xen-create-image parancsot.
===== Xen kernelt szeretnénk indítani =====
# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
Hozzáadás: „/etc/grub.d/20_linux_xen helyi eltérítése ide: /etc/grub.d/08_linux_xen”
Ha meggondoltuk volna magunkat:
dpkg-divert --rename --remove /etc/grub.d/20_linux_xen
Frissítsük a grubot:
update-grub
Néhány paraméter fogunk megadni. Mivel a grubbal indul a XEN, ezért
paraméterezzünk az /etc/deafult/grub állományban:
# mcedit /etc/default/grub
A végéhez fűzzük:
GRUB_CMDLINE_XEN="dom0_mem=512M dom0_max_vcpus=2 dom0_vcpus_pin"
===== XEN beállítások =====
Készítsünk mentést az eredetiről:
mv /etc/xen/xl.conf /etc/xen/xl.conf.eredeti
Hozzunk létre egy újat:
mcedit /etc/xen/xl.conf
Tartalma a következő:
autoballoon="on"
run_hotplug_scripts=1
vif.default.backend="0"
vif.default.gatewaydev="eth0"
vif.default.script="vif-route"
vif.default.bridge="xenbr0"
# mcedit /etc/default/xendomains
A következő értékeket cseréljük így:
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=
Indítsuk újra a rendszert.
# reboot
Állítsuk be xen kezelőjét:
Szerkesszük az /etc/default/xen fájlt:
mcedit /etc/default/xen
Tartalma a következő legyen:
TOOLSTACK=xl
Létrehozunk egy új xen-tools.conf állományt,
az eredetit elmentjük:
# mv /etc/xen-tools/xen-tools.conf /etc/xen-tools/xen-tools.conf.eredeti
# mcedit /etc/xen-tools/xen-tools.conf
Tartalma
lvm = vg0 # alapértelmezett logikai kötetcsoport
install-method = debootstrap
size = 2G # merevlemez; megadható mértékegység: (G, M, k)
memory = 512M # megadható mértékegység: (G, M, k)
swap = 512M # megadható mértékegység: (G, M, k)
fs = ext4 # alapértelmezett fájlrendszer
dist = `xt-guess-suite-and-mirror --suite` # kívánt terjesztés
image = sparse # sparse vagy full disk images (csak image esetén használható)
cachedir = /var/cache/xen-tools/archives/
genpass = 1 # legyen a root számára jelszó generálva
genpass_len = 12
hash_method = sha256
passwd = 1
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
pygrub = 1
mirror = `xt-guess-suite-and-mirror --mirror`
ext4_options = noatime,nodiratime,errors=remount-ro
ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults
reiserfs_options = defaults
btrfs_options = defaults
boot = 1 # Ha elkészült a vm, utána elinduljon-e
vcpus = 2 # processzorok száma
output = /etc/xen/conf.d # a .cfg fájlok helye
extension = .cfg
bridge = xenbr0 # hálózati híd
gateway = 10.0.10.1 # alapértelmezett átjáró
netmask = 255.255.255.0 # hálózati maszk
broadcast = 10.0.10.255 # broadcast
Hozzuk létre a .cfg fájlokat tároló könyvtárat:
# mkdir /etc/xen/conf.d
===== Hálózat =====
A belső hálózatról is elérhető címet szeretnénk virtuális gépünk számára.
A gazdagépen híddal fogjuk összekötni a valós hálózati kártyával.
Szerkesszük a gazdagépen a hálózati beállításokat:
# mcedit /etc/network/interfaces
Vegyük fel a következő bejegyzést:
...
allow-hotplug xenbr0
iface xenbr0 inet manual
bridge_ports eth0
A vendéggépen vegyünk fel egy IP címet:
# mcedit /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.5.15
gateway 192.168.5.1
netmask 255.255.255.0
broadcast 192.168.5.255
# apt-get install brigde-util
# brctl addbr xenbr0
Ellenőrizzük:
# ip addr show
# brctl addif xenbr0 eth0
# mcedit /etc/sysctl.conf
Fűzzük a végére:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.conf.default.proxy_arp = 1
# A Netfilter tiltása a hidakon (bridge)
net.bridge.bridge-nf-call-ip6tables = 0 # IPv6 és Hídhoz
net.bridge.bridge-nf-call-iptables = 0 # Hídhoz
net.bridge.bridge-nf-call-arptables = 0 # Hídhoz
net.ipv6.conf.all.forwarding = 1 # csak IPv6
net.ipv6.conf.all.proxy_ndp = 1 # csak IPv6
net.ipv6.conf.all.autoconf = 0 # csak IPv6
Aktualizáljuk a beállításokat:
# sysctl -p
A Netfilter esetleg így is lehet:
-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
===== Image elkészítése, telepítése =====
# xen-create-image --hostname=vm0 --lvm=vg0 --memory=512mb \
> --pygrub --ip 192.168.5.15 --passwd
===== Használat =====
Indítás:
xl create /etc/xen/vm.cfg
Ha elindult kapcsolódás a konzolhoz:
xl console vm0
Ha beléptünk adjunk hozzá egy felhasználót:
adduser joska
Megpróbálhatunk távolról belépni:
ssh joska@192.168.5.15