Lxc cf201207-presen

1,266
-1

Published on

再lxcの話

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,266
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Lxc cf201207-presen

  1. 1. LXC 再入門。まえだこうへい mkouhei@debian.or.jp a.k.a. mkouhei 2012 年 7 月 26 日 . . . . . .
  2. 2. 再入門? . . . . . .
  3. 3. 2009 年 12 月の東京エリア Debian 勉強会のネタの焼き直しです . . . . . .
  4. 4. 自己紹介 まえだこうへい ▶ Debian JP Project Leader(2011, 2012) / CouchDB JP ▶ 勤務先:渋谷の会社 ▶ Python 関連の Debian パッケージのメンテナンスなど ▶ 職場で使用している OpenStack の構築・運用で必要な、 周辺ツールの開発、構築とか ▶ 執筆 ▶ Git によるバージョン管理 (オーム社) ▶ KVM 徹底入門 (翔泳社) ▶ ゆったリラックス! CouchDB があるところ (@IT) #5 ▶ 知って見るみる KVM(@IT) ▶ 今日は (一応)lxc JP として呼ばれたようです . . . . . .
  5. 5. 宣伝。Google group で lxc JP 1流量の少ない緩いやりとりをしてます:) 1 https://groups.google.com/group/lxc-jp/about?hl=ja . . . . . .
  6. 6. LXC とは? ▶ Linux Containers のこと ▶ コンテナを稼働させるホスト自体のカーネルの機能 ▶ LXC を管理するための lxc-* コマンドラインツール ▶ LXC で使えるコンテナ ▶ システムコンテナ:いわゆる OS の仮想化 ▶ アプリケーションコンテナ:特定のプロセスの分離 ▶ para,full-virtualization とは違うのでホストカーネル上で 動くものしかコンテナでは使えない ▶ 他のコンテナ技術:OpenVZ, Linux-VServer,Solaris Containers, FreeBSD jail . . . . . .
  7. 7. 導入 . . . . . .
  8. 8. パッケージインストール libvirt を使わなければ Squeeze でも OK $ sudo apt-get install lxc iproute debootstrap . . . . . .
  9. 9. kernel option 確認 $ lxc-checkconfig Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-3.0.0-1-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration . . . . . .
  10. 10. 足りなければ、カーネルリビルドしる . . . . . .
  11. 11. 確認する 即席コンテナで稼働確認 $ sudo lxc-execute -n hoge -f -- /bin/bash # lxc-info -n hoge state: RUNNING pid: 4520 $ sudo lxc-stop -n hoge <-別のシェルで実行。 . . . . . .
  12. 12. システムコンテナを使う 1. ネットワークの設定 2. cgroup ファイルシステムのマウント 3. コンテナの rootfs 作成 4. コンテナのファイルの微調整 5. コンテナの起動 簡単に Debian 環境を増やせて、すぐ起動できるのが良いで すね! . . . . . .
  13. 13. lxc のライフサイクル 他の仮想マシンのライフサイクルと大差ない。 lxc-freeze FROZEN RUNNING lxc-unfreeze lxc-stop error lxc-start STARTING ABORTING lxc-create STOPPING STOPPED lxc-destroy . . . . . .
  14. 14. リソースの管理 ▶ cgroup(Control Group) を使う ▶ UI として lxc-cgroup コマンドが用意されている ▶ cgroup ファイルシステム経由でリソース管理する cgroup /sys/fs/cgroup cgroup defaults 0 0 ▶ システムコンテナの rootfs はどこでも良い。Debian で は/var/lib/lxc 以下に置くのがデフォルト ▶ Debian では/etc/default/grub に下記を設定し、 update-grub2 の実行が必要。2 GRUB_CMDLINE_LINUX="cgroup_enable=memory" 2 http://wiki.debian.org/LXC . . . . . .
  15. 15. libvirt の話 ▶ Squeeze では使えない。 ▶ Wheezy/Sid の libvirt(0.9.12) では一部機能制限があるが 使える。 ▶ 一部:shutdown, reset, reboot ができない ▶ Upstream の 7/12 のコミット 97d7f02 で shutdown が一 部制限付きで Fix されたので、0.9.14 からは使えるか も。3 3 Wheezy では使えない、ということですね…. . . . . .
  16. 16. domain XML のサンプル (test.xml) <domain type=’lxc’> <name>test</name> <memory>500000</memory> <os> <type>exe</type> <init>/sbin/init</init> </os> <vcpu>1</vcpu> <clock offset=’utc’/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/lib/libvirt/libvirt_lxc</emulator> <filesystem type=’mount’> <source dir=’/var/lib/lxc/debian/rootfs’/> <target dir=’/’/> </filesystem> <interface type=’network’> <source network=’default’/> </interface> <console type=’pty’ /> </devices> </domain> . . . . . .
  17. 17. 起動と確認 $ sudo virsh --connect net-start default $ sudo virsh --connect lxc:/// define text.xml $ sudo virsh --connect lxc:/// start test $ sudo virsh --connect lxc:/// list Id Name State ---------------------------------- 5579 test running . . . . . .
  18. 18. 私の使い方 . . . . . .
  19. 19. 現状 ▶ 常用としては、さくらの VPS で Debian Squeeze でカス タムビルドカーネル& lxc パッケージを使用 ▶ ネットワークの設定は/etc/network/if-up.d/に NIC およ びブリッジの再設定を行うスクリプトを実行させて いる . . . . . .
  20. 20. 私の悩み ▶ lxc コマンド群は、LXC を可動するホスト上でしか使え ない ▶ 複数ホストノードを扱う場合は不便 ▶ libvirt を使いたいが、XML 用意するのは面倒 ▶ VirtManager とか使いたくない。コマンドラインでやり たい . . . . . .
  21. 21. そこで、ツール作った。 . . . . . .
  22. 22. 開発の動機 ▶ 7/6 に@yssk22 に発表依頼されたので、2 年半前のネタ を焼き直しすることにした4 ▶ 実は 7/28 の pyfes で Git ネタ発表内容にもどうしようか 悩んでいた ▶ libvirt 経由で LXC 管理なら OpenStack も、とか一瞬考 えたが、妻子持ちの個人環境としては面倒 4 https://twitter.com/yssk22/status/221236629631803394. . . . . .
  23. 23. じゃあ、LXC と Git を両方かねてツール作るか! . . . . . .
  24. 24. 名前は iori「庵」 ということで作ってみた。 https://github.com/mkouhei/iori . . . . . .
  25. 25. バグ出しrequest-pullお待ちしてます。 :) . . . . . .

×