Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
仮想化ガイド
  1. 前書き
  2. I 概要
    1. 1 仮想化技術
    2. 2 仮想化シナリオ
    3. 3 Xen 仮想化の紹介
    4. 4 KVM 仮想化の紹介
    5. 5 仮想化ツール
    6. 6 仮想化コンポーネントのインストール
  3. II libvirt を利用した仮想マシンの管理
    1. 7 libvirt デーモン
    2. 8 VM ホストサーバ の準備
    3. 9 ゲストのインストール
    4. 10 基本的な VM ゲスト の管理
    5. 11 接続と認可
    6. 12 高度なストレージ設定
    7. 13 仮想マシンマネージャ を利用した仮想マシンの設定
    8. 14 virsh を利用した仮想マシンの設定
    9. 15 Xen から KVM への移行ガイド
  4. III 全ハイパーバイザ共通の機能
    1. 16 ディスクのキャッシュモード
    2. 17 VM ゲスト の時刻設定
    3. 18 libguestfs
    4. 19 QEMU ゲストエージェント
    5. 20 ソフトウエア TPM エミュレータ
    6. 21 VM ゲスト に対するクラッシュダンプの作成
  5. IV Xen を利用した仮想マシンの管理
    1. 22 仮想マシンホストの設定
    2. 23 仮想ネットワーク
    3. 24 仮想環境の管理
    4. 25 Xen 内でのブロックデバイス
    5. 26 仮想化: オプション設定
    6. 27 管理作業
    7. 28 XenStore: ドメイン間で共有される設定データベース
    8. 29 Xen の高可用性仮想化ホストとしての使用
    9. 30 Xen: 準仮想化 (PV) ゲストから完全仮想化 (FV/HVM) ゲストへの変換
  6. V QEMU を利用した仮想マシンの管理
    1. 31 QEMU の概要
    2. 32 KVM VM ホストサーバ の構築
    3. 33 ゲストのインストール
    4. 34 qemu-system-ARCH を利用した仮想マシンの実行
    5. 35 QEMU モニタを利用した仮想マシンの管理
  7. VI トラブルシューティング
    1. 36 内蔵ヘルプとパッケージのドキュメンテーション
    2. 37 システム情報とログの収集
  8. 用語集
  9. A NVIDIA カードに対する GPU パススルー の設定
  10. B GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.6

10 基本的な VM ゲスト の管理 Edit source

VM ゲスト の起動や停止など、ほとんどの管理作業はグラフィカルなアプリケーションである 仮想マシンマネージャ とコマンドラインである virsh の両方で実施することができます。ただし、 VNC 経由でのグラフィカルコンソールへのアクセスは、グラフィカルユーザインターフェイスでのみアクセスすることができます。

注記
注記: リモートの VM ホストサーバ 内にある VM ゲスト の管理について

VM ホストサーバ 内で動作させる場合、 libvirt のツールである 仮想マシンマネージャ, virsh , virt-viewer の各ツールを利用することで、ホスト内で動作する VM ゲスト を管理することができます。ただし、リモートの VM ホストサーバ にある VM ゲスト を管理することもできます。この場合、 libvirt にリモートから接続できるように設定する必要があります。詳しくは 第11章 「接続と認可 をお読みください。

