SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
LXC – kontener pingwinów
                                            Grzegorz Nosek,
                                                 MegiTeam


Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
Wirtualizacja w kilku słowach




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Wirtualizacja w kilku słowach




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Wirtualizacja w kilku słowach




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
LXC
LinuX Containers
•   Namespaces – wirtualizacja
•   CGroups – przydzielanie zasobów
•   LXC – narzędzia userspace'owe




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
Namespaces
●   clone()
    ●   nowy proces, nowe namespace'y
●   unshare() (od 2.6.16)
    ●   ten sam proces, nowe namespace'y
●   setns() (od 3.2)
    ●   ten sam proces, istniejące namespace'y


     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
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
Namespaces
●   user namespace (CLONE_NEWUSER)
    ●   uid1 == uid2?
    ●   capabilities
        –   ptrace, kill, itp.
    ●   VFS




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Namespaces
●   net namespace (CLONE_NEWNET)
    ●   własne interfejsy sieciowe
    ●   interfejsy fizyczne
    ●   macvlan
    ●   veth




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
CGroups
●   cgroupfs
    ●   mkdir, rmdir
    ●   echo $$ > .../tasks
        –   w dowolnym momencie




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
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
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
CGroups




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
CGroups
●   net_cls
    ●   oznacza wychodzący ruch sieciowy klasami tc




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
CGroups
●   devices
    ●   ogranicza dostęp do poszczególnych urządzeń
        –   osobno odczyt, zapis, mknod




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
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
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
LXC
●   zestaw narzędzi integrujących namespace'y
    i cgroups
●   szablony dla popularnych dystrybucji
●   odpowiednik vzctl i util-vserver




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
Kolorowe klocki raz jeszcze




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
LXC
●   dla LXC wirtualizacja sieci jest opcjonalna,
    pozostałe są obowiązkowe
●   nic nie stoi na przeszkodzie, aby samemu
    poskładać namespace'y




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
LXC
●   lxc-unshare
    ●   najbardziej bezpośrednie narzędzie
    ●   tworzy namespace'y i tyle
●   pam_namespace
    ●   tylko FS namespace
●   systemd
    ●   PrivateNetwork=yes
    ●   InaccessibleDirectories itp.

        Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
Pułapki na optymistów
root@precise1:~# lxc-unshare -s PID /bin/bash
root@precise1:~# echo $$
1
root@precise1:~# readlink /proc/$$/exe




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
root@precise1:~# lxc-unshare -s PID /bin/bash
root@precise1:~# echo $$
1
root@precise1:~# readlink /proc/$$/exe
/sbin/init




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
root@precise1:~# lxc-unshare -s 'PID|MOUNT'
/bin/bash
root@precise1:~# umount /proc && mount /proc
root@precise1:~# readlink /proc/$$/exe
/bin/bash




   Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
root@precise1:~# mkdir /sys/fs/cgroup/blkio/slow
root@precise1:~# echo $$ > /sys/fs/cgroup/blkio/slow/tasks
root@precise1:~# echo '253:0 1000000' >
/sys/fs/cgroup/blkio/slow/blkio.throttle.write_bps_device
root@precise1:~# dd if=/dev/zero of=zero bs=1M count=500 && rm zero
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 6.12093 s, 85.7 MB/s




     Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
root@precise1:~# dd if=/dev/zero of=zero bs=1M
count=500 oflag=sync && rm zero
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 528.348 s, 992 kB/s




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
root@precise1:~# echo '253:0 1000000' >
/sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
root@precise1:~# dd if=/dev/zero of=zero bs=1M
count=500 && rm zero
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 377.854 s, 1.4 MB/s




    Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
Pułapki na optymistów
# http://blog.bofh.it/debian/id_413
lxc$ cat <<END > /tmp/evil-helper
#!/bin/sh
echo 'hi!' >> /tmp/evil-helper.log
END
lxc$ chmod +x /tmp/evil-helper


