この文書について
この文書は、連載記事「LXC 1.0: Blog post series」の一つである以下の記事を翻訳したものです。連載の目次や注意点はこちらを参照してください。
この文書のライセンスは原文と同じく、Creative Commons BY-NC-SA 2.5のもとに提供されています。
ログの取得
ほとんどのLXCのコマンドには、次の二つのオプションが存在します:
-
-o
、--logfile=FILE
: ログファイルの場所(初期値は標準エラー出力) -
-l
、--logpriority=LEVEL
: ログのプライオリティ(初期値はERROR)
ログプライオリティの取りうる値は次のとおりです:
- FATAL
- ALERT
- CRIT
- ERROR
- WARN
- NOTICE
- INFO
- DEBUG
- TRACE
FATAL、ALERT、CRITは現時点ではほとんど使われていません。ERRORやそれ以外は、TRACEを除いて一般的です。すべてのログを表示したい場合は、ログプライオリティをTRACEに設定してください。
コンテナーの設定ファイルに、上記二つと同じ設定を行えます:
- lxc.logfile
- lxc.loglevel
動作はコマンドのそれとまったく同じです。ただし、コマンドラインオプションが渡されていたら、設定ファイルの値はすべて無視され、利用者によって指定された値で上書きされます。
LXCに対して不具合報告をするときは、ログプライオリティを少なくともDEBUGに設定したコンテナーのログを添付すると良いでしょう。
APIのデバッグ
APIを使用した時に発生する問題をデバッグするなら、liblxcを直接使用したC言語で、問題の部分のコードを再実装し試してみると良いでしょう。これによりバインディングに起因する部分を排除し、よりクリーンなスタックトレースを取得でき、不具合報告が簡単になります。
コンテナーで set_config_item
を使って、lxc.loglevel
をDEBUGに設定すると、LXCが行っていることをログに記録できるので便利です。
テスト
コード上の問題をより深く追求する前に、マシン上のLXC自身が正しく動作しているか確認しておきましょう。
まずは lxc-checkconfig
でカーネルの機能で足りないものがないか確認します。問題なければ、テストコードをインストール(もしくはビルド)します。Ubuntuなら、「lxc-tests」パッケージとして提供されています。これらのテストの多くは、Ubuntu上で動くことを想定しています(パッチは歓迎します)が、lxc-ubuntuテンプレートと互換性のあるディストリビューションなら正しく動くでしょう。
lxc-test-*
のそれぞれのバイナリーを管理者権限で実行し、何か問題がないか確認します。注意点として、このテストは失敗時に余計なゴミを残す可能性があります。もしそうなったら、次のテストに移行する前に、テストを失敗せる原因ともなりうるその残骸物のコンテナーを削除するようにしてください。
不具合の報告
LXCのメインのバグトラッカーのアドレス: https://github.com/lxc/lxc/issues
不具合をディストリビューションに報告することもありかもしれません(アップストリームにも報告した上で、二つを関連付けることが好まれます)。例えばUbuntuなら、LXCの不具合は次のアドレスが使われます: https://bugs.launchpad.net/ubuntu/+source/lxc
すでにその不具合について調査済みであるのなら、メーリングリストに直接報告しても良いでしょう(次項を確認してください)。
パッチの送付
私たちはいつでも手伝いを歓迎していますし、嬉しいことにLXCには活発な開発コミュニティが存在します(LXC 1.0には60名以上の貢献者がいます)。貢献についてそれほど多くのルールは決めていません。ただ、あなたの貢献は適切なライセンスに変更され、あなたが私達に送ったコードのコピーライトはあなた自身になる(コミットのSigned-off-by行にそれが示される)ことをお願いするだけです。
ライセンスに関して、ライブラリ(liblxc)とそのバインディングに関するものはLGPLv2.1+かそれと互換のライセンスである必要があり、それ以上の制限はつけてはいけません。単体のバイナリやスクリプトはLGPLv2.1+(プロジェクトの標準)かGPLv2のいずれかになります。よくわからなければ、LXCに新しいファイルを追加するならLGPLv2.1+を使うのが安全でしょう。
パッチの送信方法には次の二種類が存在します:
-
lxc-devel@lists.linuxcontainers.org に埋め込む(
git send-email
かそれに類するものを使ってください) - githubのPull Requestを使う(.patchのURLを取得した上で、メールの時と同じように扱います)
私たちに連絡をとる
LXCチームに連絡する主な方法は、メーリングリストを使うことです。ひとつはLXC開発者向けの、もうひとつはLXCの利用者の質問向けのMLを持っています:
- lxc-devel: https://lists.linuxcontainers.org/listinfo/lxc-devel
- lxc-users: https://lists.linuxcontainers.org/listinfo/lxc-users
リアルタイムに議論をしたいのなら、#lxcontainers on irc.freenode.netで、多くのLXCの利用者や開発者に出会えるでしょう。
最後に
これが、LXC 1.0がリリースされる前の最後の投稿です。現在、rc3で今日の夜遅くにでもrc4がやってくるでしょう。最終的なリリーススケジュールは明日の午後か木曜の朝になる予定です。
皆さんがこの連載記事を楽しみ、LXC 1.0のデプロイの便利なリファレンスになることを望んでいます。