Tartalomjegyzék

< Virtualizálás

XEN

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:

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ő:

xl.conf
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

xen-tools.conf
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