TenForward

技術ブログ。はてなダイアリーから移転しました

lxc コンテナの config から libvirt 用の定義を生成

libvirt 1.2.2 の新機能に

bhyve: add a basic driver (Roman Bogorodskiy),
add LXC from native conversion tool (Cédric Bosdonnat),
vbox: add support for v4.2.20+ and v4.3.4+ (Jean-Baptiste Rouault),
Introduce Libvirt Wireshark dissector (Yuto KAWAMURA)

http://libvirt.org/news.html

おぉ! (太字の部分)

試してみました.まず lxc-create を使ってコンテナを作ります.

# lxc-create -t download -n ct01 -- --dist ubuntu --release trusty --arch amd64

出来上がった後に

# virsh -c lxc:/// domxml-from-native lxc-tools /var/lib/lxc/ct01/config
<domain type='lxc'>
  <name>ct01</name>
  <uuid>5b31eef4-68e5-4089-8269-86ae14e4ec58</uuid>
  <memory unit='KiB'>65536</memory>
  <currentMemory unit='KiB'>0</currentMemory>
  <vcpu placement='static' current='0'>1</vcpu>
  <os>
    <type arch='x86_64'>exe</type>
    <init>/sbin/init</init>
  </os>
  <features>
    <privnet/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <filesystem type='mount' accessmode='passthrough'>
      <source dir='/var/lib/lxc/ct01/rootfs'/>
      <target dir='/'/>
    </filesystem>
  </devices>
</domain>

こんな感じにコンバートして出力してくれます.これをファイルに保存して

# virsh -c lxc:/// define ct01.xml
エラー: ct01.xml からのドメイン定義に失敗しました
エラー: XML error: invalid current number of vCPUs '0'

あら... 上記の vcpu の部分の "current='0'" の部分を削除してみます.こんな感じ.(このエラーは環境依存でしょうか :-)

<vcpu placement='static'>1</vcpu>

再度チャレンジ!

# virsh -c lxc:/// define ct01.xml
ドメイン ct01 が ct01.xml から定義されました
# virsh -c lxc:/// list --all
 Id    名前                           状態
----------------------------------------------------
 -     ct01                           シャットオフ

できました!!早速起動!!

root@enterprise:~# virsh -c lxc:/// start ct01
ドメイン ct01 が起動されました

root@enterprise:~# virsh -c lxc:/// list
 Id    名前                           状態
----------------------------------------------------

してません :-(.

これはコンソール関係の処理の問題のようです (libvirt の lxc ドライバの動きをあまりしらないのでよく分かってませんが...) XML ファイルの の所に以下を追記すると動くようになりました.

 
    /usr/libexec/libvirt_lxc
    
      
      
    
    
      
    
  

太字の部分が追記した所.これは実は virt-manager が作る XML ファイルのパクリです (^_^;)

# virsh -c lxc:/// start ct01
ドメイン ct01 が起動されました

# virsh -c lxc:/// list
 Id    名前                           状態
----------------------------------------------------
 12457 ct01                           実行中

うーん,正直 virt-manager からコンテナの定義を作成したらあっさり起動するので,ちょっと微妙な感じが... (^_^;)

libvirt 分かってないのでツッコミどころ満載かもしれませんので,そういう場合は優しく指摘してくださいね.

(参考)