[[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