virshの使い方

virshってのでlibvirtdで制御しているVMの操作をすることができるのだけど、いまいち使い方がわからないので、ちょっと試してみることに。

https://help.ubuntu.com/community/KVM/Managing を参考に。

virshの起動

どのハイパーバイザに接続するかで、qemu:///systemを指定する。
でも、デフォルトがqemu:///systemらしいので、通常はvirshのみで起動しても問題なさそう。

kiyotaka@snow:~$ virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

登録済みのVMの表示

listコマンドで、稼働中のVMを表示する。

virsh # list
 Id Name                 State
                                                                  • -
3 lime running

--all を指定すると、稼働していないものも表示される。

virsh # list --all
 Id Name                 State
                                                                  • -
- lime shut off virsh # list Id Name State
                                                                  • -

--inactiveを指定すると、稼働していないものだけ表示される。

virsh # list --inactive
 Id Name                 State
                                                                  • -
- lime shut off

VMの情報を確認・登録・削除

virsh list --all で表示されるVMは、libvirtdに登録されているものだけになるらしい。
登録されている内容について確認する場合は、virsh dumpxmlコマンドで確認できる。

virsh # dumpxml lime
<domain type='kvm'>
  <name>lime</name>
  <uuid>06b0b8cc-6a90-96bc-e3eb-c97c6b7a9e50</uuid>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <source file='/root/lime/disk0.qcow2'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <interface type='bridge'>
      <mac address='52:54:00:64:e2:dc'/>
      <source bridge='br0'/>
      <target dev='vnet1'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' listen='127.0.0.1'/>
  </devices>
</domain>
VMの情報を削除する
virsh # undefine lime
Domain lime has been undefined

virsh # list --all
 Id Name                 State
                                                                  • -

なくなった。

/etc/libvirt/qemu/lime.xml に上の内容書いてたはずだったので、それを編集して登録し直そうとしたが、undefineしたときに、lime.xmlがなくなったみたい。

dumpxmlしたときの内容でlime.xmlを作成し直すことにする。
その時に、HDDイメージの場所をついでに変更する。

lime.xmlの内容を下記の様に、/home/kvm配下にディスクイメージの指定を書き直しておく。

    
      
      
    

もちろん、ディスクイメージの場所も、/root配下から指定の場所にmvしておく。

virsh # define /etc/libvirt/qemu/lime.xml
Domain lime defined from /etc/libvirt/qemu/lime.xml

virsh # list --all
 Id Name                 State
                                                                  • -
- lime shut off virsh # start lime Domain lime started virsh # list Id Name State
                                                                  • -
4 lime running

ちゃんと起動できました。

サスペンドとレジューム

サスペンドします。

virsh # suspend lime
Domain lime suspended

virsh # list
 Id Name                 State
                                                                  • -
4 lime paused

レジューム

virsh # resume lime
Domain lime resumed

virsh # list
 Id Name                 State
                                                                  • -
4 lime running