Virt Managerによる管理はお手軽ですが、大規模にKVMを活用するにはパワー不足です。そこで、シェルスクリプトを活用して様々な運用・管理作業を自動化するためのツールであるVirshをご紹介します。
Virshは仮想化環境を管理するためのライブラリであるlibvirtを操作するためのシェルです。実は前回ご紹介したVirt Managerもlibvirtを操作しており、ハイパーバイザであるKVMとの関係を整理すると図1のようになっています。
qemu-kvmはコマンドであり、RHEL6の場合は/usr/libexec/qemu-kvmとなっていますが、直接コマンドとして実行することはサポート対象外となっています。したがって、VirshやVirt Managerを通して実行することになります。
前回、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コマンドを実行すると対話モードに入ります。
他にも、ゲストOSをインストールするvirt-installコマンドや、ゲストOSをクローンするvirt-cloneコマンドなど、Virshと組み合わせて使うと強力なスクリプトを作成することが可能になるコマンドも有用です。
これらのコマンドの詳細については、弊社のドキュメントサイトから、"Virtualization Administration Guide"を参照してください。
ここまでご紹介してきたVirt ManagerやVirshが対象とするのは、仮想マシンとゲストOSの管理だけです。仮想化ハイパーバイザのノードやストレージの管理は外部のツールでするほかはないです。次回はより大規模かつリソース管理が必要なシーンで使われるRed Hat Enterprise Virtualizationについてご紹介します。お楽しみに。