Virtualizáció Linuxon: XEN Szalai Ferenc szferi@avaxio.hu
Bevezető Mit? Miért? intézményi vállalati szolgáltatásokat (web, állomány, levelező szerver, egyedi teszt rendszerek, virtuális oktatási hálózatok) sok egyedileg felügyelt rendszer alacsony kihasználtsággal (< 10%) sok vas, magas fenntartási költségek (pl.: áramszámla) Hogyan? szabad szoftverekkel, nyílt technológiákkal
Miért virtualizáljunk? Vezetői szemlélet: a vas ára állandó, a adminisztrációs költségek nőnek Motiváció: költségtakarékosság: 51.7 % üzemeltetés egyszerűsítése: 14.6 % flexibilis infrastruktúra: 13.1 % leállási idő csökkentése: 12.6 % helytakarékosság: 10.9 % skálázhatóság: 10.9 % megbízhatóság: 10.9 % (IDC 2005)
Virtualizáció - elvek Virtuális gép: absztrakció, a fizikai erőforrások megosztása, delegálása révén létrejött virtuális erőforrásokat használja. Host gép: a virtuális gépeket befogadó fizikai eszköz Mit lehet virtualizálni: CPU (erről lesz szó), Adattároló (storage), I/O (pl.: Infiniband)
Virtualizáció - elvek Virtualizációs technikák (x86): alkalmazás szintű: pl.: cygwin, wine operációs rendszer szintű: pl.: chroot, jail, openvz, linux vserver, solaris containers emuláció: pl.: VMWare (sok okos, optimalizáció), QEMU paravirtualizáció: pl.: XEN, User Mode Linux hardverrel támogatott: Intel VT, AMD SVM
Virtualizáció - XEN Hipervisor: szuper privilégizált módban futó kernel, közvetlenül a hardvert kezeli, erre portolják a virtualizált rendszereket Előnyök: fizikai géphez közeli teljesítmény (2 3 % veszteség) nyílt forrás, ipari támogatás (XenSource, IBM, SUN, Novell stb.) linux terjesztések része (Debian, SuSE, RedHat EAL) Hátrányok: operációs rendszert módosítani kell (no Windows) nyílt management eszközök hiánya
Xen felépítése
XEN telepítése Csomagok: xen hypervisor, xen utils, linux image xen 686, libc6 xen (?) xen ioemu (HVM esetén) xend daemon: management és kommunikáció /etc/xen/xen config.sxd grub konfiguráció: title XEN hypervisor booting 2.6.16 2 xen 686 root (hd0,0) kernel /boot/xen 3.0 i386.gz dom0_mem=256000 noreboot module /boot/vmlinuz 2.6.16 2 xen 686 root=/dev/md0 ro BOOT console=tty0 module /boot/initrd.img 2.6.16 2 xen 686
Xen kezelése I. # cat /etc/xen/noc.grid.conf name = "noc.grid" kernel = "/boot/vmlinuz 2.6.16 2 xen 686" ramdisk = "/boot/initrd.img 2.6.16 2 xen 686" memory = 256 vif = [ 'mac=00:16:3e:00:00:13, bridge=xenbr1' ] disk = [ 'phy:/dev/xenimages/noc.grid,sda1,w' ] root = "/dev/sda1 ro" extra = "2" on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' # xm create noc.grid.conf # xm list Name ID Mem(MiB) VCPUs State Time(s) Domain 0 0 250 4 r 47073.3 noc.grid 7 256 1 b 101501.6 service.grid 8 128 1 b 4728.6 # xm console noc.grid # xm shutdown noc.grid
Xen kezelése II. # xm save noc.grid /var/xen/noc.grid.save (dom le is áll) # xm restore noc.grid # xm pause noc.grid noc.grid 7 256 1 p 101501.6 # xm unpause noc.grid CPU, Memória, Hálózat használat # xm top # xm mem set noc.grid 270 # xm migrate noc.grid dom0 1
Fizikai gép virtualizálása alkalmazások leállítása fizikai gépen dom0 án Volume kialakítása és csatolása (/mnt) tar czf / ssh dom0 'cd /mnt; tar xzf ' hálózati interfészek beállítása dom0 ban (főleg, ha 802.1q VLAN technikát használjuk) xen config állomány elkészítése domain indítása (xm ceate domu.conf)
XEN hálózat I. /etc/xen/scripts/ lehetőségek: bridge route nat (problémás) vegyes megoldások saját scriptek
XEN hálózat II. xen config.sxd (network script network bridge) (vif script vif bridge) bridge eset működése bridge: xenbr0 eth0 down eth0 IP, MAC > veth0 eth0 > peth0 veth0 > eth0 peth0, vif0.0 a bridgehez adja mindenki up minden további vifx.y automatikusan a xenbr0 ba kerül
Megfelelő tároló alrendszer Hol tároljuk a virtuális gépek virtuális merevlemez tartalmát? Lehetőségek tárolóra: dom0 ba rakjunk sok lemezt: nehezen skálázható, nagy rendelkezésre állás kialakítása nehézkes NAS (NFS): három egymástól független állományrendszer konzisztencia problémája FC SAN: jó de általában drága (Fibre Channel) IP/Ethernet SAN: perfect! Virtuális lemezek: image állomány LVM NFS
IP/Ethernet SAN forrás (target), cél (initiator) architektúra IP SAN: iscsi Ethernet SAN: AOE (Ata over Ethernet) AOE: egyszerű protokoll ATA üzenetek natív etherneten történő továbbítására initiator 2.6.11 óta Linux kernel része hardveres target (Coraid Inc.)
Példa egy nagy rendelkezésre állású virtuális kiszolgáló platformra
Hova tovább? I. Teljesítmény: xen oprofile Guest API: hipervisor inkompatibilitások (virtual I/O interfészek) IOMMU OS támogatást: Linux, NetBSD3, FreeBSD7, OpenSolaris10, Plan9 Vanilla kernel része? XML konfig állomány sxd helyett DTMF CIM támogatás, Xen XML RPC Copy on Write virtuális diskek támogatása, VMDK, MS VHD, blktap (user space)
Hova tovább? II. Erőforrás kezelés: VCPU fizikai CPU dinamikusan, QoS, limitek HVM (hardver virtualizáció) Qemu I/O emu tól megszabadulni USB támogatás teljesítmény fokozás save/restore/migration XenFS: közös állományrendszer VM k kötött IA64 port PowerPC port XEN Enterprice: grafikus management Infiniband támogatás
Kalandra fel!