仮想マシンマネージャ でリモートのホストに接続するには、まずは 11.2.2項 「仮想マシンマネージャ による接続の管理」 での説明に従って、接続を設定する必要があります。また、 virshvirt-viewer でリモートのホストに接続する場合は、 -c オプションで接続 URI を指定する必要があります (たとえば virsh -c qemu+tls://saturn.example.com/systemvirsh -c xen+ssh:// など) 。接続 URI の書式は、使用する接続の種類とハイパーバイザによって異なります。詳しくは 11.2項 「VM ホストサーバ への接続」 をお読みください。

なお、本章内でのコマンド例では、いずれも接続 URI を略しています。

10.1 VM ゲスト の一覧表示 Edit source

VM ホストサーバ 内で libvirt を利用して管理されている全 VM ゲスト の一覧表示

10.1.1 仮想マシンマネージャ を利用した VM ゲスト の一覧表示 Edit source

仮想マシンマネージャ のメインウインドウには、接続している VM ホストサーバ 内にある全ての VM ゲスト が一覧表示されています。それぞれの行にはマシンの名前のほか、状態 ( 実行中 , 一時停止中 , シャットオフ ) がアイコンとテキストで、そして CPU の使用率を表すバーも表示されています。

10.1.2 virsh による VM ゲスト の一覧表示 Edit source

VM ゲスト の一覧を表示するには、 virsh list コマンドを使用します:

実行中の全ゲストの表示
> virsh list
実行中/停止中両方の全ゲストの表示
> virsh list --all

詳細およびさらなるオプションについては、 virsh help list または man 1 virsh で表示されるマニュアルページをお読みください。

10.2 コンソール経由での VM ゲスト へのアクセス Edit source

VM ゲスト は VNC 接続でアクセスすることができる (グラフィカルコンソールの場合) ほか、ゲスト側のオペレーティングシステムで対応している必要がありますが、シリアルコンソール経由でアクセスすることもできます。

10.2.1 グラフィカルコンソールの表示 Edit source

VM ゲスト のグラフィカルコンソールを表示することで、物理マシンに VNC 接続しているのと同じように仮想マシンを扱うことができるようになります。また、接続先の VNC サーバで認証を求めるよう設定している場合、ユーザ名 (必要であれば) とパスワードの入力を求められます。

VNC コンソール内でマウスのボタンを押すと、マウスカーソルは 捕捉 状態になり、コンソールの外側には移動できなくなります。捕捉を解除するには、 AltCtrl を押してください。

ヒント
ヒント: マウスカーソルの捕捉回避について

マウスカーソルがコンソール内に捕捉されず、 VM ゲスト のウインドウの内側と外側を自由に行き来できるようにしたい場合は、 VM ゲスト にタブレット入力デバイスを追加してください。詳しくは 13.5項 「入力デバイス」 をお読みください。

CtrlAltDel などの特殊なキー入力は、ホスト側で処理されてしまい、 VM ゲスト には配送されません。これらの特殊なキー入力を VM ゲスト 側に受け渡すには、 VNC ウインドウ内にある キーの送信 メニューの中から、送信したいキーを選択してください。なお、 キーの送信 メニューは 仮想マシンマネージャ と virt-viewer を利用している場合にのみ使用することができます。 仮想マシンマネージャ では、 ヒント: 仮想マシンに対する特殊キーの送信について で説明している手順で、 sticky key を使用することもできます。

注記
注記: 対応する VNC ビューアについて

仕様上は VNC に対応していれば、全てのビューアから VM ゲスト に接続することができます。ただし、ゲストへのアクセスに際して SASL 認証を使用している場合や TLS/SSL 接続を設定しているような場合、利用できる VNC ビューアは限られてきます。 tightvnctigervnc などの一般的な VNC ビューアには、 SASL 認証の機能も、 TLS/SSL 接続への対応も用意されていません。 仮想マシンマネージャ と virt-viewer の組み合わせ以外で唯一対応しているものは、 Remmina (詳しくは4.2項 「Remmina: リモートデスクトップクライアント」 をお読みください) のみとなります。

10.2.1.1 仮想マシンマネージャ を利用したグラフィカルコンソールの表示 Edit source

  1. 仮想マシンマネージャ 内にある VM ゲスト の項目を選択して、マウスの右ボタンを押します。

  2. ポップアップメニューから 開く を選択します。

10.2.1.2 virt-viewer を利用したグラフィカルコンソールの表示 Edit source

virt-viewer はシンプルな VNC ビューアで、 VM ゲスト のコンソール用にいくつかの機能が追加されています。たとえば wait モードを指定して起動すると、接続を行う前に VM ゲスト が開始されるのを待つようになります。また、 VM ゲスト が再起動された場合、自動的に再接続する機能も用意されています。

virt-viewer では、 VM ゲスト の指定を名前のほか、 ID や UUID で指定することができます。 virsh list --all を実行すると、これらのデータを表示することができます。

実行中や一時停止中のゲストに接続する場合は、 ID や UUID 、もしくは名前で選択することができます。シャットオフされている VM ゲスト の場合は、 ID が付与されていませんので、 UUID や名前で選択してください。

ID 8 のゲストに接続:
> virt-viewer 8
sles12 という名前の停止中のゲストに接続; ゲストの起動が行われるまで待機する設定:
> virt-viewer --wait sles12

--wait オプションを指定すると、 VM ゲスト が実行中でない場合、接続が保留状態になります。ゲストが起動すると、ビューアが表示されるようになります。

詳しくは virt-viewer --help もしくは man 1 virt-viewer をお読みください。

注記
注記: SSH 経由のリモート接続でのパスワード入力について

SSH 経由で接続しているホストに対して virt-viewer で接続を開く場合、 SSH のパスワードは 2 回入力する必要があります。最初の 1 回は libvirt での認証に、もう 1 回は VNC サーバとの認証になります。なお、 2 回目のパスワードは、 virt-viewer の開始時にコマンドラインで指定する必要があります。

10.2.2 シリアルコンソールへの接続 Edit source

仮想マシンのグラフィカルコンソールに接続するには、 VM ゲスト にアクセスするクライアント側でも、グラフィカル環境を用意する必要があります。グラフィカルな環境を必要としない場合や、使用したくない場合は、 virsh でシリアルコンソール経由を介してシェルにアクセスすることができます。 VM ゲスト のシリアルコンソールにアクセスするには、下記のようなコマンドを入力して実行します:

> virsh console sles12

virsh console には 2 種類のオプションフラグが存在しています。 --safe を指定すると、コンソールに対して排他アクセスを行おうとします。 --force を指定すると、接続を行う前に既存の接続を全て切断します。いずれの機能とも、ゲスト側のオペレーティングシステムでの対応が必要となります。

VM ゲスト に対してシリアルコンソール経由でアクセスするには、ゲスト側のオペレーティングシステムがシリアルコンソールに対応し、適切に設定されている必要があります。詳しくはゲスト側のオペレーティングシステムのマニュアルをお読みください。

ヒント
ヒント: SUSE Linux Enterprise や openSUSE のゲストに対するシリアルコンソールの有効化について

SUSE Linux Enterprise や openSUSE の場合、シリアルコンソールへのアクセスは既定で無効化されています。有効化したい場合は、下記のようにします:

SLES 12, 15 もしくは openSUSE

YaST ブートローダモジュールを起動して、 カーネルのパラメータ タブに切り替えます。あとは オプションのカーネルコマンドラインパラメータ の欄に、 console=ttyS0 を追加します。

SLES 11

YaST ブートローダモジュールを起動して、シリアルコンソールを有効化したい起動項目を選択します。選択を行ったら 編集 を押し、 オプションのカーネルコマンドラインパラメータ の欄に console=ttyS0 を追加します。これに加えて、 /etc/inittab ファイルを編集し、下記の行のコメント文字を外します:

#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102

10.3 VM ゲスト の状態変更 (開始/停止/一時停止) Edit source

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 ゲスト 側の設定にかかわらず、ゲスト側のオペレーティングシステム内からシャットダウンを行うことで、正常なシャットダウンを実現することができます。

10.3.1 仮想マシンマネージャ を利用した VM ゲスト の状態変更 Edit source

VM ゲスト の状態変更は 仮想マシンマネージャ のメインウインドウのほか、 VNC ウインドウからも行うことができます。

手順 10.1: 仮想マシンマネージャ ウインドウ内からの状態変更
  1. VM ゲスト の項目を選択して、マウスの右ボタンを押します。

  2. 表示されたポップアップメニューから、 実行 , 一時停止 のいずれか、もしくは シャットダウン 内にある選択肢のいずれかを選択します。

手順 10.2: VNC ウインドウからの状態変更
  1. 10.2.1.1項 「仮想マシンマネージャ を利用したグラフィカルコンソールの表示」 に示されている手順に従って、 VNC ウインドウを表示します。

  2. ツールバー内、もしくは 仮想マシン メニュー内にある 実行 , 一時停止 のいずれか、もしくは シャットダウン 内にある選択肢のいずれかを選択します。

10.3.1.1 VM ゲスト の自動起動 Edit source

VM ホストサーバ の起動時にゲストを自動的に開始するように設定することができます。この機能は既定では有効化されておらず、それぞれの VM ゲスト に対して個別に設定する必要があります。全ての仮想マシンを一括で有効化することはできません。

  1. 仮想マシンマネージャ で設定したい VM ゲスト の項目を選んでダブルクリックし、コンソールを表示します。

  2. 表示 › 詳細 を選んで、 VM ゲスト の設定ウインドウを表示します。

  3. ブートオプション を選択し、表示された ホスト起動時に仮想マシンを起動する を選択します。

  4. 適用 を押して新しい設定を保存します。

10.3.2 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

10.4 VM ゲスト の状態保存と状態復元 Edit source

VM ゲスト の状態保存を行うことで、ゲストのメモリの内容を保存することができます。この操作はコンピュータの ハイバネーション (休止状態) に似た操作です。状態保存された VM ゲスト の復元を行うことで、その時点の状態に戻すこともできます。

状態保存を行うと、 VM ゲスト は一時停止状態になり、その時点でのメモリ内容をディスクに保存したあと、 VM ゲスト が停止されます。ただし、この操作では VM ゲスト のディスクのコピーが作成されるわけではありません。また、仮想マシンの状態保存にかかる時間は、割り当てているメモリ量に依存して決まります。状態保存を行うと、 VM ゲスト に割り当てていたメモリが VM ホストサーバ 側に戻され、利用できるようになります。

状態復元の操作は、以前に状態保存しておいた VM ゲスト のメモリ状態を読み込んで、実行中の状態に戻す操作です。ここではゲストの起動処理は発生せず、状態を保存した時点の状態に戻します。この操作は、ハイバネーションからの復帰に似ています。

なお、 VM ゲスト の状態は専用のファイルに保存されます。そのため、保存先のディスクには十分な空き容量があることを確認してください。下記のコマンドをゲスト内で実行すると、おおよそ必要な容量を計算することができます (メガバイト単位で表示されます):

> free -mh | awk '/^Mem:/ {print $3}'
警告
警告: 保存後の復元作業について

VM ゲスト の状態保存を行った後は、必ず状態復元を行うものとし、通常の起動や開始は行ってはなりません。通常の起動や開始を行ってしまうと、マシンの仮想ディスクが途中の状態のまま起動することになってしまうほか、状態保存のファイルとも整合性が取れなくなってしまうため、状態復元を行うと致命的なエラーが発生することになります。

状態保存された VM ゲスト を正しく使用し続けるには、状態復元を忘れずに実施してください。また、 virsh で状態保存を行った場合は、 仮想マシンマネージャ で状態を復元することができません。この場合は virsh で復元を行ってください。

重要
重要: 復元後の VM ゲスト の時刻同期について

VM ゲスト の状態を保存してから長い時間 (2〜3時間以上) が経過した後に復元を行った場合、時刻同期サービスが正しく時刻を修正できなくなったりする場合があります。このような場合は、 VM ゲスト の時刻を手作業で修正してください。たとえば KVM ホストであれば、 QEMU のゲストエージェントを利用することで、 guest-set-time コマンドでゲスト側の時刻を修正することができます。詳しくは 第19章 「QEMU ゲストエージェント をお読みください。

重要
重要: VM ゲスト がディスクタイプ raw , qcow2 のいずれかでなければならない件について

VM ゲスト の状態保存や状態復元を行うには、 VM ゲスト が raw ( .img ) もしくは qcow2 の種類の仮想ディスクを使用している必要があります。

10.4.1 仮想マシンマネージャ を利用した状態保存と状態復元 Edit source

手順 10.3: VM ゲスト の状態保存
  1. VM ゲスト の VNC 接続ウインドウを表示します。また、ゲストが動作中であることを確認します。

  2. 仮想マシン › シャットダウン › 保存 を選択します。

手順 10.4: VM ゲスト の状態復元
  1. VM ゲスト の VNC 接続ウインドウを表示します。また、ゲストが動作中でないことを確認します。

  2. 仮想マシン › 復元 を選択します。

    VM ゲスト を 仮想マシンマネージャ から状態保存していると、ゲストの 実行 オプションが表示されなくなります。ただし、 警告: 保存後の復元作業について で説明しているとおり、 virsh で状態保存を行っている場合に注意してください。

10.4.2 virsh による状態保存と状態復元 Edit source

VM ゲスト の状態保存を行うには、 virsh save に続いて 仮想マシン名 (もしくは ID) と保存先のファイルを指定します。

opensuse13 という名前のゲストを状態保存
> virsh save opensuse13 /virtual/saves/opensuse13.vmsav
ID が 37 のゲストを状態保存
> virsh save 37 /virtual/saves/opensuse13.vmsave

VM ゲスト の状態を復元するには、 virsh restore コマンドを使用します:

> virsh restore /virtual/saves/opensuse13.vmsave

10.5 スナップショットの作成と管理 Edit source

VM ゲスト のスナップショット機能は、 CPU やメモリ、デバイスの状態のほか、書き込み可能な全てのディスクの内容を含む、完全な仮想マシンのスナップショットです。仮想マシンのスナップショット機能を使用するには、接続されている全てのハードディスクが qcow2 形式である必要があるほか、少なくとも 1 つ以上のディスクが書き込み可能である必要があります。

スナップショットを使用することで、その時点でのマシンの状態を自由に復元できるようになります。これは特に、設定を誤ってしまった場合の巻き戻しや、多数のパッケージを誤ってインストールしてしまった場合の取り消しに便利な仕組みです。また、 VM ゲスト がシャットオフ中に採取されたスナップショットを適用した場合は、適用後に起動を行う必要があります。また、スナップショットの適用を行うと、現時点での状態が破棄されます。

注記
注記

スナップショット機能は KVM の VM ホストサーバ にのみ対応しています。

10.5.1 用語 Edit source

スナップショットの種類を説明するにあたって、下記のいくつかの用語を使用しています:

内部スナップショット

スナップショットを元の VM ゲスト の qcow2 ファイル内に保存する方式です。このファイルには、スナップショットで保存された情報と、スナップショットを採取してからの変更点の両方が記録されます。内部スナップショットの利点としては、必要な全ての情報が 1 つのファイル内に保存されていて、マシン間で複製や移動を行う手間が省けるという点にあります。

外部スナップショット

外部スナップショットでは、元の qcow2 ファイルを保存して読み込み専用とし、それとは別に新しく qcow2 ファイルを作成してそこに変更点を記録します。元のファイルは バッキング もしくは ベース ファイルと呼ばれ、新しく作成したほうのファイルは オーバーレイ もしくは 派生 ファイルと呼ばれます。外部スナップショットは、 VM ゲスト のバックアップを作成する際に便利です。ただし、外部スナップショットは 仮想マシンマネージャ ではサポートしておらず、 virsh でも直接削除することができません。 QEMU での外部スナップショットについて、詳しくは 33.2.4項 「ディスクイメージの効率的な使用」 をお読みください。

動作中スナップショット

VM ゲスト の動作中に採取するスナップショットを意味します。内部スナップショット形式での動作中スナップショットの場合、デバイスとメモリ、ディスクの各状態を保存することができます。 virsh を利用した外部スナップショット形式での動作中スナップショットの場合は、メモリとディスクのうちいずれか、もしくはその両方の状態を保存することができます。

オフラインスナップショット

VM ゲスト がシャットオフ (シャットダウン) されている間に採取するスナップショットを意味します。ゲストが動作していない状態で採取することから、メモリも使用されていない状態になりますので、矛盾を一切発生させずに採取することができるようになります。

10.5.2 仮想マシンマネージャ を利用したスナップショットの作成と管理 Edit source

重要
重要: サポートは内部スナップショットのみである件について

仮想マシンマネージャ では動作中スナップショットであってもオフラインスナップショットであっても、内部スナップショットにしか対応していません。

仮想マシンマネージャ でスナップショットの管理ビューを表示するには、まず 10.2.1.1項 「仮想マシンマネージャ を利用したグラフィカルコンソールの表示」 の手順で VNC のウインドウを表示します。その後、 表示 › スナップショット を選択するか、ツールバーから 仮想マシンのスナップショットを管理 を選択します。

選択した VM ゲスト に対する既存のスナップショットの一覧が、ウインドウの左側に表示されます。現時点での最新のスナップショットには、緑色のチェックマークが付けられます。ウインドウの右側には、左側で選択しているスナップショットの詳細が表示されます。詳細にはスナップショットのタイトルとタイムスタンプのほか、採取時点での VM ゲスト の状態や説明などが表示されます。また、動作中スナップショットである場合には、その時点でのスクリーンショットも表示されます。なお、 詳細 の内容については、この表示から変更することができます。それ以外のスナップショットデータについては、変更できません。

10.5.2.1 スナップショットの作成 Edit source

VM ゲスト に対して新しいスナップショットを採取するには、下記の手順を実施します:

  1. オフラインスナップショットを採取する場合は、まず VM ゲスト をシャットダウンします。

  2. VNC ウインドウ内の左下にある 新しいスナップショットを作成 ボタンを押します。

    スナップショットを作成 ウインドウが表示されます。

  3. 名前 欄にスナップショットの名前を入力します。必要であれば、 詳細 欄に詳細を記述します。名前は作成後に変更することはできません。後からスナップショットの状況がわかるような名前を入力してください。

  4. 完了 を押すと採取が行われます。

10.5.2.2 スナップショットの削除 Edit source

選択した VM ゲスト のスナップショットを削除するには、下記の手順を実施します:

  1. VNC ウインドウ内の左下にある 選択したスナップショットを削除 ボタンを押します。

  2. 削除の確認メッセージが表示されますので、 はい を押します。

10.5.2.3 スナップショットの開始 Edit source

選択したスナップショットで開始するには、下記の手順を実施します:

  1. VNC ウインドウ内の左下にある 選択したスナップショットを実行 ボタンを押します。

  2. 開始の確認メッセージが表示されますので、 はい を押します。

10.5.3 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)

