2015-08-08 の OSC 2015 Kansai@Kyoto でお話した際の発表資料です。 参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
͍·͞Βฉ͚ͳ͍LinuxίϯςφͷجૅOSC 2015 Kansai@KyotoՃ౻ହจlxc-jp2015-08-08Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 1 / 54
View Slide
ࣗݾհՃ౻ହจhttp://www.ten-forward.ws/@ten forwardhttp://gplus.to/tenforwardhttps://github.com/tenforwardhttp://d.hatena.ne.jp/defiant/ (ٕज़ϒϩά)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 2 / 54
ࣗݾհPlamo Linux ϝϯςφLXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़gihyo.jp Ͱ࿈ࡌՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 3 / 54
ࣗݾհLXC ͷ։ൃʹগ͠ࢀՃman page ͷຊޠ༁ެࣜϖʔδ (linuxcontainers.org) ༁όάϑΟοΫεͳͲগ͚ͩ͠ίʔυʹߩݙՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 4 / 54
࣭ɿΈͳ͞ΜʹͱͬͯͷίϯςφՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 5 / 54
વίϨͰ͠ΐ͏Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 6 / 54
σʔληϯλʔ͡ΌͶʁՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 7 / 54
࠷ۙྲྀߦͬͯΔΒ͍͚͠ͲԿʁՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 8 / 54
DockerͬͯΔΑLXCͬͯΔΑOpenVZͬͯΔΑՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 9 / 54
Dockerͬͨ͜ͱ͋ΔΑLXCͬͨ͜ͱ͋ΔΑOpenVZͬͨ͜ͱ͋ΔΑՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 10 / 54
ࠓͷඪίϯςφͷ֓ཁΛཧղ͢ΔLinux Χʔωϧ͕࣋ͭίϯςφ͕͏ओཁͳػೳΛ֮͑ΔՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 11 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 12 / 54
ίϯςφ֓ཁՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 13 / 54
ίϯςφͱԾతͳίϯϐϡʔλɾγεςϜΛ࠶ݱ͢ΔԾϚγϯʹରͯ͠ɺԾతͳ OS ڥΛఏڙ͢Δˠ OS ϨϕϧͷԾԽΧʔωϧ͔ΒݟΔͱී௨ʹϓϩηε͕ىಈ͢Δ͚ͩىಈ͢ΔࡍʹִΛࢦࣔ͢ΔΧʔωϧͷػೳͰ (ෳͷ) ಠཱۭͨؒ͠Λ࡞Γग़͠ɼϦιʔεΛׂɾ͢ΔϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱϦιʔεۭؒΛִάϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶԾԽͱ͍͏ΑΓʮִԽʯͱݴͬͨ΄͏͕Θ͔Γ͍͔͢Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 14 / 54
ίϯςφͷϝϦοτߴີԽ͕Մೳىಈ͍ͯ͠Δ OS (Χʔωϧ) ҰͭΦʔόʔϔου͕খ͍͞ϋʔυΣΞͷԾԽ͕ෆཁىಈ͕ૣ͍ԾϚγϯͷىಈͰͳ͘ɼϗετ OS ͔ΒݟͨΒ୯ʹϓϩηε͕ىಈ͍ͯ͠Δ͚ͩͳͷͰɼී௨ͷϓϩάϥϜ͕ىಈ͢Δͷͱ΄ͱΜͲมΘΒͳ͍ඞͣ͠γεςϜΛಈ͔͢ඞཁͳ͍ (ΞϓϦέʔγϣϯίϯςφ)ྫ͑ίϯςφͰ httpd ͷΈ͕ಈ͍͍ͯΔίϯςφʹϝϞϦΛݻఆతʹׂΓͯΔඞཁ͕ͳ͍Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 15 / 54
ίϯςφͷσϝϦοτҟͳΔ OS ͷγεςϜ / ϓϩάϥϜಈ͔ͤͳ͍୯ʹϗετ OS ্Ͱϓϩηε͕ىಈ͢Δ͚ͩͳͷͰͨΓલΧʔωϧʹؔΘΔૢ࡞Ͱ͖ͳ͍ىಈ͍ͯ͠ΔΧʔωϧมΘΒͳ͍ͷͰίϯςφຖʹϩʔυ͢ΔϞδϡʔϧΛม͑ΔͳͲΧʔωϧͷ࣮ෳࡶʹͳΔશͯΧʔωϧͷػೳͱ࣮ͯ͠͞Ε͍ͯΔͷͰՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 16 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 17 / 54
Linuxʹ͓͚ΔίϯςφͷΈՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 18 / 54
(ͨ·ʹݟ͔͚Δ)ίϯςφͷྺ࢙͔ΒݟͨLinuxίϯςφʹର͢Δޡղ1979 ʹ chroot(2) γεςϜίʔϧ͕ Version 7 Unix ʹɺ1983 ʹ 4.2BSD ʹಋೖ͞ΕΔ2000 ʹ FreeBSD jail ͕ FreeBSD 4.0 ʹಋೖʰDocker? ͦΜͳΜ jail Ͱͣͬͱલ͔ΒͰ͖ͯΔʱ(DockerΓ্͕͖ͬͯͨ࣌ͷΦοαϯͷ) ˠ ʷؒҧ͍2005 ʹ Solaris Containers ొ2008 ʹ Linux ʹ Cgroup ͕ಋೖʰ͜ΕͰ Linux Ͱ͍ͭʹίϯςφ͕ՄೳʹͳΓ·ͨ͠ʱˠʷؒҧ͍2014 Docker 1.0 ϦϦʔε (LXC 1.0 ϦϦʔε)ʰCgroup ͷొͰ Linux Ͱίϯςφ͕Մೳʹʯ͕ؒҧ͍ͳཧ༝͜ͷޙΘ͔Γ·͢ :-)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 19 / 54
Linuxʹ͓͚ΔίϯςφΧʔωϧʹʰίϯςφʱͱ͍͏୯Ұͷػೳ͕࣮͞Ε࣮ͯݱ͍ͯ͠ΔΘ͚Ͱ͋Γ·ͤΜՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 20 / 54
Linux ͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳLinux Χʔωϧʹؚ·ΕΔ৭ʑͳػೳΛΈ߹ΘͤͯίϯςφڥΛ࡞͢ΔɻͦΕͧΕͷػೳίϯςφઐ༻ͷػೳͱ͍͏Θ͚Ͱͳ͍ɻϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱִOS Ϧιʔεͷִˠ Namespace (໊લۭؒ)άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶϗετͷཧϦιʔεʹର͢Δ੍ݶˠ Cgroup (control group)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 21 / 54
LinuxͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳͦͷଞωοτϫʔΫ (veth, macvlan ͳͲ)έʔύϏϦςΟchroot (pivot root)bind mountCheckpoint/Restore (CRIU)ͳͲͳͲՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 22 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 23 / 54
Linuxʹ͓͚ΔίϯςφͷΈNamespaceՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 24 / 54
Namespace(໊લۭؒ)ִ͍ͨ͠ OS Ϧιʔε͝ͱʹ Namespace ͕४උ͞ΕΔҰ෦ͷ Namespace ͚ͩ༻ִͯ͠ڥΛ࡞Δ͜ͱ͕Ͱ͖ΔՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 25 / 54
Namespace ͷछྨ (1)Mount Namespace: 2.4.19ϓϩηε͔Βݟ͍͑ͯΔϚϯτͷू߹ɼૢ࡞Λ͢ΔɽNamespace ͷ mount, umount ଞͷ Namespace ʹӨڹ͠ͳ͍(ࢀߟ) Ϛϯτ໊લۭؒΛద༻͢Δ (IBM developerWorks)UTS Namespace: 2.6.19ϗετ໊ͳͲɼuname(2) ͕ฦ͢ͷू߹Λɽsetdomainname(2), sethostname(2) Ͱ Namespace ͷͷΈมߋͰ͖ΔPID Namespace: 2.6.24PID ۭؒͷɽ৽͍͠ PID Namespace Ͱ PID 1 ͔Β࢝·Δ PID ׂ͕ΓͯΒΕΔɽ͔Βࢠͷ PID Namespace ݟ͑Δ (ͷۭؒͷ PID Λ࣋ͭ) ͕ɼࢠ͔Βݟ͑ͳ͍Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 26 / 54
Namespace ͷछྨ (2)IPC Namespace: 2.6.19SysV IPC ΦϒδΣΫτɼPOSIX ϝοηʔδΩϡʔͷִUser Namespace: 2.6.23 ˜ 3.8ಠཱͨ͠ UID/GID ۭؒͱ֎෦ۭؒͷϚοϐϯά (ྫ͑ɼִۭؒͰ uid/gid 0/0ɼ֎෦Ͱ 1000/1000 ͱ͔ՄೳʹͳΔ)Network Namespace: 2.6.26ωοτϫʔΫϦιʔεͷִɽωοτϫʔΫσόΠεɼΞυϨεɼϧʔςΟϯάςʔϒϧɼιέοτɼϑΟϧλϦϯάՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 27 / 54
Namespace ͷૢ࡞ (γεςϜίʔϧ)clone(2) Ͱ৽͍͠ϓϩηε Λੜunshare(2) Ͱ৽͍͠ϓϩηεΛੜͤͣʹ࣮ߦίϯςΩετΛ੍ޚ͢Δsetns(2) ͰϓϩηεΛطଘ ͷ Namespace ʹؔ࿈͚ΔՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 28 / 54
NamespaceσϞ1 Namespace Λ࡞Δલʹϗετ໊Λ֬ೝ (ϗετڥͷϗετ໊)2 Namespace Λ࡞ΔલʹશϓϩηεΛҰཡ (ϗετڥͷϓϩηε)3 util-linux ଐͷ unshare ίϚϯυΛͬͯ PID, UTS,Mount Namespace(໊લۭؒ) Λ࡞4 Namespace ͰશϓϩηεΛҰཡ5 Namespace Ͱϗετ໊Λมߋ6 Namespace Λൈ͚Δͱϗετ໊͕มΘ͍ͬͯͳ͍͜ͱΛ֬ೝhttps://asciinema.org/a/24150৽͍͠ util-linux ͕ඞཁ (σϞ 2.26.2)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 29 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 30 / 54
Linuxʹ͓͚ΔίϯςφͷΈCgroupՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 31 / 54
CgroupͱϓϩηεΛάϧʔϓԽ͠ɺάϧʔϓʹରͯ͠Ϧιʔε੍ݶΛߦ͏ɻίϯςφઐ༻ͷΈͰͳ͍ɻCgroup ͷಛػೳ͝ͱʹαϒγεςϜʹ͔ΕΔcgroupfs ΛϚϯτͯ͠σΟϨΫτϦͰάϧʔϓΛද͢ϓϩηεΛάϧʔϓͷ tasks ϑΝΠϧʹՃ͢Δͱؔ࿈͢ΔλεΫ͕εϨου୯ҐͰάϧʔϓʹՃ͞ΕΔෳ֊ߏɻվߏ͝ͱʹҟͳΔπϦʔΛ࡞Ͱ͖Δɻͨͩ͠ɺҰͭͷαϒγεςϜ͕ॴଐͰ͖ΔπϦʔҰͭπϦʔͷͲͷϨϕϧͷάϧʔϓʹλεΫ͕ॴଐͰ͖ΔՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 32 / 54
Cgroupͷ֊ߏՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 33 / 54
CgroupͷαϒγεςϜcpu: 2.6.24CFS(Completely Fair Scheduler) bandwidth controlɽ୯Ґ࣌ؒͷάϧʔϓͷλεΫ͕࣮ߦͰ͖Δ߹ܭ࣌ؒΛ੍ݶ͢Δ(3.2 Ͱ࣮)૬ରɽάϧʔϓؒͷ CPU ࣌ؒͷׂͷׂ߹Λࢦఆ͢Δɽྫ͑ GroupA=100,GroupB=50 ͱ͢Δͱ A:B=2:1cpuacct: 2.6.24άϧʔϓͷ CPU ϦιʔεͷϨϙʔτ (CPU ࣌ؒ)cpuset: 2.6.24ׂΓͯΔ CPU, ϝϞϦϊʔυͷׂՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 34 / 54
CgroupͷαϒγεςϜdevice: 2.6.26σόΠεͷΞΫηεڐՄɼ੍ݶͷࢦఆfreezer: 2.6.28άϧʔϓͷϓϩηεΛશͯҰ࣌ఀࢭ͢Δmemory: 2.6.29ϝϞϦϦιʔεͷ੍ݶ (ϢʔβϝϞϦɼΧʔωϧϝϞϦ)blkio (Block IO):I/O weight controller(2.6.33 Ҏ߱) άϧʔϓͷ༏ઌΛࢦఆ͢ΔI/O throttling(2.6.37 Ҏ߱) άϧʔϓͷϓϩηεͷσόΠεʹର͢Δૢ࡞ͷ߹ܭͷࢦఆ(ࢀߟ)Linux2.6.37 ͷ৽ػೳ “I/O throttling”Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 35 / 54
CgroupͷαϒγεςϜhugetlb: 3.6cgroup ͔Βͷ hugetlb ͷ༻perf event: 2.6.39άϧʔϓ୯ҐͰ perf πʔϧͰϞχλϦϯά (ύϑΥʔϚϯεղੳ)net cls: 2.6.29ύέοτʹࣝผࢠΛ͚ͭɼτϥϑΟοΫίϯτϩʔϧ (tc) ͱnetfilter(3.14 Ҏ߱) ͰίϯτϩʔϧՄೳʹLinux 3.14 Ͱ net cls cgroup ʹՃ͞Εͨ netfilter ରԠnet prio: 3.3άϧʔϓؒͰͷωοτϫʔΫͷ༏ઌΛΠϯλʔϑΣʔεຖʹࢦఆ͢ΔLinux 3.3 ͷ৽ػೳ Network priority cgroupLinux 3.3 ͷ৽ػೳ Network priority cgroup (2)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 36 / 54
Cgroupͷ͍ํCgroup ίϯςφͱؔͳ͘༻Մೳ # mount -t tmpfs cgroup_root /sys/fs/cgroup# mkdir /sys/fs/cgroup/memory# mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory (ϝϞϦαϒγεςϜͷϚϯτ)# mkdir /sys/fs/cgroup/memory/test01 ("test01" ͱ͍͏άϧʔϓͷ࡞)# echo $$ > /sys/fs/cgroup/memory/test01/tasks (ϓϩηεΛάϧʔϓʹొ)# cat /sys/fs/cgroup/memory/test01/tasks (άϧʔϓͷϓϩηεͷ֬ೝ)28242837# echo 30M > /sys/fs/cgroup/memory/test01/memory.limit_in_bytes(άϧʔϓʹରͯ͠ϝϞϦ্ݶ 30M ͱ͍͏੍ݶΛઃఆ)# cat /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (੍ݶͷ֬ೝ)31457280# cat /sys/fs/cgroup/memory/test01/memory.usage_in_bytes (ݱࡏͷ༻ྔͷ֬ೝ)565248 Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 37 / 54
cgroupσϞ1 CPU Λ 100%͏ॲཧΛ;ͨͭىಈ2 top ίϚϯυͰ྆ํͷॲཧ͕΄΅ 50%ͣͭ CPU Λ͍ͬͯΔ͜ͱΛ֬ೝ3 CPU ͷ༻࣌ؒΛ੍ݶ͢ΔͨΊͷ୯Ґ࣌ؒͷ֬ೝ4 ยํͷϓϩηεʹ୯Ґ࣌ؒͷ 10%͚ͩ CPU ΛׂΓͯΔࢦఆΛߦ͏5 ยํͷϓϩηεʹ୯Ґ࣌ؒͷ 5%͚ͩ CPU ΛׂΓͯΔࢦఆΛߦ͏6 ྆ํͷࢦఆ͕ cgroupfs ্ͷϑΝΠϧʹॻ͖ࠐ·Ε͍ͯΔͷΛ֬ೝ7 ͦΕͧΕͷϓϩηε͕ CPU Λ 10%ɺ5%͍ͬͯΔ͜ͱΛ֬ೝhttps://asciinema.org/a/15287Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 38 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 39 / 54
Linuxʹ͓͚ΔίϯςφͷΈωοτϫʔΫػೳՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 40 / 54
ίϯςφͰ͏ωοτϫʔΫػೳ ʙ vethOpenVZ/Virtuozzo ༝དྷͷػೳରͱͳΔΠϯλʔϑΣʔεΛੜ͠ɼΠϯλʔϑΣʔεؒͰ௨৴Λߦ͏ (Layer2 ͷτϯωϧ)ରͷยํΛϗετଆͷϒϦοδʹɼยํΛίϯςφʹଓՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 41 / 54
ίϯςφͰ͏ωοτϫʔΫػೳ ʙ macvlanཧΠϯλʔϑΣʔεʹผͷ MAC ΞυϨε͕͍ͨԾతͳ৽͍͠ΠϯλʔϑΣʔεΛ࡞ɽ͜ͷΠϯλʔϑΣʔεΛίϯςφʹׂՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 42 / 54
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞCgroupσϞωοτϫʔΫؔ࿈ػೳ (͕࣌ؒ͋Ε)ίϯςφͰ͑Δ໘ന͍ػೳ (͕࣌ؒ͋Ε)·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 43 / 54
LinuxΧʔωϧͷίϯςφͰ͑Δ໘ന͍ػೳՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 44 / 54
CRIU(1)http://criu.org/OpenVZ ϓϩδΣΫτͷ Checkpoint/Restore ࣮ΞϓϦέʔγϣϯͷ͋Δ࣌ͷঢ়ଶΛอଘ͠ɺ࠶։Ͱ͖ΔΧʔωϧ 3.11 Ҏ߱Ͱ༻ՄೳՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 45 / 54
CRIU(2) $ sudo criu dump -D checkpoint -t 1234 (PID:1234 ͷϓϩηεͷใΛμϯϓͯ͠checkpoint σΟϨΫτϦʹอଘ)$ ls ./checkpointcgroup.img fdinfo-17.img inventory.img pages-15.imgcore-170.img fdinfo-18.img ipcns-msg-9.img pages-16.imgcore-176.img fdinfo-2.img ipcns-sem-9.img pages-17.imgcore-1.img fdinfo-3.img ipcns-shm-9.img pages-1.imgcore-260.img fdinfo-4.img ipcns-var-9.img pages-2.imgcore-261.img fdinfo-5.img iptables-8.img pages-3.img: (snip)$ sudo criu restore -D checkpoint -d (checkpoint σΟϨΫτϦͷμϯϓΠϝʔδΛͬͯϦετΞ) (ॲཧͷུ֓Λॻ͍͚ͨͩͳͷͰ࣮ࡍ৭ʑΦϓγϣϯΛࢦఆͨ͠Γ͢Δඞཁ͕͋Γ·͢)Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 46 / 54
overlayfsUnion Filesystem (aufs ͱҰॹ)ෳͷσΟϨΫτϦΛಁաతʹॏͶ͋ΘͤͯͻͱͭʹݟͤΒΕΔίϯςφͱؔͳ͍3.18 kernel ͰϚʔδίϯςφͷΫϩʔϯΛ࡞͢Δͱ͖ͷϑΝΠϧγεςϜͱͯ͠ LXC ͔Βར༻Ͱ͖ΔUbuntu/Plamo ͩͱඇಛݖίϯςφͷΫϩʔϯʹ͑ΔDocker Ͱར༻Ͱ͖ΔՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 47 / 54
overlayfs࣮ߦྫ # mkdir lower upper overlay work# ls -Flower/ overlay/ upper/ work/# touch lower/lower# touch upper/upper# mount -n -t overlay \> -o lowerdir=lower,upperdir=upper,workdir=work \> overlay overlay# ls overlay/lower upper# touch overlay/test# ls overlay/lower test upper# ls upper/test upper Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 48 / 54
overlayfsσϞ1 lower, upper, work, overlay σΟϨΫτϦ࡞2 lower, upper ʹϑΝΠϧ࡞3 overlayfs Ϛϯτ4 Ϛϯτͨ͠σΟϨΫτϦ (overlay) ʹ lower, upper ʹଘࡏ͢ΔϑΝΠϧ͕྆ํݟ͍͑ͯΔͷΛ֬ೝ5 Ϛϯτͨ͠σΟϨΫτϦ (overlay) ͰϑΝΠϧ࡞6 ࡞ͨ͠ϑΝΠϧ͕ upper ʹͰ͖͍ͯΔ͜ͱΛ֬ೝ7 ΞϯϚϯτͨ͋͠ͱͷ֤σΟϨΫτϦΛ֬ೝhttps://asciinema.org/a/24151Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 49 / 54
·ͱΊՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 50 / 54
·ͱΊίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈίϯςφΧʔωϧʹ࣮͞Ε͍ͯΔ৭ʑͳػೳͷΈ߹ΘͤͰ࣮ݱ͞Ε͍ͯΔNamespaceOS ϦιʔεͷִCgroupϗετͷཧϦιʔεͷ੍ݶωοτϫʔΫؔ࿈ػೳvethmacvlanίϯςφͰ͑Δ໘ന͍ػೳՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 51 / 54
lxc-jpLXC ʹݶΒͣίϯςφͷΛѻ͍ͬͯ·͢ɻhttps://groups.google.com/d/forum/lxc-jpՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 52 / 54
ίϯςφܕԾԽͷใަձhttps://sites.google.com/site/containerstudy/http://ct-study.connpass.com/ίϯςφٕज़ʹؔ࿈͢ΔΛѻ͏ίϯςφʹؔ࿈͢ΔΧʔωϧͷ࣮ʹ͍֤ͭͯछπʔϧΩοτͷհɼ࣮ʹ͍ͭͯίϯςφٕज़ΛͬͨπʔϧιϑτΣΞͷհ࣮ʹ͍ͭͯίϯςφٕज़ͷ׆༻ɾӡ༻ࣄྫͦͷଞʮίϯςφʯͱ͍͏Ωʔϫʔυ͕গ͠Ͱೖ͍ͬͯΔٕज़ʹ͍ͭͯ͜Ε·Ͱେࡕͱ౦ژͰަޓʹ 7 ճ࣮ࢪɻୈ 8 ճ 9 ݄ʹ౦ژͷ༧ఆՃ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 53 / 54
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠Ճ౻ହจ (lxc-jp) OSC 2015 Kansai@Kyoto 2015-08-08 54 / 54