第6回コンテナ型仮想化の情報交換会の発表資料です。 参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
LXC UpdateՃ౻ହจ2015-02-18Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 1 / 29
View Slide
୭?Ճ౻ହจhttp://www.ten-forward.ws/@ten forwardhttp://gplus.to/tenforwardhttps://github.com/tenforwardhttp://d.hatena.ne.jp/defiant/ (ٕज़ϒϩά)Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 2 / 29
୭?ϑΝʔεταʔόɹج൫։ൃ෦ɹॴଐ৽ϒϥϯυͷϗεςΟϯάαʔϏε͡Ί·ͨ͠Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 3 / 29
୭?2010 ࠒʹ cgroup ͷௐࠪΛ࢝Ίͨͷ͕͖͔͚ͬͰίϯςφपลΛ৭ʑ͓͔͚ͬͯͨͷ͕ߴͯ͜͡ͷษڧձΛͬͯ·͢LXC ͷίϛοτຊޠ man pages / ࠷ۙগ͠ίʔυlinuxcontainers.org ༁Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 4 / 29
୭?Plamo Linux ϝϯςφLXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़gihyo.jp Ͱ࿈ࡌʲվగ৽൛ʳLinux ΤϯδχΞཆಡຊ (ٕज़ධࣾ)Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 5 / 29
ࠓͷ༰LXCFSLXC 1.1LXDͦͷଞՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 6 / 29
LXCFSLXC ༻ͷίϯςφͷΛղܾ͢Δ FUSE ϑΝΠϧγεςϜඇಛݖίϯςφͰ cgroupfs ͬΆ͍πϦʔΛίϯςφʹ࠶ݱίϯςφͷ cpuinfo, meminfo, stat, uptime Λίϯςφ͚ͷ༰ʹݟͤΔՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 7 / 29
LXCFS͍ํ $ sudo lxcfs -s -f -o allow_other /var/lib/lxcfs lxcfs $ ls /var/lib/lxcfs/cgroup proc$ ls /var/lib/lxcfs/proc/cpuinfo meminfo stat uptime$ ls /var/lib/lxcfs/cgroup/blkio cpuacct devices hugetlb name=systemdcpu cpuset freezer memory perf_event Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 8 / 29
LXCFSLXCFS ͷ proc ҎԼͷϑΝΠϧͦΕͧΕίϯςφͷ/proc ҎԼʹόΠϯυϚϯτ͞ΕΔϗετͷ cgroupfs ͷίϯςφʹରԠ͢Δ cgroup ͔ΒಘͨใΛݩʹίϯςφͷ֤ϑΝΠϧΛੜLXCFS ͷ cgroup ҎԼͷσΟϨΫτϦίϯςφͷ/sys/fs/cgroup ҎԼʹόΠϯυϚϯτ͞ΕΔsystemd ͕ίϯςφͰಈ͘߹ʹඞཁՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 9 / 29
LXCFS͜Ε·Ͱ $ sudo grep cgroup /var/lib/lxc/ct01/configlxc.cgroup.memory.limit_in_bytes = 256M (ϝϞϦ্ݶ 256MB ʹઃఆ)$ sudo lxc-start -n ct01 -d (ίϯςφىಈ)$ grep MemTotal /proc/meminfo (ϗετͷϝϞϦྔ)MemTotal: 1017908 kB$ sudo lxc-attach -n ct01 -- grep MemTotal /proc/meminfoMemTotal: 1017908 kB (ϗετͷϝϞϦྔͦͷ··) LXCFS Λͬͨ߹ $ sudo grep cgroup /var/lib/lxc/ct01/configlxc.cgroup.memory.limit_in_bytes = 256M (ϝϞϦ্ݶ 256MB ʹઃఆ)$ sudo lxc-start -n ct01 (ίϯςφىಈ)$ grep MemTotal /proc/meminfo (ϗετͷϝϞϦྔ)MemTotal: 1017792 kB$ sudo lxc-attach -n ct01 -- grep MemTotal /proc/meminfoMemTotal: 262144 kB (cgroup Ͱઃఆ੍ͨ͠ݶͷʹͳ͍ͬͯΔ) Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 10 / 29
ࠓͷ༰LXCFSLXC 1.1LXDͦͷଞՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 11 / 29
LXC 1.1LXC 1.1.02015 1 ݄ 30 ʹϦϦʔε2016 1 ݄ or ࣍ͷϦϦʔε͕͞Ε͍ͯͳ͍߹ϦϦʔεͷ 2 ϲ݄ޙ·ͰαϙʔτLXC 1.0 ܥྻ 2019 4 ݄·ͰαϙʔτՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 12 / 29
LXC 1.1৽ػೳCRIU ΛͬͨίϯςφͷνΣοΫϙΠϯτɾϦετΞػೳͷαϙʔτίϯςφͷ init ͱͯ͠ systemd Λαϙʔτcgmanager, lxcfs ͱΈ߹ΘͤͯඇಛݖίϯςφͰಈ࡞ՄೳՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 13 / 29
LXC 1.1 ʙ CRIU ʹΑΔC/Rlxc-checkpoint ϓϩάϥϜʹΑΔνΣοΫϙΠϯτɾϦετΞ ubuntu@criu1:~$ sudo lxc-start -n ct01ubuntu@criu1:~$ sudo lxc-checkpoint -v -n ct01 -s -D /tmp/checkpoint (νΣοΫϙΠϯτॲཧޙʹίϯςφఀࢭ)ubuntu@criu1:~$ sudo lxc-ls --fancyNAME STATE IPV4 IPV6 GROUPS AUTOSTART--------------------------------------------ct01 STOPPED - - - NOubuntu@criu1:~$ ls /tmp/criu/cgroup.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)ubuntu@criu1:~$ sudo rsync -avz --devices --rsync-path="sudo rsync" \/var/lib/lxc/ct01 [email protected]:/var/lib/lxcubuntu@criu1:~$ sudo rsync -avz --rsync-path="sudo rsync" \/tmp/checkpoint [email protected]:/tmp Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 14 / 29
LXC 1.1 ʙ CRIU ʹΑΔC/Rlxc-checkpoint ϓϩάϥϜʹΑΔνΣοΫϙΠϯτɾϦετΞ ubuntu@criu2:~$ ls /tmp/criu/cgroup.img fdinfo-3.img ipcns-sem-9.img pages-3.imgcore-1.img fdinfo-4.img ipcns-shm-9.img pages-4.imgcore-255.img fdinfo-5.img ipcns-var-9.img pages-5.imgcore-260.img fdinfo-6.img iptables-8.img pages-6.img: (snip)ubuntu@criu2:~$ sudo lxc-checkpoint -n ct01 -r -D /tmp/checkpoint -v -dubuntu@criu2:~$ sudo lxc-ls -fNAME STATE IPV4 IPV6 GROUPS AUTOSTART--------------------------------------------------ct01 RUNNING 10.0.3.200 - - NO Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 15 / 29
LXC 1.1ͦͷଞมߋlxc-start σʔϞϯϞʔυ͕σϑΥϧτʹlxc-execute ίϯςφʹ lxc-init ΛόΠϯυϚϯτ͢ΔΑ͏ʹlxc.autodev ͕σϑΥϧτ༗ޮʹɻ࠷ݶͷ /dev ҎԼΛLXC ͕४උlxc-snapshot ͷεφοϓγϣοτͷอଘॴ͕ίϯςφσΟϨΫτϦʹopenvswitch ϒϦοδͷαϙʔτlxc-top, lxc-device ίϚϯυ͕ C όΠφϦʹͦͷଞଟ(https://linuxcontainers.org/ja/lxc/news/)Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 16 / 29
ࠓͷ༰LXCFSLXC 1.1LXDͦͷଞՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 17 / 29
LXDߏREST API Λఏڙ͢ΔσʔϞϯίϚϯυϥΠϯΫϥΠΞϯτOpenStack Nova ϓϥάΠϯՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 18 / 29
LXDػೳAPIɺίϚϯυϥΠϯπʔϧΛͬͯωοτϫʔΫ্ͷίϯςφͷཧ͕ՄೳΠϝʔδϕʔεϥΠϒϚΠάϨʔγϣϯLXD ϗετΛ OpenStack ίϯϐϡʔτϊʔυʹLXC ͷ Go όΠϯσΟϯάΛͬͯ liblxc ܦ༝ͰίϯςφΛૢ࡞Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 19 / 29
LXDLXD ͷىಈlxd ͷىಈ $ mkdir -p /var/lib/lxd$ lxd & ެࣜจॻҰൠϢʔβͰىಈ͍ͯ͠Δɻͦͷ߹ඇಛݖίϯςφ͚ͷ४උ͕ඞཁsubuid, subgid ͷઃఆchown $USER:$USER /var/lib/lxdՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 20 / 29
LXDϩʔΧϧͷίϯςφͷૢ࡞ίϯςφ࡞ɺىಈ $ lxc init ubuntu test01 (ίϯςφͷ࡞ɺΠϝʔδΛऔಘͯ͠ίϯςφ࡞)$ lxc list (Ұཡ)test01$ lxc start test01 (ίϯςφىಈ) ίϯςφͰίϚϯυͷ࣮ߦ $ lxc exec test01 -- /bin/uname -aLinux test01 3.19.0-plamo64-karma #2 SMP PREEMPT Mon Feb 9 16:13:40 JST 2015 x86_ Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 21 / 29
LXDϦϞʔτ͔Βͷૢ࡞Λड͚͚Δ࣌ͷ LXD ͷىಈlxd ͷىಈ $ lxd --tcp=10.200.200.200:8443 &$ lxc config set pasword (ύεϫʔυͷઃఆ) Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 22 / 29
LXDϦϞʔτͷ LXD ϗετͷૢ࡞Λߦ͏(https://asciinema.org/a/16544)ϦϞʔτϗετͷొ $ lxc remote add lxdhost 10.200.200.200:8443 (10.200.200.200 ͷϗετΛ "lxdhost" ͱ͍͏໊લͰొ)Certificate fingerprint: 8c ea 8b a3 a0 64 dd 9f 5e fb 28 dd f6 89 c6 58 7c 8b e0 ab 62 c1 14 f5 50 dc 44 16ok (y/n)? yAdmin password for lxdhost: ("lxdhost" Ͱઃఆͨ͠ύεϫʔυΛೖΕΔ)Client certificate stored at server: lxdhost ϦϞʔτͷίϯςφͷૢ࡞ $ lxc init ubuntu lxdhost:test01 ("test01" ίϯςφΛ "lxdhost" ʹ࡞)$ lxc list lxdhost: ("lxdhost" ͷίϯςφҰཡ)test01$ lxc start lxdhost:test01 ("lxdhost"্ͷ"test01"ίϯςφͷىಈ)$ lxc exec lxdhost:test01 -- /bin/uname -a ("lxdhost"্ͷ"test01"ίϯςφͰ uname ίϚϯυ࣮ߦ)Linux test01 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 23 / 29
ࠓͷ༰LXCFSLXC 1.1LXDͦͷଞՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 24 / 29
ͦͷଞެࣜϖʔδ https://linuxcontainers.org ϦχϡʔΞϧຊޠϖʔδશʹӳޠϖʔδʹਵ (ͯ͠ΔͭΓ w)ͷϩΰϚʔΫ (?)Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 25 / 29
·ͱΊLXCFSLXC 1.1LXDͦͷଞՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 26 / 29
·ͱΊLXC 1.0.0 ϦϦʔε͔Β 1 ɺࡉ͔͍ͱ͜ΖͰ͍উख͕ྑ͘ͳͬͨΓɺ༷ʑͳڥͰ͖ͪ͘͠Μͱಈ͘Α͏ʹͳͬͨײ͡LXD ָ͠ΈՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 27 / 29
ڠྗऀืूڠྗऀืूதɻಛʹϨϏϡʔman pages ༁linuxcontainers.org ༁͜ͷษڧձՃ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 28 / 29
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠Ճ౻ହจ ୈ 6 ճίϯςφܕԾԽͷใަձ 2015-02-18 29 / 29