10.5.3.1 内部スナップショットの作成 Edit source

VM ゲスト に対して内部スナップショットを採取するには、それが動作中スナップショットであってもオフラインスナップショットであっても、 snapshot-create-as コマンドを使用します:

> virsh snapshot-create-as --domain admin_server1 --name "Snapshot 1"2 \
--description "First snapshot"3

1

VM ゲスト の名前を指定します。必ず指定します。

2

スナップショットの名前を指定します。後からスナップショットの状況がわかるような名前を入力してください。

3

スナップショットの説明を指定します。指定しなくてもかまいません。

10.5.3.2 外部スナップショットの作成 Edit source

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 セクション (英語) をお読みください。

10.5.3.3 スナップショットの削除 Edit source

外部スナップショットは virsh では削除できません。 VM ゲスト の内部スナップショットを削除し、占有していたディスク領域を解放するには、 snapshot-delete コマンドを使用します:

> virsh snapshot-delete --domain admin_server --snapshotname "Snapshot 2"

10.5.3.4 スナップショットの開始 Edit source

指定したスナップショットで開始するには、 snapshot-revert コマンドを使用します:

> virsh snapshot-revert --domain admin_server --snapshotname "Snapshot 1"

現在のスナップショット (VM ゲスト を最後にシャットダウンした状態) を開始する場合は、スナップショットの名前ではなく、 --current オプションを指定すれば十分です:

