3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LXC 1.0: 問題の解決方法とデバッグ [10/10]

Posted at

この文書について

この文書は、連載記事「LXC 1.0: Blog post series」の一つである以下の記事を翻訳したものです。連載の目次や注意点はこちらを参照してください。

この文書のライセンスは原文と同じく、Creative Commons BY-NC-SA 2.5のもとに提供されています。

CC-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を持っています:

リアルタイムに議論をしたいのなら、#lxcontainers on irc.freenode.netで、多くのLXCの利用者や開発者に出会えるでしょう。

最後に

これが、LXC 1.0がリリースされる前の最後の投稿です。現在、rc3で今日の夜遅くにでもrc4がやってくるでしょう。最終的なリリーススケジュールは明日の午後か木曜の朝になる予定です。

皆さんがこの連載記事を楽しみ、LXC 1.0のデプロイの便利なリファレンスになることを望んでいます。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?