====== Virtualizace ====== Jelikoz CentOS ze sve podpory zcela vyradil XEN po vzoru sve matky RedHat, doinstalovani cele podpory zpet je zbytecne slozite. Zajemce odkazuji na docela dobry navod pro CentOS 6.2 http://www.howtoforge.com/virtualization-with-xen-on-centos-6.2-x86_64-paravirtualization-and-hardware-virtualization {{ :linux:skoleni:xen-schema.png?200|}} Po spusteni systemu Debian wheezy (toho casu testing) nabehne system do kernelu 3.2.0-xxx a je treba nainstalovat XEN hypervizor - mikrokernel, ktery bude fyzicky ovladat hardware a linuxovy system tzv. dom0 bude pouzivat jako pomucku, aby nemusel umet vsechny drivery. Hypervizor prakticky jen rozdeluje cpu-time a pamet. Coz je velice chytre vymyslene. =====Odbocka k prerekvizitam - proxy===== Kvuli znacnemu poctu doinstalovavanych baliku je vyhodne, aby si skolitel u sebe udelal HTTP PROXY a o tento krok neochudi dokumentaci. Nyni se vsechny baliky stahnou je jedenkrat ke skoliteli a ostatni si baliky instaluji jiz rychlosti 1gbps, coz je perfektni zrychleni. yum install squid chkconfig squid start service squid start export http_proxy="http://ip.skolitele:3128/" yum -y groupinstall "X Window System" "Fonts" "Desktop" ====== sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux Abych nezdrzoval pri jednotlivych krocich opakovanym volanim ''yum install ...'', nainstalujeme si v dalsim kroku vsechny potrebne programy predem yum install xen-utils lvm2 virt-manager firefox bridge-utils yum install http://au1.mirror.crc.id.au/repo/kernel-xen-release-6-5.noarch.rpm # toto url prestalo fungovat # yum install http://au1.mirror.crc.id.au/repo/el6/x86_64/kernel-xen-release-6-5.noarch.rpm # uz nefunguje # cd /etc/yum.repos.d/ # wget http://drewsymo.com/files/xen-centos6.repo # yum --disablerepo "*" --enablerepo "xen-stable" -y install xen* kernel-xen libvirt* Optionaly podle * http://wiki.centos.org/HowTos/Xen/Xen4QuickStart yum install centos-release-xen yum install xen spravny balik pomuze prikaz yum search xen a rada pouzit pseudo baliky **xen a kernel-xen**, ktery sam o sobe neobsahuje zadna data, pouze zavislosti na mnoha baliccich. yum install -y install xen* kernel-xen libvirt* a zmenit konfiguraci grubu, ktera se z neznamych duvodu sama neupdatuje (DSS). V grubu zasadne nic neprepisujeme, ale vytvarime nove polozky. ''/boot/grub/menu.lst'' title XEN XEN XEN XEN :) root (hd0,2) kernel /boot/xen.gz module /boot/vmlinuz......... module /boot/initrd.img........ Drsnaci mohou uvest dulezite parametry pro stabilitu produkcni provoz: kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin Kdo pri instalaci nezvolil LVM oddil (coz pro root fs nedoporucuji) bude muset nejdrive vytvorit partition pro lvm (napr /dev/sda6) a lvm inicializovat rucne {{ :linux:skoleni:lvm_setup14.jpg?200|}} cfdisk /dev/sda pvcreate /dev/sda6 vgcreate vg_virt /dev/sda6 Pro dalsi ukazky je dobre stahnout maly 150MB debian net install iso image Obdobne si stahnete a pouzijte CentOS nebo Windows. * http://gensho.acc.umu.se/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso * http://mirror.hosting90.cz/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso Sitovani, obzvlaste ve slozitejsich konfiguracich, doporucuji nastavit rucne, abyste meli plnou kontrolu nad systemem. Jako ukazka poslouzi jeden bridge. Nejdrive se zbavime ''eth0''. Upozornuji na rozdil mezi prikazem ''ifdown eth0'' lokalne na notebooku a stejnym prikazem provedenym vzdalene na serveru, kam jste pripojeni pres ''eth0''. ifdown eth0 brctl addbr xenbr0 brtctl addif xenbr0 eth0 ifconfig eth0 up brctl show Permanentni nastaveni prezivsi boot: Smazat konfiguraci eth0 v /etc/network/interfaces, pro kloubouky v /etc/sysconfig/network-scripts/ifcfg-xenbr0. auto xenbr0 iface xenbr0 inet static address 192.168.5.62 netmask 255.255.255.0 bridge_ports eth0 bridge_maxwait 5 bridge_fd 1 bridge_stp off DEVICE="xenbr0" NM_CONTROLLED="yes" ONBOOT=yes TYPE=Bridge BOOTPROTO=none IPADDR=192.168.0.100 PREFIX=24 GATEWAY=192.168.0.1 DNS1=8.8.8.8 DNS2=8.8.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System bridge 0" DEVICE=eth0 ONBOOT=yes TYPE=Ethernet IPV6INIT=no USERCTL=no BRIDGE=xenbr0 Nyni lze pohodlne ovladat novy inteface prikazy ''ifup/ifdown xenbr0''. ====== Virt-manager ====== Prakticky intuitivni ovladani. Dulezite je zvolit XEN, nikoliv nabizene qemu nebo kvm. Jediny osklivy trik je nutnost vytvoreni tzv. storage poolu pro pridelovani lvm. Zde mohu citovat ze svych poznamek na papire ke skoleni: //!Pozor: Jako obvykle az budes hledat LVM, musi se nejdrive pridat pool -> Connection -> Storage// Na prvni pokus se prihlaseni ke xen nepodari, protoze xen defaultne neposloucha na 0.0.0.0:8000. Proto je treba nastavit v konfiguracnim souboru (xend-http-server yes) (xend-unix-server yes) a nezapomenout na ''service xend restart''. ====== Prichazi tezke vahy - Day 2 ======= Zapomente na virt-manager a virsh. Budeme pouzivat prikaz "xm" pro veskere dalsi ovladani virtualnich stroju. Nejprve si pro potreby instalace upravime ''/etc/xen-tools/xen-tools.cfg''. Misto puvodni obsahle prikazove radky typu xen-create-image --hostname xen-mail --dhcp --lvm=vg_virt --install-method=debootstrap --bridge=xenbr0 --size=3G --noswap diky uprave konfiguracniho souboru pak staci psat proste xen-create-image --hostname xen-jahoda Zobrazuji jen relevantni radky, uplny soubor naleznete v materialech predanych na flash disku. lvm = vg_virt install-method = debootstrap dhcp = 1 size = 3Gb # Disk image size. memory = 1024Mb # Memory size noswap = 1 # Don't use swap at all for the new system. fs = ext4 dist = wheezy # Default distribution to install. image = full serial_device = hvc0 Je velmi dobre prohlednout si instalacni log ''/var/log/xen-tools/xen-mail.log''. Minimalne proto, ze tam bude ulozeno heslo na roota, ale take muzete pres ''tail -f /var/....log'' sledovat prubeh instalace. ===== Pro klobouky ===== virt-install --prompt --network bridge=xenbr0 --virt-type=xen A nasledny dialog Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. <-- no What is the name of your virtual machine? <-- vm01 How much RAM should be allocated (in megabytes)? <-- 1024 What would you like to use as the disk (file path)? <-- /var/lib/libvirt/images/vm01.img How large would you like the disk (/vm/vm01.img) to be (in gigabytes)? <-- 10 What is the install URL? #<-- http://ftp.tu-chemnitz.de/pub/linux/centos/6.2/os/x86_64 http://mirror.hosting90.cz/centos/6/os/x86_64 **Priklad instalace CentOS v paravirtualizaci** virt-install --network bridge=xenbr0 --virt-type=xen --prompt --disk=/dev/vg_jahoda/jahoda_root \ -p --name=xen-jahoda --ram=1024 -l http://mirror.hosting90.cz/centos/6/os/x86_64 **Priklad instalace Debian v paravirtualizaci** virt-install --name=arnold --virt-type=xen --ram 1024 --paravirt --disk=/dev/vg_cloud/root1 --location=http://ftp.cz.debian.org/debian/dists/wheezy/main/installer-amd64 --prompt --nographics ====== Spusteni, vypnuti, pripojeni konzole a proste bezne prakticke ovladani virtualnich stroju xm create xen-mail.cfg Pokud chcete ihned dostat virtualni konzoli hvc0 a sledovat boot paravirtualizovaneho stroje, muzete vytvorit stroj s parametrem ''-c''. xm create -c xen-mail.cfg Pripojeni k virtualnimu stroji xm console xen-mail Naopak odpojeni je docela neintuitivni ''ctrl-]''. V pripade, ze by vas virtualni konzole zlobila nebo se vam povedlo dvakrat pripojit, nejjednodussi zpusob je v Dom0 dat prikaz ''killall xenconsole''. Obzvlaste zaseknute konzole budete muset odstrelit devitkou ''killall -9 xenconsole''. [[inittab]] ====== Instalace Windows ====== vcpus = '2' name = 'xen-ricar-w' memory = '2048' kernel = '/usr/lib/xen-4.1/boot/hvmloader' builder = 'hvm' acpi = 1 apic = 1 #dulezite usbdevice = 'tablet' vnc = 1 vncunused = 0 vnclisten = '10.0.4.159' vncdisplay = 49 vncconsole = 1 #dulezite boot = 'cd' disk = [ 'phy:/dev/disk/by-id/scsi-23730383762383635,hdb,w', 'file:/xen/install/win2008r2.iso,hdc:cdrom,r' ] =====vnc===== Vybornou pomuckou je pristup na virtualni server pres VNC. Na strane klienta je situace obzvlaste jednoducha apt-get install vncviewer vncviewer 192.168.5.62 5909 Na strane serveru pro paravirtualizovane virtualy staci pridat jednu jedinou radku do vfb = [ 'type=vnc,vncdisplay=9,vncpasswd=aaa,vnclisten=192.168.5.62' ] Vncdisplay je offset vuci portu 5900, tedy v nasem pripade 5900+9=5909. Vnclisten je restrikce na konretni IP. Velmi dobra pomucka pokud mate vice virtualizacnich serveru - temer cloud - a nejake interface jsou duveryhodne (lokalni sit apod.) na kterych muzete vnc nechat beztrestne bezet a muze byt dobrym pomocnikem. =====kdyz nahodou dojde RAMka a potrebujeme swap===== Pokud mame LVM staci vytvorit novy logicky oddil, naformatovat na swap a aktivovat lvcreate -L 2G -n swap vg_virt Logical volume "swap" created mkswap /dev/vg_virt/swap mkswap: /dev/vg_virt/swap: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 2097148 KiB no label, UUID=2cbaf464-5aee-45b0-9909-0e1bc5e3d3ce swapon /dev/vg_virt/swap Alternativni zpusob vytvoreni swapu do souboru [root@marek ~]# dd if=/dev/zero of=/swap bs=100M count=20 20+0 records in 20+0 records out 2097152000 bytes (2.1 GB) copied, 21.0326 s, 99.7 MB/s [root@marek ~]# mkswap /swap mkswap: /swap: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 2047996 KiB no label, UUID=66cb4fcd-080a-4beb-a068-9eb7c0e8b7fe [root@marek ~]# swapon /swap ===== SnapShoty ===== lvcreate -L 100M --snapshot /dev/vg_virt/root_mail -n muj_backup_mail Obvykle pak nasleduje zkopirovani snapshotu na pozadovanou destinaci dd if=/dev/vg_virt/muj_backup_mail of=/backup/root_mail.img bs=16M Nezapomente snapshot zrusit prikazem lvremove /dev/vg_virt/muj_backup_mail Bez problemu muzete nyni v konfiguracnim souboru ''virsh edit xen-mail'' zmenit fyzicky harddisk pro virtualni server z 'block' na 'file' a spustit xen-mail. ====== iSCSI - den treti ====== {{ :linux:skoleni:2iscsiprotocol.jpg?300|}} Vytvorime si pet pokusnych kraliku v podobe logical volumes root1 az root5 pro budouci export pres iSCSI. lvcreate -L 3G virt -n root1 lvcreate -L 3G virt -n root2 lvcreate -L 3G virt -n root3 lvcreate -L 3G virt -n root4 lvcreate -L 3G virt -n root5 server: yum install scsi-target-utils backing-store /dev/vg_jahoda/root1 backing-store /dev/vg_jahoda/root2 backing-store /dev/vg_jahoda/root3 backing-store /dev/vg_jahoda/root4 Mnohem lepsi je demon "IETD", ale ten v CentOS neni (v debianu ano). Pokud se rozhodnete si ho dokompilovat, zde je priklad nastaveni Target iqn.2009-05.cz.jahoda:storage.pole.root1 Lun 0 Path=/dev/virt/root1,Type=fileio Target iqn.2009-05.cz.jahoda:storage.pole.root2 Lun 0 Path=/dev/virt/root2,Type=fileio Target iqn.2009-05.cz.jahoda:storage.pole.root3 Lun 0 Path=/dev/virt/root3,Type=fileio Target iqn.2009-05.cz.jahoda:storage.pole.root4 Lun 0 Path=/dev/virt/root4,Type=fileio Target iqn.2009-05.cz.jahoda:storage.pole.root5 Lun 0 Path=/dev/virt/root5,Type=fileio client: yum install iscsi-initiator-utils apt-get install open-iscsi Dale je cesta stejne pro debian i redhat iscsiadm -m discovery -t st -p 10.0.2.2 iscsiadm -m node --login -p 10.0.2.2 -T iqn.2009-05.cz.jahoda:storage.pole2.xen-mail_data Po startu systemu Dom0 a automatickeho spusteni open-iscsi (klobouci: chkconfig open-iscsi on) lze pripojit automaticky nektere iscsi targety zmenou #node.startup = manual node.startup = automatic Pozn: Na CentOS je to ve ///var/lib/iscsi/nodes//. Zvyseni redundace sitoveho pripojeni modprobe bonding ifconfig bond0 192.168.0.1 netmask 255.255.0.0 up ifenslave bond0 eth0 eth1 Ziva migrace Musime nastavit nasledujici polozky v ''/etc/xen/xend-config.sxp'' aby migrace fungovala (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '192.168.5.62') # a nebo vsechny (xend-relocation-address '') (xend-relocation-hosts-allow '') Pokud nepouzijete SSH nebo TLS, bude se prenaset binarni obraz pameti bez sifrovani. Coz je ve vasi siti obvykle uplne jedno, takze si nezeslozitujte zbytecne zivot slovem bezpecnost tam, kde je irelevantni. V jinych pripadech je rozumejsi nez ssh/tls uvest povolene hosty nebo jedno pravidlo do firewallu. A nezapomenout na restart sluzby # service xend restart **Zlaty hreb skoleni** xm migrate --live xen-mail 192.168.5.66 Video v anglictine popisujici migraci: * [[http://www.youtube.com/watch?v=8qHn6t4ywuQ|{{:linux:skoleni:migrate.jpeg}}]] ====== SNMP/MRTG ==== Spravny nazev balicku je yum install net-snmp com2sec local localhost public group MyRWGroup v1 local group MyRWGroup v2c local group MyRWGroup usm local view all included .1 80 access MyRWGroup "" any noauth exact all all none syslocation VSNL, Indian se slehackou syscontact Root Nezapomenout na chkconfig a service restart. ====== FUN ====== watch se da simulovat takto: while :; do xm list sleep 2 clear done Chytry login, ktery zobrazuje pripadny neuspech posledniho prikazu a plnou cestu o radek vyse. PS1='\[\033[0;37m\]\342\224\214\342\224\200$([[ $? != 0 ]] && echo "[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200")[\[\033[0;33m\]\u\[\033[0;37m\]@\[\033[0;96m\]\h\[\033[0;37m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;37m\]]\n\[\033[0;37m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]' Krakty skript pro automaticke vytvareni (clonovani) virtualu ''auto-clone.sh'' #!/bin/sh set -e VZOR="clon-arnold.xml" CLON="xen-$1" lvcreate -L 4G -n $CLON vg_virt dd if=/dev/vg_virt/xen-arnold of=/dev/vg_virt/$CLON bs=64M sed "s/xen-arnold/$CLON/" $VZOR >$CLON.xml virsh create $CLON.xml ====== Nastaveni pro ucebny ====== xrandr --output LVDS1 --auto --output HDMI1 --auto --same-as LVDS1 ===== Links ===== * https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Virtualization/chap-Virtualization-Xen_live_migration.html * http://www.howtoforge.com/virtualization-with-xen-on-centos-6.2-x86_64-paravirtualization-and-hardware-virtualization * [[http://starlab.cz/virt.img.gz | Komprimovany obraz disku]] * {{:linux:skoleni:history.txt|.bash_history}} * {{:linux:skoleni:etc-virt.tar.gz|}} * nafoceny flipchart {{:linux:skoleni:skoleni_virtualizace_flipchart_2014.rar|}} * dotazy a pripominky na **dalibor.straka@starlab.cz, +420 602 592 307** **Jakekoliv kopirovani, linkovani a citovani z techto stranek, povazuji autori za projev nejvyssiho uznani.**