> virsh snapshot-revert --domain admin_server --current

10.6 VM ゲスト の削除 Edit source

既定では、 virsh による VM ゲスト の削除では、 XML 形式の設定ファイルのみを削除します。接続されているストレージは既定では削除されませんので、他の VM ゲスト に接続しなおして使用することもできます。 仮想マシンマネージャ を使用する場合は、同時にストレージファイルも削除することができます。

10.6.1 仮想マシンマネージャ を利用した VM ゲスト の削除 Edit source

  1. 仮想マシンマネージャ 内にある VM ゲスト の項目を選択して、マウスの右ボタンを押します。

  2. 表示されたコンテキストメニューから、 削除 を選択します。

  3. 確認メッセージが表示されますので、再度 削除 ボタンを押します。これにより、 VM ゲスト を恒久的に削除することができます。また、削除は取り消すことができません。

    仮想ディスクについても同時に削除したい場合は、 関連するストレージファイルを削除する を選択します。こちらについても削除を取り消すことはできません。

10.6.2 virsh を利用した VM ゲスト の削除 Edit source

VM ゲスト を削除するには、まずシャットダウンしておく必要があります。動作中の場合、ゲストを削除することができません。シャットダウンに関する情報については、 10.3項 「VM ゲスト の状態変更 (開始/停止/一時停止)」 をお読みください。

