分12今回は,cgroupを操作したり,コンテナ特有の値の/proc以下のファイルを提供したりするLXC用のソフトウェアを紹介したいと思います。LXCでは設定ファイル内でcgroupの設定を行い,コンテナに対するリソース制限を行います。この場合,cgroup操作はコンテナの外で行われますので,必ずしもコンテナ内でcgroupを操作する必要はありません。LXCではコンテナ内でさらにコンテナを起動する「コンテナのネスト」をサポートしています。この場合,コンテナ内で起動するコンテナに対してリソース制限を行うために,コンテナ内でcgroupを操作する必要がでてきます。コンテナ内でcgroupfsツリーを操作しなければなりません。LXCでは,最初に第11回で説明したlxc.mount.autoという設定を使用して,ホストのcgroupfsをバインドマウントすることにより,コンテナ内にcgroupfsを提供しました。LXCは一般ユーザで起動する非特権コンテナをサポートしています。非特権コンテナの場合,ホスト上にマウントされているcgroupfsを直接操作することになるlxc.mount.autoは使用できません。14.04LTS)では,cgmanagerというソフトウェアを使い,コンテナ内からcgroupの操作を行いました。その後,cgmanagerでは解決できない問題が出てきたので,2015年初頭からLXCFSというソフトウェアの開発がスタートしました。1.1リリース時点ではcgmanagerとともに,LXCFSの使用もサポートされました。1.1とLXCFSの組み合わせでコンテナ内でcgroup操作が行えるようになっていました。それでは,このcgmanagerとLXCFSについてもう少し詳しく見ていきましょう。1.0とともにインストールされました。この連載でも第10回で簡単に紹介しました。cgroupはファイルシステムをマウントし,ファイルに値を書き込むことで簡単に利用できます。この頃から直接cgroupfsに存在するファイルを操作するのではなく,cgroupを管理する仕組みを通してcgroupを管理すべきという議論がなされるようになっていました。cgmanagerは,D-Busを経由でcgroupに関する操作を受け付けcgroupを操作するデーモンで,この流れにも沿った実装でした。cgmanagerが独自のマウント名前空間を作成し,その中でcgroupfsをマウントし,受け付けたコマンドに沿った操作をcgmanagerで行います。LXCコンテナは,cgmanager経由でcgroupに関わる操作を行うため,ホストで直接cgroupfsをマウントしていなくてもコンテナ向けのcgroupに関わる操作が行えました。cgmanagerを使うことにより,コンテナ内でLXCを使ってコンテナを作成し,起動できるようになりました。コンテナ内ではcgmanagerへのプロキシが起動し,コンテナ内からはプロキシに対してコマンドを送って,ホスト上で起動しているcgmanagerへコマンドが伝達できました。この機能を使って,コンテナ内でも自身に関わるcgroupが操作でき,コンテナ内でcgroupを使用する必要があるLXCコンテナが起動できました。ところがコンテナの利用が進み,コンテナを取り巻く環境が変化するとともに,cgmanagerでは対応できない問題が生じてきました。その問題のうち最も大きな問題は,systemdが広く使われるようになったことです。LXCをインストールする最も主要なディストリビューションであるUbuntuでもinitがUpstartからsystemdに変更されましたので,cgmanagerで対応できない問題はLXCにおいても大きな問題になりました。systemdはcgroupを積極的に活用するため,initがsystemdである場合,cgroupfsがマウントされていることは必須です。Ubuntuをはじめとして,ほとんどのディストリビューションが採用したsystemdがinitとして採用されている場合,コンテナ内でも,通常のcgroupfsと同様のインターフェースを利用してcgroupを操作できることが必須となり,cgmanagerでは対応できなくなりました。systemdは起動してくるプログラムをcgroupを用いて管理するため,cgroupが頻繁に利用されます。このように頻繁にcgroupを参照するようなソフトウェアから使用する場合,D-Busという比較的遅いインターフェースを使っていると,パフォーマンス的にも問題となります。そこで,LXCプロジェクトではcgmanagerに代わってこの後紹介するLXCFSが開発されました。これに伴い,cgmanagerはこれまでにリリースされた,cgmanagerがインストールされる環境をサポートするために保守のみが続けられるようになります。今後,cgmanagerが必要なレガシーな環境がなくなると,開発は終了となるでしょう。LXCFS前述のようなcgmanagerが持つ問題を解決するとともに,別に懸案となっていた問題を解決するために開発されたソフトウェアがLXCFSです。LXCFSはふたつの機能を持っています。コンテナ向けのcgroupfsツリーの提供コンテナ向けの/proc以下のファイルの提供LXCFSはホスト上で実行されます。ホスト上でどのようにLXCFSが実行され,FUSEファイルシステムがマウントされているかを見てみましょう。14.04LTSに,LXCのオフィシャルなPPAから最新版LTSのLXC,LXCFSをインストールした環境で試しています。(cgmanagerは削除する)LXCFSがどのように起動しているかを確認してみましょう。0以上のように/var/lib/lxcfsにマウントされています。uptime以上のように/var/lib/lxcfs以下にはcgroupとprocというふたつのディレクトリが存在し,cgroup以下は各サブシステムごとのディレクトリと,systemd用のディレクトリが存在します。proc以下は,LXCFSによって仮想化されるファイルが存在します。以上のように起動したLXCFSが,LXCからどのように利用されるのかを簡単に見ておきましょう。lxcfsパッケージをインストールすると,LXCコンテナから共通して読み込まれる設定ファイルとして/usr/share/lxc/config/common.conf.d/00-lxcfs.confというファイルがインストールされます。このファイルには第23回と第24回で説明したフックが設定されています。/usr/share/lxcfs/lxc.reboot.hookこのうちコンテナ起動時に読み込まれる/usr/share/lxcfs/lxc.mount.hookを見てみると,/var/lib/lxcfs以下にマウントされたlxcfsをコンテナにバインドマウントしていることがわかります。:(略)以上で挙げた部分は/proc以下でLXCFSが対象とするファイルをバインドマウントしている部分ですが,同様にcgroupをバインドマウントする処理も記述されています。それでは,先に紹介したふたつの機能を少し詳しく見ていきましょう。cgmanager著者プロフィール加藤泰文(かとうやすふみ)2009年頃にLinuxカーネルのcgroup機能に興味を持って以来,Linuxのコンテナ関連の最新情報を追っかけたり,コンテナの勉強会を開いたりして勉強しています。英語力のない自分用にLXCのmanページを日本語訳していたところ,あっさり本家にマージされてしまい,それ以来日本語訳のパッチを送り続けています。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。