lxc# mkdir /sys
lxc# mount -t sysfs sysfs /sys
lxc# echo /var/lib/lxc/test/rootfs/tmp/evil-helper >
/sys/kernel/uevent_helper
lxc# echo change > /sys/class/mem/null/uevent



      Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
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
Porównanie

      OpenVZ                                Linux-VServer




                           LXC




Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
That's all, folks!



                 Pytania?


Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012

Contenu connexe

Tendances

Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńPaweł Kondraciuk
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITKamil Grabowski
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...PROIDEA
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud StorageOnetIT
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JSDawid Rusnak
 
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...PROIDEA
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza SzymonSadlo
 
Devbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyDevbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyMarek Bleschke
 
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...PROIDEA
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open sourceTomasz Kopacz
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun againMarcin Gajda
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Meet Magento Poland
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005Tomasz Bak
 

Tendances (20)

Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Websockety w PHP
Websockety w PHPWebsockety w PHP
Websockety w PHP
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań IT
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud Storage
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...
JDD2015: Logowanie zdarzeń w architekturze opartej na mikroserwisach - Paweł ...
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
 
Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
Devbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracyDevbox - wirtualne środowisko pracy
Devbox - wirtualne środowisko pracy
 
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...
4Developers: Kacper Kościeński- Walka z MVC i innymi wzorcami projektowymi w ...
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
 
Hugo - make webdev fun again
Hugo - make webdev fun againHugo - make webdev fun again
Hugo - make webdev fun again
 
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
Maciej Rudnicki: Zautomatyzowane środowisko deweloperskie.
 
Rails tobak2005
Rails tobak2005Rails tobak2005
Rails tobak2005
 

En vedette

Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlow
Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlowCohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlow
Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlowCohesive Networks
 
Amazon Elastic Block Store for Application Storage
Amazon Elastic Block Store for Application StorageAmazon Elastic Block Store for Application Storage
Amazon Elastic Block Store for Application StorageAmazon Web Services
 
Tech Chat – What's New in Sumo Logic
Tech Chat – What's New in Sumo LogicTech Chat – What's New in Sumo Logic
Tech Chat – What's New in Sumo LogicSumo Logic
 
EMC World 2015 - The Devops Toolkit
EMC World 2015 - The Devops ToolkitEMC World 2015 - The Devops Toolkit
EMC World 2015 - The Devops ToolkitJonas Rosland
 
Hadoop / Spark on Malware Expression
Hadoop / Spark on Malware ExpressionHadoop / Spark on Malware Expression
Hadoop / Spark on Malware ExpressionMapR Technologies
 
Delphi XE2, door André Mussche op de 4DotNet Developers Day
Delphi XE2, door André Mussche op de 4DotNet Developers DayDelphi XE2, door André Mussche op de 4DotNet Developers Day
Delphi XE2, door André Mussche op de 4DotNet Developers DayHanneke Dotnet
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveCloudCamp Chicago
 
Using NLP to find contextual relationships between fashion houses
Using NLP to find contextual relationships between fashion housesUsing NLP to find contextual relationships between fashion houses
Using NLP to find contextual relationships between fashion housesSushant Shankar
 
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...Foundation for Democratic Advancement
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is BeautifulEberhard Wolff
 
Respond to and troubleshoot production incidents like an sa
Respond to and troubleshoot production incidents like an saRespond to and troubleshoot production incidents like an sa
Respond to and troubleshoot production incidents like an saTom Cudd
 
Dashboards: Using data to find out what's really going on
Dashboards: Using data to find out what's really going onDashboards: Using data to find out what's really going on
Dashboards: Using data to find out what's really going onrouanw
 
Application Development on Metapod
Application Development on MetapodApplication Development on Metapod
Application Development on MetapodCisco DevNet
 
Interact Differently: Get More From Your Tools Through Exposed APIs
Interact Differently: Get More From Your Tools Through Exposed APIsInteract Differently: Get More From Your Tools Through Exposed APIs
Interact Differently: Get More From Your Tools Through Exposed APIsKevin Fealey
 

En vedette (20)

Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlow
Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlowCohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlow
Cohesive SDN Summit Presentation: OpenFlow is SDN, SDN is not OpenFlow
 
