ページの本文へ

Hitachi
お問い合わせお問い合わせ

[連載]第4回 スクリプトで仮想化管理・Virsh

Virt Managerによる管理はお手軽ですが、大規模にKVMを活用するにはパワー不足です。そこで、シェルスクリプトを活用して様々な運用・管理作業を自動化するためのツールであるVirshをご紹介します。

VirshとKVMの関係

Virshは仮想化環境を管理するためのライブラリであるlibvirtを操作するためのシェルです。実は前回ご紹介したVirt Managerもlibvirtを操作しており、ハイパーバイザであるKVMとの関係を整理すると図1のようになっています。

図1:Virsh、Virt ManagerとKVMの関係

qemu-kvmはコマンドであり、RHEL6の場合は/usr/libexec/qemu-kvmとなっていますが、直接コマンドとして実行することはサポート対象外となっています。したがって、VirshやVirt Managerを通して実行することになります。

Virshによる仮想マシンの操作

前回、Virt Managerで仮想マシンにゲストOSをインストールした状態であれば、virsh listコマンドで確認することが可能です。

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     RHEL6.4                        shut off

この仮想マシンは停止した状態ですので、起動してみましょう。

# virsh start RHEL6.4
Domain RHEL6.4 started

仮想マシンが起動していれば、listコマンドに--allオプションは必要ありません。

# virsh list
 Id    Name                           State
----------------------------------------------------
 3     RHEL6.4                        running

仮想マシンが起動している時は仮想ドメインにIDが割り振られていますので、仮想マシン名・"RHEL6.4"ではなく、IDである"3"を引数にして仮想ドメインの各種情報を取得することが可能です。

# virsh dominfo 3
Id:             3
Name:           RHEL6.4
UUID:           3c51897b-128c-d06c-83cf-af85abe5ddea
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       109.4s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c182,c423 (enforcing)

一時停止や復帰、保存やリストアなどもコマンドで実行することが可能です。

# virsh suspend RHEL6.4 
Domain RHEL6.4 suspended

# virsh resume RHEL6.4
Domain RHEL6.4 resumed

# virsh save RHEL6.4 saved_file

Domain RHEL6.4 saved to saved_file

# virsh restore saved_file 
Domain restored from saved_file

仮想マシンの停止の際は、似たような操作が複数あるので気を付けましょう。ゲストOSでの"shutdown"あるいは"init 0"に相当するのは、shutdownコマンドになります。

# virsh shutdown RHEL6.4
Domain RHEL6.4 is being shutdown

一方でゲストOSがパニックしている状況など、強制的に停止させる場合はdestroyコマンドを用いますが、ゲストOSの終了処理を経ませんので、ファイルシステムの破損などの危険があることを理解した上で利用するようにします。

# virsh destroy RHEL6.4
Domain RHEL6.4 destroyed

Virsh以外のコマンドも

この他にもVirshでは、仮想マシンのリソース管理や仮想ネットワークの管理など、様々な操作が可能です。また、本稿では「自動化」を主眼に置いているために非対話式の操作だけをご紹介しましたが、サブコマンドを指定せずにvirshコマンドを実行すると対話モードに入ります。

他にも、ゲストOSをインストールするvirt-installコマンドや、ゲストOSをクローンするvirt-cloneコマンドなど、Virshと組み合わせて使うと強力なスクリプトを作成することが可能になるコマンドも有用です。

これらのコマンドの詳細については、弊社のドキュメントサイトから、"Virtualization Administration Guide"を参照してください。

次回予告 −ハードウェアの管理も必要−

ここまでご紹介してきたVirt ManagerやVirshが対象とするのは、仮想マシンとゲストOSの管理だけです。仮想化ハイパーバイザのノードやストレージの管理は外部のツールでするほかはないです。次回はより大規模かつリソース管理が必要なシーンで使われるRed Hat Enterprise Virtualizationについてご紹介します。お楽しみに。