Administrace Unixu Přednáška[0] Vojtěch Aschenbrenner 6. října 2015 1 / 27
Administrativa 2/2 Zk + Z 6 kreditů d3s.mff.cuni.cz/teaching/unix_administration Přednáška Úterý, 15:40, S9 Leo Galamboš <lg@hq.egothor.org> Cvičení je potřeba účet do unix labu nebo vlastní stroj Úterý, 10:40, SU1 Vladimír Matěna <matena@d3s.mff.cuni.cz> Čtvrtek, 14:00, SU2 Vojtěch Aschenbrenner <v@asch.cz> 2 / 27
Zápočet/Zkouška Zápočet uděluje příslušný cvičící nutný pro přihlášení ke zkoušce je vyžadována průběžná práce v semestru administrátoři mohou dostat zápočet dříve Zkouška zpracování dokumentace spravovaného řešení rozsah sítě malé firmy nutno domluvit v říjnu s přednášejícím nejvýše 1 předtermín (v případě zájmu) právě 3 termíny zkoušky v řádném zkouškovém období 3 / 27
Obsah přednášky virtlab a úvod do virtualizace na OS rodiny UNIX metodika správy UNIXu základní administrátorské činnosti sít ování prostřední menší firemní sítě domácí sít (PXE + iscsi, NAS + KVM) konkrétní techniky napadení a ochrany 4 / 27
virtlab {bogatyr,gromoboj,navarin,potemkin}.ms.mff.cuni.cz Gentoo Linux s podporou KVM (kromě gromoboj) 64GB /root 4x2TB disky připojené přes 2x8Gb/s Fibre Channel (/virtlab/{1,2,3,4}) Distribuovaný souborový systém OCFS2 4x1Gb/s ethernet (IPMI, internet,, ) 5 / 27
bogatyr (CPU, MEM) $ cat /proc/cpuinfo [...] processor : 47 vendor_id : GenuineIntel cpu family : 6 model : 46 model name : Intel(R) Xeon(R) CPU E7540 @ 2.00GHz stepping : 6 microcode : 0xa cpu MHz : 1995.000 cache size : 18432 KB [...] $ cat /proc/meminfo MemTotal: 132012880 kb [...] 6 / 27
bogatyr (HDD, OCFS2, Multipathing) # blkid /dev/sda1: LABEL="virtlab1" UUID="[...]" TYPE="ocfs2" PARTUUID="539f6534-01" /dev/sdb1: LABEL="virtlab2" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab266-01" /dev/sdg1: LABEL="virtlab3" UUID="[...]" TYPE="ocfs2" PARTUUID="000c7589-01" /dev/sdh1: LABEL="virtlab4" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab49c-01" /dev/sdi1: LABEL="virtlab1" UUID="[...]" TYPE="ocfs2" PARTUUID="539f6534-01" /dev/sdj1: LABEL="virtlab2" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab266-01" /dev/sdm1: LABEL="bogatyr_boot" UUID="[...]" TYPE="ext2" PARTUUID="626e18da-01" /dev/sdm2: LABEL="bogatyr_root" UUID="[...]" TYPE="ext4" PARTUUID="626e18da-02" /dev/sdp1: LABEL="virtlab3" UUID="[...]" TYPE="ocfs2" PARTUUID="000c7589-01" /dev/sdq1: LABEL="virtlab4" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab49c-01" 7 / 27
bogatyr (HDD, OCFS2, Multipathing) # blkid [...] /dev/mapper/virtlab1: PTUUID="539f6534" PTTYPE="dos" /dev/mapper/virtlab2: PTUUID="000ab266" PTTYPE="dos" /dev/mapper/virtlab3: PTUUID="000c7589" PTTYPE="dos" /dev/mapper/virtlab4: PTUUID="000ab49c" PTTYPE="dos" /dev/mapper/virtlab1p1: LABEL="virtlab1" UUID="[...]" TYPE="ocfs2" PARTUUID="539f6534-01" /dev/mapper/virtlab2p1: LABEL="virtlab2" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab266-01" /dev/mapper/virtlab3p1: LABEL="virtlab3" UUID="[...]" TYPE="ocfs2" PARTUUID="000c7589-01" /dev/mapper/virtlab4p1: LABEL="virtlab4" UUID="[...]" TYPE="ocfs2" PARTUUID="000ab49c-01" 8 / 27
Virtualizace na MFF Virtualizace a cloud computing NSWI150 (ZS) Bednárek, Yaghob, Zavoral Skvělá přehledová přednáška Pochopíte principy virtualizace Uvidíte Ewu Farnou Administrace virtualizační infrastruktury NSWI151 (LS) Yaghob Praktická cvičení Enterprise virtualizace VMWare ESXi, MS Hyper-V Administrace Unixu NSWI106 (ZS) praktická virtualizace v unixovém stylu hypervizor: QEMU (KVM) distribuované FS: OCFS2, GFS, GlusterFS, CEPH,... virtuální sítě: vde 9 / 27
Virtualizace (Bednárek 2015, NSWI150) iluze fyzického zařízení, které fyzicky neexistuje dobře známé rozhraní fyzické zařízení (stránka paměti, počítač, disk, sít. karta) softwarové rozhraní (proces-kernel, HAL) implementováno jinak než obvykle softwarově jiným hardware (iscsi řadič) v kombinaci software-hardware (virtuální pamět, moderní virtualizace procesorů) používání termínu virtualizace je věcí zvyku ssh/rdp není nazýbáno virtualizace konzole iscsi disk není virtuální disk Java Virtual Machine není virtualizace fyzického stroje 10 / 27
Účel virtualizace (Bednárek 2015, NSWI150) větší počet virtuálních objektů než fyzických virtuální pamět, virtuální počítač virtuální objekty jiného druhu než fyzické emulace počítače jiné architektury virtuální objekty vzdálené od fyzických vzdálené disky prezentované jako lokální, vzdálená klávesnice+obrazovka virtuální objekty implentované zcela jinak, než fyzické disky implementované souborem virtuální objekty bez vazby na fyzický svět virtuální sítě zásahy do chování, které by bez virtualizasce nebyly možné ladění, experimenty, měření šizení všeho druhu (time sharing, thin provisioning) migrace, load balancing, checkpoints, fault-tolerance změna konfigurace stroje na dálku 11 / 27
Aplikační virtualizace izolované prostředí pro procesy chroot a jeho vylepšení omezení zdrojů, omezení uživatelů systému, omezení sítě kdy lze použít pro virtualizaci Windows na Linuxu? Linux lxc-*(1), systemd-nspawn(1), vzctl(8) systemd-nspawn(1) je budoucnost limituje kontejner na read-only /sys, /proc/sys, /sys/fs/selinux neumožňuje měnit čas, vytvářet device nodes nebo načítat moduly jádra machinectl(1) pro řízení kontejnerů využití cgroups pro limity využití btrfs pro snapshoty FreeBSD chroot(8) jail(8) 12 / 27
Paravirtualizace virtualizované softwarové rozhraní uvnitř hostovaného OS nutná úprava/spolupráce hostovaného OS kdy lze použít pro virtualizaci Windows na Linuxu? Linux XEN xl(1), xentop(1), xenpm(1), xenstore(1) Amazon, Citrix XenServer, Huawei FusionSphere, Oracle VM, Sun xvm, Thinsy Corporation Virtual Iron (Windows) MS Hyper-V 13 / 27
(Plná) virtualizace virtualizované rozhraní software-hardware prakticky všechna řešení se spoléhají na podporu moderních CPU + chipsets kdy lze použít pro virtualizaci Windows na Linuxu? Linux QEMU/kvm nejpokročilejší open-source plná virtualizace detaily dále Freebsd bhyve BSD hypervisor FreeBSD 10.0+ bhyve(8), bhyvectl(8) Solaris Oracle VM Server VirtualBox 14 / 27
QEMU QEMU is a generic and open source machine emulator and virtualizer. pomocí dynamického překladu emuluje cílovou architekturu bohatá podpora CPU podpora KVM využití rozšíření moderních CPU (Intel VT-x, AMD SVM) možné jen v rámci stejné architektury výrazné zlepšení výkonu live migrace, podpora ipxe, BIOS/UEFI, iscsi, network mount, SLIRP možné paravirtualizované IO drivery kvůli výkonu qemu(1), qemu-img(1) na všech Linux distribucích, light-weight bez GUI 15 / 27
QEMU $ ls /usr/bin grep qemuqemu-aarch64 qemu-alpha qemu-arm qemu-armeb qemu-cris qemu-i386 qemu-m68k qemu-microblaze qemu-microblazeel qemu-mips qemu-mips64 qemu-mips64el qemu-mipsel qemu-mipsn32 qemu-mipsn32el qemu-or32 qemu-ppc qemu-ppc64 qemu-ppc64abi32 qemu-ppc64le qemu-s390x qemu-sh4 qemu-sh4eb qemu-sparc qemu-sparc32plus qemu-sparc64 qemu-x86_64 16 / 27
QEMU ARM, MIPS $ qemu-arm -cpu help Available CPUs: arm1026 arm1136 arm1136-r2 arm1176 arm11mpcore arm926 arm946 cortex-a15 cortex-a8 cortex-a9 cortex-m3 cortex-m4 cortex-r5 pxa250 pxa255 pxa260 pxa261 pxa262 pxa270-a0 pxa270-a1 pxa270 pxa270-b0 pxa270-b1 pxa270-c0 pxa270-c5 sa1100 sa1110 ti925t any $ qemu-mips -cpu help MIPS 4Kc MIPS 4Km MIPS 4KEcR1 MIPS 4KEmR1 MIPS 4KEc MIPS 4KEm MIPS 24Kc MIPS 24Kf MIPS 34Kf MIPS 74Kf MIPS M14K MIPS M14Kc MIPS mips32r5-generic MIPS mips32r6-generic 17 / 27
QEMU Základní použití GTK okno se vstupem/výstupem (Jak vyřešit ve virtlabu?) SLIRP sít KVM 256MB ram 1 CPU stejné architektury raw disk ISO instalační obraz $ qemu-system-x86_64 \ -enable-kvm \ -m 256 \ -drive file=drive1.img \ -cdrom archlinux.iso 18 / 27
QEMU Vstup a výstup -display <type> možnosti pro <type>: sdl curses none gtk vnc -nographic vypne grafický výstup narozdíl od -display none přesměruje serial a monitor do console -serial stdio telnet::4444,server,nowait telnet localhost 4444 -monitor stejně jako u serial pro řízení virtuálního stroje system_powerdown emuluje PWRBTN 19 / 27
QEMU Disky -drive file={image,drive,url} if={ide,scsi,sd,mtd,floppy,pflash,virtio} media={disk,cdrom} cache={none,writeback,writethrough} format={raw,qcow2} qemu-img(8) pro převod z.vmdk,.vdi,.vhd 20 / 27
QEMU Sít default je SLIRP nefunguje ping, TCP/UDP ano, mizerný výkon vytvoření sít ové karty -net nic [model=virtio] připojení karty k TAP zařízení hosta -net tap,ifname=tap0 připojení karty k bridge hosta -net bridge,br=br0 připojení k vde switchi -net vde,sock=/tmp/switch.sock vytvoření vde switche vde_switch -sock /tmp/switch.sock je možné tunelovat přes ssh mezi hostiteli 21 / 27
Distribuované FS obrazy virtuálních strojů typicky nejsou na lokálních discích z důvodu migrace, náhlé poruchy, bezdiskových stanic, spec. HW využití centrálního/distribuovaného úložiště je nutné řešit synchronizaci přístupu na jeden filesystem z více hostů drahé řešení: SAN + Fibre Channel + clusterový FS levné řešení: distribuovaný FS (glusterfs, ceph) na virtualizační nody termíny distribuovaný a clusterový jsou vysoce přetížené a je nutné je uvádět v určitém kontextu 22 / 27
QEMU Nadstavby není třeba používat často přidávají další vrstvy a nejsou spolehlivé neztrácejte s nimi čas, QEMU z řádky znamená nejméně problémů libvirt nástroj pro zastřešení vistualizačních řešení QEMU/kvm, XEN, LXC, OpenVZ, VirtualBox, VMware ESX, MS HyperV,... virt-manager nástroj pro management libvirt klikátko virt-install pro snazší vytváření virtuálních strojů věc názoru qemu-launcher, qtemmu jednoduchá GUI 23 / 27
Linux distribuce pro virtualizaci Proxmox open-source založeno na Debianu s upraveným RHEL kernelem velice povedená web console, CLI kontejnerová virtualizace přes OpenVZ plná virtualizace přes KVM instalace na pár kliknutí podpora pro ZFS, iscsi, Fiber Channel, NFS, GlusterFS, CEPH a DRBD opravdu funkční HA cluster (využívá Corosync) Při výpadku hostitele je host automaticky spuštěn na jiném hostiteli živá migrace vyzkoušené v produkci 24 / 27
Integrace QEMU se systemd Konfigurace # cat /etc/conf.d/qemu.d/stroj type="system-x86_64" args="-enable-kvm -cpu host \ -smp cores=2,threads=2,sockets=1 -m 8G \ -drive file=/var/lib/qemu/images/stroj.img,\ format=raw,if=virtio \ -net nic,model=virtio -net bridge,br=br0 \ -display none \ -monitor telnet:127.0.0.1:7100,server,nowait, \ nodelay" haltcmd="echo system_powerdown nc 127.0.0.1 7100" 25 / 27
Integrace QEMU se systemd qemu.service # cat /etc/systemd/system/qemu@.service [Unit] Description=QEMU virtual machine [Service] Environment="type=system-x86_64" \ "haltcmd=kill -INT $MAINPID" EnvironmentFile=/etc/conf.d/qemu.d/%i ExecStart=/usr/bin/env qemu-${type} -name %i \ -nographic $args ExecStop=/bin/sh -c ${haltcmd} TimeoutStopSec=30 KillMode=none [Install] WantedBy=multi-user.target 26 / 27
Integrace QEMU se systemd Použití # systemctl start qemu@stroj # systemctl stop qemu@stroj # systemctl enable qemu@stroj # systemctl disable qemu@stroj 27 / 27