Amazon Elastic Block Store for Application Storage
Amazon Elastic Block Store for Application StorageAmazon Elastic Block Store for Application Storage
Amazon Elastic Block Store for Application Storage
 
Tech Chat – What's New in Sumo Logic
Tech Chat – What's New in Sumo LogicTech Chat – What's New in Sumo Logic
Tech Chat – What's New in Sumo Logic
 
EMC World 2015 - The Devops Toolkit
EMC World 2015 - The Devops ToolkitEMC World 2015 - The Devops Toolkit
EMC World 2015 - The Devops Toolkit
 
Book of Fauna and Flora
Book of Fauna and FloraBook of Fauna and Flora
Book of Fauna and Flora
 
Hadoop / Spark on Malware Expression
Hadoop / Spark on Malware ExpressionHadoop / Spark on Malware Expression
Hadoop / Spark on Malware Expression
 
Delphi XE2, door André Mussche op de 4DotNet Developers Day
Delphi XE2, door André Mussche op de 4DotNet Developers DayDelphi XE2, door André Mussche op de 4DotNet Developers Day
Delphi XE2, door André Mussche op de 4DotNet Developers Day
 
Chicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at CohesiveChicago AWS user group meetup - May 2014 at Cohesive
Chicago AWS user group meetup - May 2014 at Cohesive
 
Using NLP to find contextual relationships between fashion houses
Using NLP to find contextual relationships between fashion housesUsing NLP to find contextual relationships between fashion houses
Using NLP to find contextual relationships between fashion houses
 
Image (PNG) Forensic Analysis
Image (PNG) Forensic Analysis	Image (PNG) Forensic Analysis
Image (PNG) Forensic Analysis
 
De tabernakel
De tabernakelDe tabernakel
De tabernakel
 
Build Stuff 2015 program
Build Stuff 2015 programBuild Stuff 2015 program
Build Stuff 2015 program
 
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...
FDA's Brian Bradley Case Study and Process Review of the Veterans Review and ...
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is Beautiful
 
Respond to and troubleshoot production incidents like an sa
Respond to and troubleshoot production incidents like an saRespond to and troubleshoot production incidents like an sa
Respond to and troubleshoot production incidents like an sa
 
SIG-NOC Tools Survey
SIG-NOC Tools SurveySIG-NOC Tools Survey
SIG-NOC Tools Survey
 
Dashboards: Using data to find out what's really going on
Dashboards: Using data to find out what's really going onDashboards: Using data to find out what's really going on
Dashboards: Using data to find out what's really going on
 
Bsides threat hunting
Bsides threat huntingBsides threat hunting
Bsides threat hunting
 
Application Development on Metapod
Application Development on MetapodApplication Development on Metapod
Application Development on Metapod
 
Interact Differently: Get More From Your Tools Through Exposed APIs
Interact Differently: Get More From Your Tools Through Exposed APIsInteract Differently: Get More From Your Tools Through Exposed APIs
Interact Differently: Get More From Your Tools Through Exposed APIs
 

Similaire à LXC - kontener pingwinów

PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PROIDEA
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP3camp
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) Laravel Poland MeetUp
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 

Similaire à LXC - kontener pingwinów (7)

PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Xdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHPXdebug – debugowanie i profilowanie aplikacji PHP
Xdebug – debugowanie i profilowanie aplikacji PHP
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug) xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
xD bug - Jak debugować PHP-owe aplikacje (Xdebug)
 
Wprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbeddedWprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbedded
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 

Plus de gnosek

Jak działa Internet
Jak działa InternetJak działa Internet
Jak działa Internetgnosek
 
Docker rant
Docker rantDocker rant
Docker rantgnosek
 
Sysdig
SysdigSysdig
Sysdiggnosek
 
Ansible PyWAW
Ansible PyWAWAnsible PyWAW
Ansible PyWAWgnosek
 
Warsztaty ansible
Warsztaty ansibleWarsztaty ansible
Warsztaty ansiblegnosek
 
Hostory
HostoryHostory
Hostorygnosek
 
