virshコマンドによる仮想マシンの管理

KVMで仮想マシンを動かすのにkvmコマンドで実行すれば良いのですがvirshコマンドを使うと便利なことが多いので使ってみます。

スポンサーリンク

ゲストマシン用の定義ファイル作成

virshコマンドで仮想マシンを管理するためにはXML形式の定義ファイルが必要になります。よく使う作り方は2種類ほどあります。

virt-installコマンドで作成

準備として、ディスクイメージのファイルインストーラのisoファイルを用意します。ディスクイメージは次のコマンドで作成しておきます。20Gのファイルを作成します。

dd if=/dev/zero of=vm-data01.img bs=1M count=20480

次にパッケージvirtinstをインストールし、virt-installコマンドを実行します。

sudo virt-install \
--name=ubuntu-0 \
--ram=256 \
--vcpus=1 \
--os-type=linux \
--hvm \
--virt-type=kvm \
--file=/var/vmdata/ubuntu-0/vm-data01.img \
--cdrom=/var/vmdata/ubuntu-12.04.1-server-i386.iso \
--vnc \
--vncport=5900 \
--vnclisten=0.0.0.0 \
--network=bridge:br0 \
--keymap=ja

それぞれのオプションは次の通り。

–name=XXXXX
ドメイン名を設定します。virshコマンドではこのドメイン名単位でコマンドを実行します。
–ram=99999
ゲストサーバに割当てるRAMをメガバイト単位で設定します。
–vcpus=99999
ゲストサーバに割当てるCPUの数を設定します。
–os-type=XXXXX
サーバにインストールするOSの種類を設定します。設定可能な値は、windows、unix、other、linuxです。
–hvm
完全に仮想化されたゲストとしてゲストサーバを設定します。
–virt-type=XXXXX
仮想化方法を指定します。設定可能な値は、kvm, qemu、xenです。今回はKVMを使用するのでkvmを設定します。
–file=XXXXX
ディスクイメージとして使用するファイルを設定します。
–cdrom=XXXXX
インストーラのISOファイルの場所を設定します。
–vnc
グラフィカルサポートにVNCを使用する場合に設定します。
–vncport=99999
VNCを使用する場合のポートを設定します、このドメインには5900番ポートを割当てる場合には5900を設定します。
–vnclisten=999.999.999.999
VNCの接続制限を設定します。接続を許可するネットワークを設定します。どのマシンからも接続を許可する場合には、0.0.0.0を設定します。
–network=XXXXX
ゲストサーバの仮想ネットワークインターフェイスを設定します。作成したブリッジ名をbr0とするとbridge:br0と設定します。
–keymap=XXXXX
グラフィカルサポートのキーマップを設定します。何も指定しない場合、キーマップがローカル・キーマップに自動的に設定されます。日本語の場合にはjaを設定します。

作成された定義ファイルをここに置いておきます。ひな形に使うことができるので参考までに。ただし、よくやる失敗があります。qume-imgでフォーマットをqcow2などにしていして作成したイメージファイルを使用場合にvnsなどで確認するOS起動画面で、bootデバイスがないとか怒られてしまうことがあります。その場合には次のようにdriverのtypeを変更します。

【変更前】
<disk type='block' device='cdrom'>
  <driver name='qemu' type='raw'/>
  <source file='/var/vmdata/ubuntu-0/vm-data01.img'/>
  <target dev='hdc' bus='ide'/>
  <address type='drive' controller='0' bus='0' unit='0'/>
</disk>

【変更後】
<disk type='block' device='cdrom'>
  <driver name='qemu' type='qcow2'/>
  <source file='/var/vmdata/ubuntu-0/vm-data01.img'/>
  <target dev='hdc' bus='ide'/>
  <address type='drive' controller='0' bus='0' unit='0'/>
</disk>

uuidの設定もよく間違えるのですがコマンド「uuidgen」を使ってuuidを取得し設定します。

KVMコマンドからの定義ファイル作成

まずは、仮想マシンを起動する時のkvmコマンドをファイルに書き出します。下記は、kvmコマンドの例です。

kvm \
-hda /var/vm_data/ubuntu-0/vm-data01.img -boot c \
-m 256 -net nic,macaddr=52:54:00:12:00:50 \
-net tap,ifname=tap0,script=/etc/qemu-ifup \
-vnc :0

上記kvmコマンドを書き出したファイルをsample.txtとし、定義ファイルをsample.xmlとします。実行するコマンドは次のとおり

virsh domxml-from-native qemu-argv sample.txt > sample.xml

できたXMLファイルを修正し仮想マシンの登録をします。

sudo virsh define sample.xml

登録されたかを確認します。

sudo virsh list --all

よく使うvirshコマンド

よく使うvirshコマンドをまとめて見ました。

virsh define ubuntu-0.xml
定義ファイルubuntu-0.xmlを使って新たにドメインを追加します。ドメイン名は定義ファイル内に設定された内容で追加されます。
virsh create ubuntu-0.xml
定義ファイルubuntu-0.xmlを使って新たにドメインを追加します。ドメイン名は定義ファイル内に設定された内容で追加されます。追加されたドメインは起動します。
virsh list –all
登録されているすべてのドメインリストを表示します。
virsh start ubuntu-0
登録されているドメイン「ubuntu-0」を起動します。
virsh suspend ubuntu-0
登録されているドメイン「ubuntu-0」をサスペンドします。
virsh resume ubuntu-0
サスペンドしているドメイン「ubuntu-0」を再開します。
virsh shutdown ubuntu-0
起動しているドメイン「ubuntu-0」を停止します。
virsh destroy ubuntu-0
起動しているドメイン「ubuntu-0」を強制停止します。
virsh edit ubuntu-0
ドメイン「ubuntu-0」の定義を変更します。
virsh undefine ubuntu-0
ドメイン「ubuntu-0」を削除します。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク