VM ゲスト の起動や停止など、ほとんどの管理作業はグラフィカルなアプリケーションである 仮想マシンマネージャ とコマンドラインである virsh
の両方で実施することができます。ただし、 VNC 経由でのグラフィカルコンソールへのアクセスは、グラフィカルユーザインターフェイスでのみアクセスすることができます。
VM ホストサーバ 内で動作させる場合、 libvirt
のツールである 仮想マシンマネージャ, virsh
, virt-viewer
の各ツールを利用することで、ホスト内で動作する VM ゲスト を管理することができます。ただし、リモートの VM ホストサーバ にある VM ゲスト を管理することもできます。この場合、 libvirt
にリモートから接続できるように設定する必要があります。詳しくは 第11章 「接続と認可」 をお読みください。
仮想マシンマネージャ でリモートのホストに接続するには、まずは 11.2.2項 「仮想マシンマネージャ による接続の管理」 での説明に従って、接続を設定する必要があります。また、 virsh
や virt-viewer
でリモートのホストに接続する場合は、 -c
オプションで接続 URI を指定する必要があります (たとえば virsh -c qemu+tls://saturn.example.com/system
や virsh -c xen+ssh://
など) 。接続 URI の書式は、使用する接続の種類とハイパーバイザによって異なります。詳しくは 11.2項 「VM ホストサーバ への接続」 をお読みください。
なお、本章内でのコマンド例では、いずれも接続 URI を略しています。
VM ホストサーバ 内で libvirt
を利用して管理されている全 VM ゲスト の一覧表示
仮想マシンマネージャ のメインウインドウには、接続している VM ホストサーバ 内にある全ての VM ゲスト が一覧表示されています。それぞれの行にはマシンの名前のほか、状態 (
, , ) がアイコンとテキストで、そして CPU の使用率を表すバーも表示されています。virsh
による VM ゲスト の一覧表示 #Edit sourceVM ゲスト の一覧を表示するには、 virsh
list
コマンドを使用します:
>
virsh list
>
virsh list --all
詳細およびさらなるオプションについては、 virsh help list
または man 1 virsh
で表示されるマニュアルページをお読みください。
VM ゲスト は VNC 接続でアクセスすることができる (グラフィカルコンソールの場合) ほか、ゲスト側のオペレーティングシステムで対応している必要がありますが、シリアルコンソール経由でアクセスすることもできます。
VM ゲスト のグラフィカルコンソールを表示することで、物理マシンに VNC 接続しているのと同じように仮想マシンを扱うことができるようになります。また、接続先の VNC サーバで認証を求めるよう設定している場合、ユーザ名 (必要であれば) とパスワードの入力を求められます。
VNC コンソール内でマウスのボタンを押すと、マウスカーソルは 「捕捉」 状態になり、コンソールの外側には移動できなくなります。捕捉を解除するには、 Alt–Ctrl を押してください。
マウスカーソルがコンソール内に捕捉されず、 VM ゲスト のウインドウの内側と外側を自由に行き来できるようにしたい場合は、 VM ゲスト にタブレット入力デバイスを追加してください。詳しくは 13.5項 「入力デバイス」 をお読みください。
Ctrl–Alt–Del などの特殊なキー入力は、ホスト側で処理されてしまい、 VM ゲスト には配送されません。これらの特殊なキー入力を VM ゲスト 側に受け渡すには、 VNC ウインドウ内にある メニューの中から、送信したいキーを選択してください。なお、 メニューは 仮想マシンマネージャ と virt-viewer
を利用している場合にのみ使用することができます。 仮想マシンマネージャ では、 ヒント: 仮想マシンに対する特殊キーの送信について で説明している手順で、 「sticky key」 を使用することもできます。
仕様上は VNC に対応していれば、全てのビューアから VM ゲスト に接続することができます。ただし、ゲストへのアクセスに際して SASL 認証を使用している場合や TLS/SSL 接続を設定しているような場合、利用できる VNC ビューアは限られてきます。 tightvnc
や tigervnc
などの一般的な VNC ビューアには、 SASL 認証の機能も、 TLS/SSL 接続への対応も用意されていません。 仮想マシンマネージャ と virt-viewer
の組み合わせ以外で唯一対応しているものは、 Remmina (詳しくは4.2項 「Remmina: リモートデスクトップクライアント」 をお読みください) のみとなります。
仮想マシンマネージャ 内にある VM ゲスト の項目を選択して、マウスの右ボタンを押します。
ポップアップメニューから
を選択します。virt-viewer
を利用したグラフィカルコンソールの表示 #Edit sourcevirt-viewer
はシンプルな VNC ビューアで、 VM ゲスト のコンソール用にいくつかの機能が追加されています。たとえば 「wait」 モードを指定して起動すると、接続を行う前に VM ゲスト が開始されるのを待つようになります。また、 VM ゲスト が再起動された場合、自動的に再接続する機能も用意されています。
virt-viewer
では、 VM ゲスト の指定を名前のほか、 ID や UUID で指定することができます。 virsh
list --all
を実行すると、これらのデータを表示することができます。
実行中や一時停止中のゲストに接続する場合は、 ID や UUID 、もしくは名前で選択することができます。シャットオフされている VM ゲスト の場合は、 ID が付与されていませんので、 UUID や名前で選択してください。
8
のゲストに接続:>
virt-viewer 8
sles12
という名前の停止中のゲストに接続; ゲストの起動が行われるまで待機する設定:>
virt-viewer --wait sles12
--wait
オプションを指定すると、 VM ゲスト が実行中でない場合、接続が保留状態になります。ゲストが起動すると、ビューアが表示されるようになります。
詳しくは virt-viewer
--help
もしくは man 1 virt-viewer
をお読みください。
SSH 経由で接続しているホストに対して virt-viewer
で接続を開く場合、 SSH のパスワードは 2 回入力する必要があります。最初の 1 回は libvirt
での認証に、もう 1 回は VNC サーバとの認証になります。なお、 2 回目のパスワードは、 virt-viewer の開始時にコマンドラインで指定する必要があります。
仮想マシンのグラフィカルコンソールに接続するには、 VM ゲスト にアクセスするクライアント側でも、グラフィカル環境を用意する必要があります。グラフィカルな環境を必要としない場合や、使用したくない場合は、 virsh
でシリアルコンソール経由を介してシェルにアクセスすることができます。 VM ゲスト のシリアルコンソールにアクセスするには、下記のようなコマンドを入力して実行します:
>
virsh console sles12
virsh console
には 2 種類のオプションフラグが存在しています。 --safe
を指定すると、コンソールに対して排他アクセスを行おうとします。 --force
を指定すると、接続を行う前に既存の接続を全て切断します。いずれの機能とも、ゲスト側のオペレーティングシステムでの対応が必要となります。
VM ゲスト に対してシリアルコンソール経由でアクセスするには、ゲスト側のオペレーティングシステムがシリアルコンソールに対応し、適切に設定されている必要があります。詳しくはゲスト側のオペレーティングシステムのマニュアルをお読みください。
SUSE Linux Enterprise や openSUSE の場合、シリアルコンソールへのアクセスは既定で無効化されています。有効化したい場合は、下記のようにします:
YaST ブートローダモジュールを起動して、 console=ttyS0
を追加します。
YaST ブートローダモジュールを起動して、シリアルコンソールを有効化したい起動項目を選択します。選択を行ったら console=ttyS0
を追加します。これに加えて、 /etc/inittab
ファイルを編集し、下記の行のコメント文字を外します:
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102
VM ゲスト の開始や停止、一時停止は、 仮想マシンマネージャ もしくは virsh
で行うことができます。また、 VM ホストサーバ の起動時に VM ゲスト を自動的に開始するように設定することもできます。
なお、 VM ゲスト をシャットダウンする際は、正常な手順でシャットダウンを行うか、もしくは強制的にシャットダウンを行うかを選択することができます。強制的なシャットダウンはコンピュータの電源を抜く行為と同じであり、正常な手順でシャットダウンができない場合にのみ実施すべきものです。また、強制的なシャットダウンを行うと、 VM ゲスト 内のファイルシステムを破壊してしまうことがあるほか、データを失ってしまうこともあります。
正常にシャットダウンを行うには、 VM ゲスト 側が ACPI に対応するよう設定されていなければなりません。 仮想マシンマネージャ でゲストを作成している場合、 VM ゲスト の ACPI 対応は自動的に設定されます。
ゲスト側のオペレーティングシステムにも依存しますが、 ACPI が利用できれば正常にシャットダウンできるというわけではありません。本番環境で使用する場合は、あらかじめ正常にシャットダウンできること、および再起動できることを確認してからご使用ください。なお、 openSUSE や SUSE Linux Enterprise Desktop などでは、シャットダウンや再起動を行うのに Polkit による認可を必要とするように設定することもできます。このポリシーが全ての VM ゲスト で無効化されていることを確認してください。
Windows XP や Windows Server 2003 のゲストインストール時に ACPI を有効化した場合、 VM ゲスト の設定のみを変更しただけでは設定不足となります。詳しくは下記をお読みください:
なお、 VM ゲスト 側の設定にかかわらず、ゲスト側のオペレーティングシステム内からシャットダウンを行うことで、正常なシャットダウンを実現することができます。
VM ゲスト の状態変更は 仮想マシンマネージャ のメインウインドウのほか、 VNC ウインドウからも行うことができます。
VM ゲスト の項目を選択して、マウスの右ボタンを押します。
表示されたポップアップメニューから、
, のいずれか、もしくは 内にある選択肢のいずれかを選択します。10.2.1.1項 「仮想マシンマネージャ を利用したグラフィカルコンソールの表示」 に示されている手順に従って、 VNC ウインドウを表示します。
ツールバー内、もしくは
メニュー内にある , のいずれか、もしくは 内にある選択肢のいずれかを選択します。VM ホストサーバ の起動時にゲストを自動的に開始するように設定することができます。この機能は既定では有効化されておらず、それぞれの VM ゲスト に対して個別に設定する必要があります。全ての仮想マシンを一括で有効化することはできません。
仮想マシンマネージャ で設定したい VM ゲスト の項目を選んでダブルクリックし、コンソールを表示します。
› を選んで、 VM ゲスト の設定ウインドウを表示します。
を選択し、表示された を選択します。
を押して新しい設定を保存します。
virsh
を利用した VM ゲスト の状態変更 #Edit source下記の例では、 「sles12」 という名前の VM ゲスト の状態を変更しています。
>
virsh start sles12
>
virsh suspend sles12
>
virsh resume sles12
>
virsh reboot sles12
>
virsh shutdown sles12
>
virsh destroy sles12
>
virsh autostart sles12
>
virsh autostart --disable sles12
VM ゲスト の状態保存を行うことで、ゲストのメモリの内容を保存することができます。この操作はコンピュータの ハイバネーション (休止状態) に似た操作です。状態保存された VM ゲスト の復元を行うことで、その時点の状態に戻すこともできます。
状態保存を行うと、 VM ゲスト は一時停止状態になり、その時点でのメモリ内容をディスクに保存したあと、 VM ゲスト が停止されます。ただし、この操作では VM ゲスト のディスクのコピーが作成されるわけではありません。また、仮想マシンの状態保存にかかる時間は、割り当てているメモリ量に依存して決まります。状態保存を行うと、 VM ゲスト に割り当てていたメモリが VM ホストサーバ 側に戻され、利用できるようになります。
状態復元の操作は、以前に状態保存しておいた VM ゲスト のメモリ状態を読み込んで、実行中の状態に戻す操作です。ここではゲストの起動処理は発生せず、状態を保存した時点の状態に戻します。この操作は、ハイバネーションからの復帰に似ています。
なお、 VM ゲスト の状態は専用のファイルに保存されます。そのため、保存先のディスクには十分な空き容量があることを確認してください。下記のコマンドをゲスト内で実行すると、おおよそ必要な容量を計算することができます (メガバイト単位で表示されます):
>
free -mh | awk '/^Mem:/ {print $3}'
VM ゲスト の状態保存を行った後は、必ず状態復元を行うものとし、通常の起動や開始は行ってはなりません。通常の起動や開始を行ってしまうと、マシンの仮想ディスクが途中の状態のまま起動することになってしまうほか、状態保存のファイルとも整合性が取れなくなってしまうため、状態復元を行うと致命的なエラーが発生することになります。
状態保存された VM ゲスト を正しく使用し続けるには、状態復元を忘れずに実施してください。また、 virsh
で状態保存を行った場合は、 仮想マシンマネージャ で状態を復元することができません。この場合は virsh
で復元を行ってください。
VM ゲスト の状態を保存してから長い時間 (2〜3時間以上) が経過した後に復元を行った場合、時刻同期サービスが正しく時刻を修正できなくなったりする場合があります。このような場合は、 VM ゲスト の時刻を手作業で修正してください。たとえば KVM ホストであれば、 QEMU のゲストエージェントを利用することで、 guest-set-time
コマンドでゲスト側の時刻を修正することができます。詳しくは 第21章 「QEMU ゲストエージェント」 をお読みください。
raw
, qcow2
のいずれかでなければならない件についてVM ゲスト の状態保存や状態復元を行うには、 VM ゲスト が raw
( .img
) もしくは qcow2 の種類の仮想ディスクを使用している必要があります。
VM ゲスト の VNC 接続ウインドウを表示します。また、ゲストが動作中であることを確認します。
› › を選択します。
VM ゲスト の VNC 接続ウインドウを表示します。また、ゲストが動作中でないことを確認します。
› を選択します。
VM ゲスト を 仮想マシンマネージャ から状態保存していると、ゲストの 警告: 保存後の復元作業について で説明しているとおり、 virsh
で状態保存を行っている場合に注意してください。
virsh
による状態保存と状態復元 #Edit sourceVM ゲスト の状態保存を行うには、 virsh
save
に続いて 仮想マシン名 (もしくは ID) と保存先のファイルを指定します。
opensuse13
という名前のゲストを状態保存>
virsh save opensuse13 /virtual/saves/opensuse13.vmsav
37
のゲストを状態保存>
virsh save 37 /virtual/saves/opensuse13.vmsave
VM ゲスト の状態を復元するには、 virsh
restore
コマンドを使用します:
>
virsh restore /virtual/saves/opensuse13.vmsave
VM ゲスト のスナップショット機能は、 CPU やメモリ、デバイスの状態のほか、書き込み可能な全てのディスクの内容を含む、完全な仮想マシンのスナップショットです。仮想マシンのスナップショット機能を使用するには、接続されている全てのハードディスクが qcow2 形式である必要があるほか、少なくとも 1 つ以上のディスクが書き込み可能である必要があります。
スナップショットを使用することで、その時点でのマシンの状態を自由に復元できるようになります。これは特に、設定を誤ってしまった場合の巻き戻しや、多数のパッケージを誤ってインストールしてしまった場合の取り消しに便利な仕組みです。また、 VM ゲスト がシャットオフ中に採取されたスナップショットを適用した場合は、適用後に起動を行う必要があります。また、スナップショットの適用を行うと、現時点での状態が破棄されます。
スナップショット機能は KVM の VM ホストサーバ にのみ対応しています。
スナップショットの種類を説明するにあたって、下記のいくつかの用語を使用しています:
スナップショットを元の VM ゲスト の qcow2 ファイル内に保存する方式です。このファイルには、スナップショットで保存された情報と、スナップショットを採取してからの変更点の両方が記録されます。内部スナップショットの利点としては、必要な全ての情報が 1 つのファイル内に保存されていて、マシン間で複製や移動を行う手間が省けるという点にあります。
外部スナップショットでは、元の qcow2 ファイルを保存して読み込み専用とし、それとは別に新しく qcow2 ファイルを作成してそこに変更点を記録します。元のファイルは バッキング もしくは ベース ファイルと呼ばれ、新しく作成したほうのファイルは オーバーレイ もしくは 派生 ファイルと呼ばれます。外部スナップショットは、 VM ゲスト のバックアップを作成する際に便利です。ただし、外部スナップショットは 仮想マシンマネージャ ではサポートしておらず、 virsh
でも直接削除することができません。 QEMU での外部スナップショットについて、詳しくは 35.2.4項 「ディスクイメージの効率的な使用」 をお読みください。
VM ゲスト の動作中に採取するスナップショットを意味します。内部スナップショット形式での動作中スナップショットの場合、デバイスとメモリ、ディスクの各状態を保存することができます。 virsh
を利用した外部スナップショット形式での動作中スナップショットの場合は、メモリとディスクのうちいずれか、もしくはその両方の状態を保存することができます。
VM ゲスト がシャットオフ (シャットダウン) されている間に採取するスナップショットを意味します。ゲストが動作していない状態で採取することから、メモリも使用されていない状態になりますので、矛盾を一切発生させずに採取することができるようになります。
仮想マシンマネージャ では動作中スナップショットであってもオフラインスナップショットであっても、内部スナップショットにしか対応していません。
仮想マシンマネージャ でスナップショットの管理ビューを表示するには、まず 10.2.1.1項 「仮想マシンマネージャ を利用したグラフィカルコンソールの表示」 の手順で VNC のウインドウを表示します。その後、 › を選択するか、ツールバーから を選択します。
選択した VM ゲスト に対する既存のスナップショットの一覧が、ウインドウの左側に表示されます。現時点での最新のスナップショットには、緑色のチェックマークが付けられます。ウインドウの右側には、左側で選択しているスナップショットの詳細が表示されます。詳細にはスナップショットのタイトルとタイムスタンプのほか、採取時点での VM ゲスト の状態や説明などが表示されます。また、動作中スナップショットである場合には、その時点でのスクリーンショットも表示されます。なお、
の内容については、この表示から変更することができます。それ以外のスナップショットデータについては、変更できません。VM ゲスト に対して新しいスナップショットを採取するには、下記の手順を実施します:
オフラインスナップショットを採取する場合は、まず VM ゲスト をシャットダウンします。
VNC ウインドウ内の左下にある
ボタンを押します。ウインドウが表示されます。
欄にスナップショットの名前を入力します。必要であれば、 欄に詳細を記述します。名前は作成後に変更することはできません。後からスナップショットの状況がわかるような名前を入力してください。
を押すと採取が行われます。
選択した VM ゲスト のスナップショットを削除するには、下記の手順を実施します:
VNC ウインドウ内の左下にある
ボタンを押します。削除の確認メッセージが表示されますので、
を押します。選択したスナップショットで開始するには、下記の手順を実施します:
VNC ウインドウ内の左下にある
ボタンを押します。開始の確認メッセージが表示されますので、
を押します。virsh
を利用したスナップショットの作成と管理 #Edit source特定の VM ゲスト (下記では admin_server) に対するスナップショットの全一覧を表示するには、 snapshot-list
コマンドを使用します:
>
virsh snapshot-list --domain admin_server
名前 作成時間 状態
--------------------------------------------------------------------
sleha_12_sp2_b2_two_node_cluster 2016-06-06 15:04:31 +0200 shutoff
sleha_12_sp2_b3_two_node_cluster 2016-07-04 14:01:41 +0200 shutoff
sleha_12_sp2_b4_two_node_cluster 2016-07-14 10:44:51 +0200 shutoff
sleha_12_sp2_rc3_two_node_cluster 2016-10-10 09:40:12 +0200 shutoff
sleha_12_sp2_gmc_two_node_cluster 2016-10-24 17:00:14 +0200 shutoff
sleha_12_sp3_gm_two_node_cluster 2017-08-02 12:19:37 +0200 shutoff
sleha_12_sp3_rc1_two_node_cluster 2017-06-13 13:34:19 +0200 shutoff
sleha_12_sp3_rc2_two_node_cluster 2017-06-30 11:51:24 +0200 shutoff
sleha_15_b6_two_node_cluster 2018-02-07 15:08:09 +0100 shutoff
sleha_15_rc1_one-node 2018-03-09 16:32:38 +0100 shutoff
現時点での最新のスナップショットを表示するには、 snapshot-current
コマンドを使用します:
>
virsh snapshot-current --domain admin_server
Basic installation incl. SMT for CLOUD4
特定のスナップショットに関する詳細を表示するには、 snapshot-info
コマンドを使用します:
>
virsh snapshot-info --domain admin_server \
-name "Basic installation incl. SMT for CLOUD4"
名前: Basic installation incl. SMT for CLOUD4
ドメイン: admin_server
カレント: はい (yes)
状態: shutoff
場所: 内部
親: Basic installation incl. SMT for CLOUD3-HA
子: 0
子孫: 0
メタデータ: はい (yes)
VM ゲスト に対して内部スナップショットを採取するには、それが動作中スナップショットであってもオフラインスナップショットであっても、 snapshot-create-as
コマンドを使用します:
>
virsh snapshot-create-as --domain admin_server1 --name "Snapshot 1"2 \
--description "First snapshot"3
virsh
を使用することで、ゲストのメモリ状態またはディスク状態、もしくはその両方を外部スナップショットとして採取することができます。
ゲストのディスク状態の外部スナップショットを採取するには、それが動作中であってもオフラインであっても、 --disk-only
オプションを指定します:
>
virsh snapshot-create-as --domain admin_server --name \
"Offline external snapshot" --disk-only
--diskspec
オプションを指定することで、外部スナップショットのファイル作成方法を制御することができます:
>
virsh snapshot-create-as --domain admin_server --name \
"Offline external snapshot" \
--disk-only --diskspec vda,snapshot=external,file=/path/to/snapshot_file
ゲストのメモリ状態の外部スナップショットを採取するには、 --live
および --memspec
オプションを指定します:
>
virsh snapshot-create-as --domain admin_server --name \
"Offline external snapshot" --live \
--memspec snapshot=external,file=/path/to/snapshot_file
ゲストのディスクとメモリ状態の両方を外部スナップショットとして採取するには、 --live
, --diskspec
, --memspec
の各オプションを組み合わせて指定します:
>
virsh snapshot-create-as --domain admin_server --name \
"Offline external snapshot" --live \
--memspec snapshot=external,file=/path/to/snapshot_file
--diskspec vda,snapshot=external,file=/path/to/snapshot_file
詳しくは man 1 virsh
内の SNAPSHOT COMMANDS セクション (英語) をお読みください。
外部スナップショットは virsh
では削除できません。 VM ゲスト の内部スナップショットを削除し、占有していたディスク領域を解放するには、 snapshot-delete
コマンドを使用します:
>
virsh snapshot-delete --domain admin_server --snapshotname "Snapshot 2"
指定したスナップショットで開始するには、 snapshot-revert
コマンドを使用します:
>
virsh snapshot-revert --domain admin_server --snapshotname "Snapshot 1"
現在のスナップショット (VM ゲスト を最後にシャットダウンした状態) を開始する場合は、スナップショットの名前ではなく、 --current
オプションを指定すれば十分です:
>
virsh snapshot-revert --domain admin_server --current
既定では、 virsh
による VM ゲスト の削除では、 XML 形式の設定ファイルのみを削除します。接続されているストレージは既定では削除されませんので、他の VM ゲスト に接続しなおして使用することもできます。 仮想マシンマネージャ を使用する場合は、同時にストレージファイルも削除することができます。
仮想マシンマネージャ 内にある VM ゲスト の項目を選択して、マウスの右ボタンを押します。
表示されたコンテキストメニューから、
を選択します。確認メッセージが表示されますので、再度
ボタンを押します。これにより、 VM ゲスト を恒久的に削除することができます。また、削除は取り消すことができません。仮想ディスクについても同時に削除したい場合は、
を選択します。こちらについても削除を取り消すことはできません。virsh
を利用した VM ゲスト の削除 #Edit sourceVM ゲスト を削除するには、まずシャットダウンしておく必要があります。動作中の場合、ゲストを削除することができません。シャットダウンに関する情報については、 10.3項 「VM ゲスト の状態変更 (開始/停止/一時停止)」 をお読みください。
virsh
を使用して VM ゲスト を削除するには、 virsh
undefine
VM_名 のように入力して実行します。
>
virsh undefine sles12
接続されているストレージファイルを自動的に削除するオプションは用意されていません。 libvirt でストレージファイルを管理している場合は、 8.2.1.4項 「ストレージプールからのボリュームの削除」 の手順に従って削除を行ってください。
仮想マシンマネージャ を起動して VM ホストサーバ に接続すると、動作中のゲストの CPU 使用率が表示されます。
このツールでは、ディスクやネットワークの使用率に関する情報も表示することができます。ただし、あらかじめ
で機能を有効化しておかなければなりません:virt-manager
を起動します。
› を選択します。
から のタブに切り替えます。
悲痛に応じて、監視したい項目を選択します。それぞれ
, , です。また、必要であれば
の値も調整します。ダイアログを閉じます。
あとは
› 以下にある項目を選択して、グラフを表示させてください。すると、ディスクやネットワークの統計情報が、 仮想マシンマネージャ のメインウインドウ内に表示されるようになります。
より詳しいデータを閲覧したい場合は、 VNC ウインドウからご確認ください。 VNC ウインドウの表示方法は 10.2.1項 「グラフィカルコンソールの表示」 で説明しています。ツールバーから を押すか、もしくは › を選択してください。統計情報は左側のメニュー内にある を選択すると、表示されるようになります。
virt-top
を利用した監視 #Edit sourcevirt-top
は、よく知られたプロセス監視ツールである top
に似たコマンドラインツールです。 virt-top
は libvirt を利用して、さまざまなハイパーバイザで動作する VM ゲスト の統計情報を表示することができます。 xentop
のようなハイパーバイザ固有のツールではなく、 virt-top
のような汎用ツールの使用をお勧めします。
既定では、 virt-top
は実行中の全ての VM ゲスト に対する統計情報を表示します。ここにはメモリの使用率 ( %MEM
) のほか、 CPU の使用率 ( %CPU
) とゲストの動作時間 ( TIME
) が表示されます。データは定期的に自動更新されます (既定では 3 秒間隔で更新されます) 。下記の例では、 VM ホストサーバ 内に合計 7 つの VM ゲスト が存在し、それらのうちの 4 つが停止されている状況を示しています:
virt-top 13:40:19 - x86_64 8/8CPU 1283MHz 16067MB 7.6% 0.5% 7 domains, 3 active, 3 running, 0 sleeping, 0 paused, 4 inactive D:0 O:0 X:0 CPU: 6.1% Mem: 3072 MB (3072 MB by guests) ID S RDRQ WRRQ RXBY TXBY %CPU %MEM TIME NAME 7 R 123 1 18K 196 5.8 6.0 0:24.35 sled12_sp1 6 R 1 0 18K 0 0.2 6.0 0:42.51 sles12_sp1 5 R 0 0 18K 0 0.1 6.0 85:45.67 opensuse_leap - (Ubuntu_1410) - (debian_780) - (fedora_21) - (sles11sp3)
既定での並び順は ID 順です。柿の木ー入力を行うことで、並び順を変更することができます:
Shift–P : CPU の使用率 |
Shift–M : ゲストに割り当てているメモリ量 |
Shift–T : 時間 |
Shift–I : ID |
その他の情報をもとに並べ替えを行いたい場合は、 Shift–F を押して、表示される一覧から項目を選択してください。並び順を逆にしたい場合は、 Shift–R を押します。
virt-top
では、 VM ゲスト のデータをさまざまな形で表示することができます。これらは下記のキー入力を行うことで、即時に変更することができます:
0 : 既定の表示 |
1 : 物理 CPU の表示 |
2 : ネットワークインターフェイスの表示 |
3 : 仮想ディスクの表示 |
virt-top
には表示を変更するためのさまざまなキー入力や、プログラムの動作を変更するためのさまざまなコマンドラインが用意されています。詳しくは man 1 virt-top
をお読みください。
kvm_stat
を利用した監視 #Edit sourcekvm_stat
は、 KVM の性能イベントを追跡する際に使用するツールです。 /sys/kernel/debug/kvm
を監視する仕組みであるため、まずは debugfs をマウントする必要があります。 openSUSE Leap では既定でマウントされるように設定されていますが、何らかの理由でマウントされていない場合は、下記のように実行してマウントしてください:
>
sudo
mount -t debugfs none /sys/kernel/debug
kvm_stat
は、下記に示す 3 種類の動作モードが用意されています:
kvm_stat # 1 秒間隔で更新 kvm_stat -1 # 1 秒間情報採取して出力 kvm_stat -l > kvmstats.log # ログ形式で 1 秒間隔で更新 # (表計算プログラムなどに取り込むことができます)
kvm_stat
の出力例 #kvm statistics efer_reload 0 0 exits 11378946 218130 fpu_reload 62144 152 halt_exits 414866 100 halt_wakeup 260358 50 host_state_reload 539650 249 hypercalls 0 0 insn_emulation 6227331 173067 insn_emulation_fail 0 0 invlpg 227281 47 io_exits 113148 18 irq_exits 168474 127 irq_injections 482804 123 irq_window 51270 18 largepages 0 0 mmio_exits 6925 0 mmu_cache_miss 71820 19 mmu_flooded 35420 9 mmu_pde_zapped 64763 20 mmu_pte_updated 0 0 mmu_pte_write 213782 29 mmu_recycled 0 0 mmu_shadow_zapped 128690 17 mmu_unsync 46 -1 nmi_injections 0 0 nmi_window 0 0 pf_fixed 1553821 857 pf_guest 1018832 562 remote_tlb_flush 174007 37 request_irq 0 0 signal_exits 0 0 tlb_flush 394182 148
これらの値の解釈方法について、詳しくは https://clalance.blogspot.com/2009/01/kvm-performance-tools.html (英語) をお読みください。