pam_container -- jeszcze lżejsza wirtualizacja
pam_container -- jeszcze lżejsza wirtualizacjapam_container -- jeszcze lżejsza wirtualizacja
pam_container -- jeszcze lżejsza wirtualizacjagnosek
 
Ansible
AnsibleAnsible
Ansiblegnosek
 

Plus de gnosek (8)

Jak działa Internet
Jak działa InternetJak działa Internet
Jak działa Internet
 
Docker rant
Docker rantDocker rant
Docker rant
 
Sysdig
SysdigSysdig
Sysdig
 
Ansible PyWAW
Ansible PyWAWAnsible PyWAW
Ansible PyWAW
 
Warsztaty ansible
Warsztaty ansibleWarsztaty ansible
Warsztaty ansible
 
Hostory
HostoryHostory
Hostory
 
pam_container -- jeszcze lżejsza wirtualizacja
pam_container -- jeszcze lżejsza wirtualizacjapam_container -- jeszcze lżejsza wirtualizacja
pam_container -- jeszcze lżejsza wirtualizacja
 
Ansible
AnsibleAnsible
Ansible
 

LXC - kontener pingwinów

  • 1. LXC – kontener pingwinów Grzegorz Nosek, MegiTeam Grzegorz 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łowach Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 4. Wirtualizacja w kilku słowach Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 5. Wirtualizacja w kilku słowach Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 6. LXC LinuX Containers • Namespaces – wirtualizacja • CGroups – przydzielanie zasobów • LXC – narzędzia userspace'owe 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 namespace'y ● unshare() (od 2.6.16) ● ten sam proces, nowe namespace'y ● setns() (od 3.2) ● ten sam proces, istniejące namespace'y 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. CGroups Grzegorz 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 namespace'y 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 jeszcze Grzegorz 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ć namespace'y Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 30. LXC ● lxc-unshare ● najbardziej bezpośrednie narzędzie ● tworzy namespace'y 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ów root@precise1:~# lxc-unshare -s PID /bin/bash root@precise1:~# echo $$ 1 root@precise1:~# readlink /proc/$$/exe Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 33. Pułapki na optymistów root@precise1:~# lxc-unshare -s PID /bin/bash root@precise1:~# echo $$ 1 root@precise1:~# readlink /proc/$$/exe /sbin/init Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 34. Pułapki na optymistów root@precise1:~# lxc-unshare -s 'PID|MOUNT' /bin/bash root@precise1:~# umount /proc && mount /proc root@precise1:~# readlink /proc/$$/exe /bin/bash Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 35. Pułapki na optymistów root@precise1:~# mkdir /sys/fs/cgroup/blkio/slow root@precise1:~# echo $$ > /sys/fs/cgroup/blkio/slow/tasks root@precise1:~# echo '253:0 1000000' > /sys/fs/cgroup/blkio/slow/blkio.throttle.write_bps_device root@precise1:~# dd if=/dev/zero of=zero bs=1M count=500 && rm zero 500+0 records in 500+0 records out 524288000 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ów root@precise1:~# dd if=/dev/zero of=zero bs=1M count=500 oflag=sync && rm zero 500+0 records in 500+0 records out 524288000 bytes (524 MB) copied, 528.348 s, 992 kB/s Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 37. Pułapki na optymistów root@precise1:~# echo '253:0 1000000' > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device root@precise1:~# dd if=/dev/zero of=zero bs=1M count=500 && rm zero 500+0 records in 500+0 records out 524288000 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_413 lxc$ cat <<END > /tmp/evil-helper #!/bin/sh echo 'hi!' >> /tmp/evil-helper.log END lxc$ chmod +x /tmp/evil-helper lxc# mkdir /sys lxc# mount -t sysfs sysfs /sys lxc# echo /var/lib/lxc/test/rootfs/tmp/evil-helper > /sys/kernel/uevent_helper lxc# 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 LXC Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012
  • 41. That's all, folks! Pytania? Grzegorz Nosek | Dni Wolnego Oprogramowania, Bielsko-Biała 2012