タグ

ブックマーク / tenforward.hatenablog.com (15)

  • cgroup なのか cgroups なのか - TenForward

    割とどーでもいい話(でも気になってた人多いはずw) 以前、第4回のコンテナ勉強会でも質問が出たのですが、cgroup/cgroups という機能の正式な名称は cgroup なのか cgroups なのか、というのはよくわかりませんでした。 私は、英語って単数・複数をきちんと使い分けるし、cgroup は複数のサブシステム・コントローラが存在するので、海外の人は "cgroups" と複数形で使うんだろうなあと思ってました。機能自体を指しているのか、コントローラ群を含めて指しているのかって、曖昧な文脈も多いですし。 しかし、この論争にもついにピリオドが打たれました。カーネル付属文書の cgroup-v2.txt をご覧ください。 "cgroup" stands for "control group" and is never capitalized. The singular form i

    cgroup なのか cgroups なのか - TenForward
  • 4.5 カーネルで stable となった cgroup の単一階層構造 cgroup v2 の io コントローラ - TenForward

    Control Group v2 以前も少し紹介していましたし、連載でも少し触れましたが、今広く (?) 使われている cgroup は色々問題があって、単一階層構造の cgroup が開発されていました。この辺りは Linux 3.16 から試せる cgroup の単一階層構造 (1) - TenForwardの日記 Linux 3.16 から試せる cgroup の単一階層構造 (2) - TenForwardの日記 で紹介しました。 以前は開発中の機能だったため、マウントするときに "__DEVEL__sane_behavior" などというふざけたオプションが必要でした。(^^) この後も順調に (?) 開発はすすみ、4.5 カーネルのリリースでついにこの機能が stable となったようで、"__DEVEL__" というプレフィックスも不要になりましたし、正式な機能で「まともなふ

    4.5 カーネルで stable となった cgroup の単一階層構造 cgroup v2 の io コントローラ - TenForward
  • シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい (1) - TenForward

    これはだいぶ前に書いたエントリです。MINCS作者による最新の解説があるのでそちらもご覧ください。 (2016-11-21追記) コンテナは使いたいけど、たくさんコンテナを起動すると結局それぞれのコンテナに対するセキュリティアップデートなどのメンテナンスは必要だし、コンテナ内独自のプログラムやライブラリ以外はホストと共有したいよね、って話が出てきたりします。みんな考えることは同じで、bind mount を使えば良いよね、って話はでてきてました。 こないだもブログで紹介した kazuho さんの jailing 私が LXC でも結構簡単にできるよ、っていう提案を兼ねて作った lxc-bind こないだのLinuxConでもDockerでたくさんのオプションを並べて、色々工夫して bind mount を使ってやってる発表もありました (Using Docker for existing

    シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい (1) - TenForward
  • 4.0.2 kernel と非特権コンテナ - TenForward

    (2015-06-11 追記) 以下の問題は 4.0.5 カーネルで解決しています。 手元 (Plamo 5.3) では 4.0.2 カーネルで LXC の非特権コンテナを起動するとカーネルが固まります。その時のログは以下です (netconsole 経由で取ったので見にくい)。 https://gist.github.com/tenforward/01670c4ee77f0bf4d44d 4.0.2 でマージされたコミットのうち、以下を revert するとお亡くなりにはならなくなります (副作用は知りません)。 あまり関係する人はいないかもしれませんが、非特権コンテナを使う場合はとりあえず 4.0.1 までを使っておくのが良さそうです。 mnt: Honor MNT_LOCKED when detaching mounts mnt: Fix the error check in __d

    4.0.2 kernel と非特権コンテナ - TenForward
  • docker の CPU 隔離性 - TenForward

    某所で話題になってたので。3.17.1 kernel で試してます (Plamo Linux 5.2) docker でも何でもなくて単に Linux kernel の cgroup がちゃんと動いてるかって話なんですが。:-) (2014-10-29 追記) なんか docker ってキーワード入ってるからかわかりませんが、多数アクセスいただいていますね。CFS Throttle の機能自体はもう 3 年近く前に試してちゃんと動いていたテストそのままです。dockerを使って試してるか、直接 cgroup と普通のプロセスで試してるかの違い。gihyo.jp での連載でもそのまま載ってます :-) Linux 3.2 の CFS bandwidth control (2) - TenForwardの日記 第4回 Linuxカーネルのコンテナ機能[3] ─cgroupとは?(その2):LX

    docker の CPU 隔離性 - TenForward
  • cgroup の devices サブシステムのどうでも良いトリヴィア - TenForward

    lxc-checkpoint が動かないのでデバッグしたり、パッチ書いたり、リジェクトされたりしてる時に気づいたどうでも良い知識。 cgroup の devices サブシステムは デバイスタイプ デバイスノード番号 アクセス権 をスペース区切りした文字列を devices.allow, devices.deny に書き込みます。 # cat devices.list # echo 'c 1:7 rwm' > devices.allow # cat devices.list c 1:7 rwmこれは普通にやった場合。 この書き込む文字列の後に何か文字列があっても無視されます。 # cat devices.list # echo 'c 1:7 rwm # This is Test.' > devices.allow # cat devices.list c 1:7 rwmLXCの設定ファイル

    cgroup の devices サブシステムのどうでも良いトリヴィア - TenForward
  • setns を UTS Namespace をネタにおっかける - TenForward

    Linux:実行中プロセスの名前空間切り替え - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ masami256 さんのコンテナシリーズ、勉強になりますね。Linux カーネルの Namespace (名前空間) を扱うシステムコールのうち、既存のプロセスの Namespace を制御する unshare(2) と setns(2) の処理の解説ですね。 このエントリを元に私も setns を追ってみました。 kernel/nsproxy.c に setns が定義されています。 SYSCALL_DEFINE2(setns, int, fd, int, nstype) { const struct proc_ns_operations *ops; struct task_struct *tsk = current; struct nsproxy *new_nsproxy; stru

    setns を UTS Namespace をネタにおっかける - TenForward
  • UTS Namespace (名前空間) を追っかける - TenForward

    コンテナが盛り上がってるので、エラい人たちが結構色々な情報を色々な所に書いてくれるので、簡単に知識が手に入るようになってきましたね。というわけで、私のようななんちゃってな人でも気軽に処理を追っかけることができるようになってきましたから、久々にカーネルのコードを読んでみました、というメモ。(ちゃんとした知識を手に入れるにはもっと偉い人の資料を参考に自分でおっかけてみましょう :-) Namespace の中でも一番単純そうな UTS Namespace。そうです、あのホスト名とかドメイン名とか、あの辺りを Namespace ごとに保持できるシンプルな Namespace です。これならシロートな私でも大丈夫そう。 nsproxy タスクごとの Namespace を保持するために、プロセスなんかの色々な情報を保持する task_struct 構造体というのが include/linux/s

    UTS Namespace (名前空間) を追っかける - TenForward
  • overlayfs と LXC 非特権コンテナの snapshot によるクローン - TenForward

    kernel に入るぞ、と言われつつ入ってない overlayfs。いつですかね? なかなか凝ったことを試す時間が取れない今日このごろ、非常に薄い内容のエントリです。 (2014-05-15 追記) LXC では、ファイルシステムの機能を利用した snapshot による clone をサポートしています。しかし、非特権コンテナで clone を作成する場合、どうしても通常の rsync による clone になってしまいます。しかし、Ubuntu のカーネルだと overlayfs が利用可能で、非特権コンテナの場合でも使用可能です。一般ユーザが overlayfs の操作が可能ということでなく、User Namespace 内の root の権限で overlayfs のマウントが可能になっているためです。(追記終わり) (2014-10-08 追記) 今はオプションで "workdi

    overlayfs と LXC 非特権コンテナの snapshot によるクローン - TenForward
  • 技術評論社さんのサイトでLXCの連載をはじめました - TenForward

    LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術:連載|gihyo.jp … 技術評論社 技術評論社のサイトで LXC を題材にしたコンテナの記事の連載をはじめました。よろしくお願いいたします。このようなチャンスをくださった技術評論社さんありがとうございます。 現時点での構想は、LXCの入門記事の連載ということで、普段コンテナ関係の勉強会で話しているコンテナ入門のお話を更に入門寄りに振って書く予定です。既に LXC をバリバリお使いの方や、勉強会で私の話を聞いてくださっている方は既知のことが中心になるかと思いますので、そういう方は記事読んでないで、もっととんがった知識をガンガン付けていただいて、私に教えてくださればうれしいです (^_^) 現在、Immutable Infrastructure などのキーワードで一躍コンテナに注目が集まるようになりましたが、ほとんどはDocker

    技術評論社さんのサイトでLXCの連載をはじめました - TenForward
  • Ubuntu 14.04 LTS での非特権コンテナ - TenForward

    (2014-07-06 追記してます) (2014-05-11 追記してます) (2014-04-24 追記してます) ついにリリースされましたね.Ubuntu の新しい LTS.これを目標に LXC 1.0 の開発は進められてきたわけで,きっと特に苦労する事もなく一般ユーザでのコンテナの作成と実行が出来るのだろうなあと思って試してみました.結論から言うと出来ました.なので特にこのブログエントリを読む事なく作る事が出来るのでお急ぎの方はこの後読まずにさっさとやってしまいましょう :-D 過去,Ubuntu 上で 一般ユーザでの lxc コンテナの実行 - TenForwardの日記 LXCの非特権コンテナ 〜 Ubuntu Trusty 編 - TenForwardの日記 と 2 度ほどためしていますが,徐々に簡単になって,ついに完成型になりました. まず Ubuntu 14.04 LTS

    Ubuntu 14.04 LTS での非特権コンテナ - TenForward
  • (改訂版) docker 0.9 で導入された libcontainer の Namespace 関連の処理 - TenForward

    先に書いたエントリ はそれなりにアクセスがあるようですが,実は結構デタラメで間違いがあることに気づいたので,改めて調べて書きなおしてみました.相変わらず Go シロートですので,このエントリも間違ってる可能性はありますので,興味のある方はご自分でお調べになることをおすすめします. というわけで... docker 0.9 がリリースされて,なんかすごいことになっていますね.その辺りの詳しくは Docker 0.9リリースドキュメント日語訳: Execution driversとlibcontainer導入 - Happy New World をどうぞ. さて,このバージョンの目玉のドライバさえ書けばどんなコンテナツール・ライブラリでも docker 動かせるよ,ってのは置いといて,特定のツール・ライブラリに依存しない libcontainer というものが導入されてます.ここでどうコンテ

    (改訂版) docker 0.9 で導入された libcontainer の Namespace 関連の処理 - TenForward
  • Linux 3.14 で net_cls cgroup に追加された netfilter 対応 - TenForward

    久々に cgroup 大物新機能に沸いてます! (久々じゃないかw) kernelnewbies の 3.14 ページ に書いてない気がするので危うく見逃す所でした.早速試してみました (カーネル付属文書なぞっただけ :p) 対応するコミットはこちら. netfilter: x_tables: lightweight process control group matching まずは準備をします.追加されたばかりの機能なので準備には時間かかりますよ. :-) まずは NETFILTER_XT_MATCH_CGROUP を "y" か "m" にして 3.14 カーネルを作製します iptables も最新のリリース版 1.4.21 では cgroup 対応機能が実装されていないので git clone して,"next-3.14" ブランチで make します (master でも OK

    Linux 3.14 で net_cls cgroup に追加された netfilter 対応 - TenForward
  • 『第3回 コンテナ型仮想化の情報交換会@大阪』を開催し『Linuxコンテナ入門』というお題で発表してきました - TenForward

    4/12 に大阪でコンテナに関する仮想化の勉強会を開催し,『Linux コンテナ入門』というお題で発表してきました. 前日はDocker Meetup Tokyo #2で,最終の新幹線に飛び乗り,翌日午前から準備をして (前日,私がいない間に準備してくれて助かった!!),午後から勉強会ということで,アラフィフ予備軍のおっさんにはちょっと強行軍だったのですが,年間を通じて最もコンテナ分の濃い二日間になり,非常に楽しく,ためになる時間を過ごすことができました. この勉強会はは広く「コンテナに少しでもかすれば良い」という考えで開催しています.私がどちらかというとベースとなる仕組みの勉強ばかりなので,実際の応用事例とかも聞きたい,自分が使ってないコンテナ技術についても聞きたいと思っているからです.自分が聞きたい話を聞くために勉強会を開く,という考えですね.プログラムについても仕組みから徐々に応用に

    『第3回 コンテナ型仮想化の情報交換会@大阪』を開催し『Linuxコンテナ入門』というお題で発表してきました - TenForward
  • lxc 『子の親殺し』とコンテナ内での cgroupfs のマウント - TenForward

    『第2回 コンテナ型仮想化の情報交換会@東京』 では時間の関係でお話できなかったことで一番気になっていることの補足を. @m_bird: #lxcjp 「コンテナからホストのシャットダウンができる」僕はこれを「子の親殺し」と呼んでいる。 2013-10-05 13:40:04 via YoruFukurou そう! 『子の親殺し』(© @m_bird さん) !! 「コンテナからホストのシャットダウンができる」という件,Linux カーネルから見ると,User Namespace で解決という話ですが,現実問題,XFS への User Namespace の実装が 3.12 になりそうなので,現状のディストリビューションではこの問題がカーネル的には解決できません. 上記 Tweet の Reply に少し書いてるのですが,その辺りを少し. reboot() システムコール コンテナからホス

    lxc 『子の親殺し』とコンテナ内での cgroupfs のマウント - TenForward
  • 1