virsh を使用して VM ゲスト を削除するには、 virsh undefine VM_名 のように入力して実行します。

> virsh undefine sles12

接続されているストレージファイルを自動的に削除するオプションは用意されていません。 libvirt でストレージファイルを管理している場合は、 8.2.1.4項 「ストレージプールからのボリュームの削除」 の手順に従って削除を行ってください。

10.7 VM ゲスト の移行 (マイグレーション) Edit source

仮想化を利用する際の大きな利点のうちの 1 つとして、 VM ゲスト の可搬性があげられます。 VM ホストサーバ をメンテナンスなどの理由でダウンさせる必要がある場合や、ホストの負荷が大きすぎるような場合や、容易にゲストを他の VM ホストサーバ に移行させることができます。なお、 KVM と Xen の両方が ライブ マイグレーションに対応し、 VM ゲスト を動作させ続けながら移行を行うことができます。

10.7.1 移行要件 Edit source

VM ゲスト を他の VM ホストサーバ に移行させる場合、下記の要件を満たす必要があります:

重要
重要

事後にコピーする種類のライブマイグレーション (サポート対象外であるほか、本番環境では推奨しません) を実行する場合、カーネルバージョンが 5.11 もしくはそれ以降では、 unprivileged_userfaultfd のシステム変数を 1 に設定する必要があります:

> sudo sysctl -w vm.unprivileged_userfaultfd=1

カーネルバージョン 5.11 以前のバージョンを使用している場合は、事後コピーを使用する際に unprivileged_userfaultfd を設定する必要はありません。 libvirt 側では以前と同じ動作になるよう、 /usr/lib/sysctl.d/60-qemu-postcopy-migration.conf ファイルで設定を行っています。

  • 移行元と移行先のシステムが、同じアーキテクチャでなければなりません。

  • 移行元と移行先の両方のマシンから、同じストレージデバイスにアクセスできなければなりません (たとえば NFS や iSCSI などを使用します) 。また、両方のマシンでストレージプールを設定しなければなりません。詳しくは 第12章 「高度なストレージ設定 をお読みください。

    移行時に CD-ROM やフロッピィディスクのメディアが挿入されている場合は、それらも両方のマシンからアクセスできなければなりません。ただし、この場合は移行時に前もって 13.11項 「仮想マシンマネージャ を利用したフロッピィもしくは CD/DVD-ROM メディアの取り出しと交換」 の手順に従い、メディアを取り出しておくことができます。

  • libvirtd を両方の VM ホストサーバ で動作させる必要があるほか、移行元と移行先の間で libvirt の接続ができる環境でなければなりません (双方向での接続が必要です) 。詳しくは 11.3項 「リモート接続の設定」 をお読みください。

  • 移行先のホストでファイアウオール機能が動作している場合、移行を許可するためにポートを開いておく必要があります。移行処理時にポートを指定しなかった場合、 libvirt は 49152 から 49215 までの範囲でポートを選択します。 移行先のホスト でファイアウオールを設定し、この範囲のポートを開いておくか、移行時に明示的に指定するポートを開いておいてください。

  • 移行元と移行先のマシンがネットワーク内の同じサブネットに属している必要があります。そうでないと、移行後にネットワークが正しく動作しなくなってしまいます。

  • 移行に参加する全ての VM ホストサーバ の qemu ユーザの UID が同じ値でなければならないほか、 kvm, qemu, libvirt の各グループについて GID が同じ値でなければなりません。

  • 移行先のホストで、同じ名前の実行中もしくは一時停止中の VM ゲスト が存在していてはなりません。また、同じ名前のシャットダウン済みの VM ゲスト が存在した場合、設定は上書きされます。

  • ホスト CPU を除く全ての CPU モデルが VM ゲスト の移行に対応しています。

  • ディスクデバイスの種類が SATA である場合、移行を行うことができません。

  • ファイルシステムのパススルー機能を使用している場合、移行を行うことができません。

  • VM ホストサーバ と VM ゲスト の両方で、適切な時刻維持を設定する必要があります。詳しくは 第17章 「VM ゲスト の時刻設定 をお読みください。

  • ホストからゲストに対して、物理的なデバイスを受け渡していてはなりません。具体的には、 PCI パススルーや SR-IOV を利用している場合、移行を行うことができません。ライブマイグレーションに対応させる必要がある場合は、ソフトウエアによる仮想化 (準仮想化もしくは完全仮想化) をお使いください。

  • キャッシュモードの設定は、移行処理に際して重要な設定となります。詳しくは 16.6項 「キャッシュモードとライブマイグレーションの関係」 をお読みください。

  • 両方のホストでイメージディレクトリが同じパスである必要があります。

  • 全てのホストで同じレベルのマイクロコードを適用している必要があります (特に spectre マイクロコードアップデート) 。これは全てのホストで最新の openSUSE Leap の更新を適用することで、容易に解決することができます。

10.7.2 仮想マシンマネージャ を利用した移行 Edit source

仮想マシンマネージャ を利用して VM ゲスト の移行を行う場合、どのマシンからそれを実施してもかまいません。移行元のマシンで 仮想マシンマネージャ を動作させて移行してもかまいませんし、移行先や全く無関係なコンピュータで 仮想マシンマネージャ を利用して移行してもかまいません。ただし、無関係なコンピュータを利用する場合は、移行元と移行先の両方にリモート接続できる環境を用意する必要があります。

  1. まずは 仮想マシンマネージャ を起動し、移行元のホストと移行先のホストの両方に接続します。移行元でも移行先でもないコンピュータで 仮想マシンマネージャ を起動する場合、両方のホストへの接続ができる環境をご用意ください。

  2. 移行対象の VM ゲスト を選択してマウスの右ボタンを押し、 移行 を選択します。なお、 VM ゲスト が実行中であるか、一時停止中であることを確認してください。シャットダウン (シャットオフ) されているコンピュータに対しては、ゲストを移行することができません。

    ヒント
    ヒント: 移行速度の向上について

    移行速度を向上させるには、 VM ゲスト を一時停止させる方法があります。これは従来のバージョンの 仮想マシンマネージャ における オフラインマイグレーション と等価な意味を持ちます。

  3. 移行先のホスト を選択します。移行先のホストが一覧に現れていない場合は、ホストに接続されているかどうかを確認してください。

    リモートのホストに接続する際の既定のオプションを変更するには、 接続 以下にある モードアドレス (IP アドレスもしくはホスト名) 、そして ポート をそれぞれ変更します。 ポート を指定した場合、 アドレス も指定しなければなりません。

    詳細なオプション を選択すると、移行処理を恒久的に行う (既定値) か一時的に行う (一時的に移動) かを選択することができます。

    また、必要であれば 安全ではない場合を許可する を選択することもできます。この場合、 VM ホストサーバ のキャッシュを無効化せずに移行を行うことになります。これにより移行処理を高速化することができますが、 cache="none" / 0_DIRECT を使用せずに VM ゲスト のストレージに対して矛盾せずにアクセスできる設定が必要となります。

    注記
    注記: 帯域幅オプションについて

    新しいバージョンの 仮想マシンマネージャ では、移行時の帯域設定オプションの設定が削除されています。帯域幅を指定して移行したい場合は、 virsh をお使いください。

  4. 移行を開始するには、 マイグレーション を押します。

    移行が完了すると、 移行 ウインドウが閉じられ、 VM ゲスト が 仮想マシンマネージャ ウインドウ内の新しいホストの下に表示されることになります。ただし、移行元の VM ゲスト はそのまま残されます (シャットダウン状態になります) 。

10.7.3 virsh を利用した移行 Edit source

virsh migrate で VM ゲスト の移行を行う場合、ホスト内でコマンドを実行する必要があることから、 VM ホストサーバ のシェルに直接接続する必要があります。移行コマンドは下記のようになります:

> virsh migrate [OPTIONS] VM_の_ID_または名前 接続_URI [--migrateuri tcp://ホスト名:ポート]

最もよく使用されるオプションは下記のとおりです。完全な一覧を読みたい場合は、 virsh help migrate を実行してください。

--live

ライブマイグレーションを行います。指定しない場合、ゲストは移行時に一時停止状態になります ( オフラインマイグレーション ) 。

--suspend

オフラインマイグレーションを行い、移行先のホストでは VM ゲスト を再開しないようにします。

--persistent

既定では、移行した VM ゲスト は一時的な移行として扱われ、移行先のホストで VM ゲスト をシャットダウンすると、設定は自動的に削除されます。このオプションを指定すると、移行処理を恒久的なものにすることができます。

--undefinesource

これを指定した場合、移行処理が成功すると、移行元のホスト内での VM ゲスト の定義を削除するようになります (ただし、ゲストに接続されていた仮想ディスクについては、削除が 行われません ) 。

--parallel --parallel-connections 接続数

移行元と移行先のホスト間でデータを転送する際、 1 スレッドだけではネットワークリンクを使い切れないような場合、並行 (パラレル) マイグレーションを使用することができます。たとえば 40 GB のネットワークインターフェイスを持つホストの場合、 4 つのスレッドを利用する必要があるかもしれません。また並行マイグレーションを使用すると、メモリ量の大きい VM の移行にかかる時間を削減することもできます。

下記の例では、移行元のホストを mercury.example.com 、移行先のホストを jupiter.example.com とし、 VM ゲスト の名前が opensuse131 (ID 37) であるものとして記述しています。

既定のパラメータによるオフラインマイグレーション
> virsh migrate 37 qemu+ssh://tux@jupiter.example.com/system
既定のパラメータによる一時的なライブマイグレーション
> virsh migrate --live opensuse131 qemu+ssh://tux@jupiter.example.com/system
恒久的なライブマイグレーション (成功時に移行元の VM 定義を削除する設定)
> virsh migrate --live --persistent --undefinesource 37 \
qemu+tls://tux@jupiter.example.com/system
ポート 49152 を使用したオフラインマイグレーション
> virsh migrate opensuse131 qemu+ssh://tux@jupiter.example.com/system \
--migrateuri tcp://@jupiter.example.com:49152
注記
注記: 暫定移行と恒久移行の違いについて

既定では、 virsh migrate コマンドは移行先のホスト内に、一時的な (暫定的な) コピーを作成します。移行元のホストには、元のゲストがシャットダウン状態で残されます。一時的なコピーは、ゲストをシャットダウンするとサーバから削除されてしまいます。

移行先のホストに恒久的なコピーを作成したい場合は、 --persistent オプションを指定してください。ただし、この場合も移行元のホストには、元のゲストをシャットダウンしたものが残ります。なお、 --persistent オプションと --undefinesource オプションを指定することで、移行先に恒久的なコピーを作成し、移行元のホストからは削除することができます。

なお、 --persistent を指定せずに --undefinesource を指定することは避けておくことをお勧めします。この場合、移行が完了した時点で移行元のゲストが削除され、移行先ではシャットダウンを行うことでゲストの設定が削除されてしまうためです。

10.7.4 手順例 Edit source

10.7.4.1 ストレージのエクスポート Edit source

まずはホスト間でゲストのイメージを共有するため、ストレージのエクスポートを行います。エクスポートは NFS サーバを構築することで実現することができます。下記の例では、 10.0.1.0/24 のネットワーク内にある全てのマシンに対して、 /volume1/VM というディレクトリを共有しています。ここでは SUSE Linux Enterprise の NFS サーバを使用するものとします。 root ユーザで /etc/exports ファイルを編集し、下記の内容を追加します:

/volume1/VM 10.0.1.0/24  (rw,sync,no_root_squash)

NFS サーバを再起動します:

> sudo systemctl restart nfsserver
> sudo exportfs
/volume1/VM      10.0.1.0/24

10.7.4.2 宛先のホストにおけるプールの定義 Edit source

VM ゲスト の移行に使用するそれぞれのホストでは、ゲストのイメージを含んでいるボリュームにアクセスすることができるよう、プールを定義しなければなりません。ここでは NFS サーバが 10.0.1.99 にあり、共有が /volume1/VM というディレクトリに存在し、これを /var/lib/libvirt/images/VM ディレクトリにマウントする場合の例です。プール名は VM という名前であるものとします。プールを定義するには、 VM.xml というファイルを作成し、下記の内容を記述します:

<pool type='netfs'>
  <name>VM</name>
  <source>
    <host name='10.0.1.99'/>
    <dir path='/volume1/VM'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/VM</path>
    <permissions>
      <mode>0755</mode>
      <owner>-1</owner>
      <group>-1</group>
    </permissions>
  </target>
  </pool>

あとはこの内容を libvirt に読み込ませるため、 pool-define コマンドを使用します:

# virsh pool-define VM.xml

なお、 virsh コマンドを直接使用してプールを定義することもできます:

# virsh pool-define-as VM --type netfs --source-host 10.0.1.99 \
     --source-path /volume1/VM --target /var/lib/libvirt/images/VM
プール VM が定義されました

以後のコマンドは、 virsh に何もパラメータを指定せずに実行した場合に提供される、 virsh の対話型シェルを利用して設定しています。あとはプールをホストの起動時に自動的に開始させる (autostart オプション) ようにします:

virsh # pool-autostart VM
プール VM が自動起動としてマークされました

autostart を無効化したい場合は、下記のように入力して実行します:

virsh # pool-autostart VM --disable
プール VM の自動起動マークが解除されました

あとはプールが存在しているかどうかを調べます:

virsh # pool-list --all
 名前                 状態       自動起動
-------------------------------------------
 default              動作中     はい (yes)
 VM                   動作中     はい (yes)

virsh # pool-info VM
名前:           VM
UUID:           42efe1b3-7eaa-4e24-a06a-ba7c9ee29741
状態:           動作中
永続:           はい (yes)
自動起動:       はい (yes)
容量:           2.68 TiB
割り当て:       2.38 TiB
利用可能:       306.05 GiB
警告
警告: 全ての宛先ホストでプールが存在する必要性について

このプールは、 VM ゲスト を移行できるようにするため、各ホストでそれぞれ定義しておかなければなりません。ご注意ください。

10.7.4.3 ボリュームの作成 Edit source

ここまでの手順で、プールの定義は完了しています。あとはディスクイメージを含むボリュームを作成します:

virsh # vol-create-as VM sled12.qcow2 8G --format qcow2
ボリューム sled12.qcow2 が作成されました

ここで指定したボリューム名は、 virt-install でゲストをインストールする際に使用することができます。

10.7.4.4 VM ゲスト の作成 Edit source

ここまでの手順を行ってきたら、あとは virt-installopenSUSE Leap の VM ゲスト を作成するだけです。 VM プールを --disk オプションで指定します。また、後から移行処理を行うことを考慮して、 cache=none オプションを設定しておくことをお勧めします。これを設定しておかないと、移行時に --unsafe オプションを付けなければならなくなるためです。

# virt-install --connect qemu:///system --virt-type kvm --name \
   sled12 --memory 1024 --disk vol=VM/sled12.qcow2,cache=none --cdrom \
   /mnt/install/ISO/SLE-12-Desktop-DVD-x86_64-Build0327-Media1.iso --graphics \
   vnc --os-variant sled12
Starting install...
Creating domain...

10.7.4.5 VM ゲスト の移行 Edit source

これで移行処理を行うことができるようになります。移行元の VM ホストサーバ で移行先を指定しながら migrate コマンドを実行します。

virsh # migrate --live sled12 --verbose qemu+ssh://IP/ホスト名/system
Password:
マイグレーション: [ 12 %]

10.8 監視 Edit source

10.8.1 仮想マシンマネージャ を利用した監視 Edit source

仮想マシンマネージャ を起動して VM ホストサーバ に接続すると、動作中のゲストの CPU 使用率が表示されます。

このツールでは、ディスクやネットワークの使用率に関する情報も表示することができます。ただし、あらかじめ 設定 で機能を有効化しておかなければなりません:

  1. virt-manager を起動します。

  2. 編集 › 設定 を選択します。

  3. 全般 から ポーリング のタブに切り替えます。

  4. 悲痛に応じて、監視したい項目を選択します。それぞれ ディスク I/O の取得 , ネットワーク I/O の取得 , メモリーの統計を取得する です。

  5. また、必要であれば 状態の更新間隔 の値も調整します。

  6. 設定 ダイアログを閉じます。

  7. あとは 表示 › グラフ 以下にある項目を選択して、グラフを表示させてください。

すると、ディスクやネットワークの統計情報が、 仮想マシンマネージャ のメインウインドウ内に表示されるようになります。

より詳しいデータを閲覧したい場合は、 VNC ウインドウからご確認ください。 VNC ウインドウの表示方法は 10.2.1項 「グラフィカルコンソールの表示」 で説明しています。ツールバーから 仮想マシンの情報を表示 を押すか、もしくは 表示 › 詳細 を選択してください。統計情報は左側のメニュー内にある 性能 を選択すると、表示されるようになります。

10.8.2 virt-top を利用した監視 Edit source

virt-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 順です。柿の木ー入力を行うことで、並び順を変更することができます:

ShiftP : CPU の使用率
ShiftM : ゲストに割り当てているメモリ量
ShiftT : 時間
ShiftI : ID

その他の情報をもとに並べ替えを行いたい場合は、 ShiftF を押して、表示される一覧から項目を選択してください。並び順を逆にしたい場合は、 ShiftR を押します。

virt-top では、 VM ゲスト のデータをさまざまな形で表示することができます。これらは下記のキー入力を行うことで、即時に変更することができます:

0 : 既定の表示
1 : 物理 CPU の表示
2 : ネットワークインターフェイスの表示
3 : 仮想ディスクの表示

virt-top には表示を変更するためのさまざまなキー入力や、プログラムの動作を変更するためのさまざまなコマンドラインが用意されています。詳しくは man 1 virt-top をお読みください。

10.8.3 kvm_stat を利用した監視 Edit source

kvm_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 秒間隔で更新
                            # (表計算プログラムなどに取り込むことができます)
例 10.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 (英語) をお読みください。

このページを印刷