第15章 virsh を使用したゲスト仮想マシンの管理

virsh は、ゲスト仮想マシンとハイパーバイザーの管理に使用するコマンドラインインターフェースです。virsh コマンドラインツールは、libvirt 管理 API をベースにして構築されており、qemu-kvm コマンドやグラフィカルな virt-manager アプリケーションの代替として機能します。virsh コマンドは、通常のユーザーには読み取り専用モードで使用されますが、root アクセス権を持つユーザーは完全な管理機能を使用できます。virsh コマンドは、仮想化管理のスクリプトを作成する際に最適です。

15.1. 一般的なコマンド

このセクションに記載するコマンドは、いずれかのドメインに固有のものではないため、一般的なコマンドになります。

15.1.1. help

$ virsh help [command|group] help コマンドはオプションと共に、またはオプションなしで使用できます。オプションなしで使用すると、すべてのコマンドが各行に 1 つずつ一覧表示されます。オプションと共に使用される場合は、一覧はカテゴリーにグループ化され、各グループのキーワードが表示されます。
特定のオプションに該当するコマンドのみを表示するには、そのグループのキーワードをオプションとして指定する必要があります。以下のようになります。
$ virsh help pool
 Storage Pool (help keyword 'pool'):
    find-storage-pool-sources-as   find potential storage pool sources
    find-storage-pool-sources      discover potential storage pool sources
    pool-autostart                 autostart a pool
    pool-build                     build a pool
    pool-create-as                 create a pool from a set of args
    pool-create                    create a pool from an XML file
    pool-define-as                 define a pool from a set of args
    pool-define                    define (but don't start) a pool from an XML file
    pool-delete                    delete a pool
    pool-destroy                   destroy (stop) a pool
    pool-dumpxml                   pool information in XML
    pool-edit                      edit XML configuration for a storage pool
    pool-info                      storage pool information
    pool-list                      list pools
    pool-name                      convert a pool UUID to pool name
    pool-refresh                   refresh a pool
    pool-start                     start a (previously defined) inactive pool
    pool-undefine                  undefine an inactive pool
    pool-uuid                      convert a pool name to pool UUID
この同じコマンドをコマンドオプションと共に使用すると、その特定のコマンドオプションについての help 情報が表示されます。以下のようになります。
$virsh help vol-path
  NAME
    vol-path - returns the volume path for a given volume name or key

  SYNOPSIS
    vol-path <vol> [--pool <string>]

  OPTIONS
    [--vol] <string>  volume name or key
    --pool <string>  pool name or uuid

15.1.2. quit と exit

quit コマンドと exit コマンドはターミナルを閉じます。以下のようになります。
$virsh exit
$virsh quit

15.1.3. version

version コマンドは現在の libvirt バージョンを表示し、ビルドについての情報を表示します。以下のようになります。
$ virsh version
Compiled against library: libvirt 1.1.1
Using library: libvirt 1.1.1
Using API: QEMU 1.1.1
Running hypervisor: QEMU 1.5.3

15.1.4. 引数の表示

virsh echo [--shell][--xml][arg] は、指定した引数を表示します。表示される各引数はスペースで区切られます。--shell オプションを使用すると、出力は必要に応じて単一引用符で囲まれるため、シェルコマンドで再利用するのに適しています。--xml オプションを使用すると、出力は XML ファイルでの使用に適したものになります。たとえば、virsh echo --shell "hello world" コマンドの出力は、'hello world' となります。

15.1.5. connect

ハイパーバイザーセッションに接続します。シェルが最初に起動する際、このコマンドは URI パラメーターが -c コマンドによって要求されると自動的に実行されます。URI は、ハイパーバイザーに接続する方法を指定します。最もよく使用される URI は以下になります。
  • xen:/// - ローカルの Xen ハイパーバイザーに接続します。
  • qemu:///system - QEMU および KVM ドメインを監視するデーモンに root としてローカルに接続します。
  • xen:///session - ユーザーの QEMU および KVM ドメインのセットにユーザーとしてローカル接続します。
  • lxc:/// - ローカルの Linux コンテナーに接続します。
他の値については libvert の web サイト (http://libvirt.org/uri.html) を参照してください。
コマンドは以下のように実行できます。
$virsh connect {name|URI}
ここでの {name} は、マシン名 (ホスト名) またはハイパーバイザーの URL (virsh uri コマンドの出力) です。読み取り専用の接続を開始するには、上記のコマンドに --readonly を追加します。URI についての詳細は、リモート URI を参照してください。URI が不明な場合は、virsh uri コマンドを実行すると、表示されます。
$ virsh uri
qemu:///session

15.1.6. 基本的な情報の表示

以下のコマンドは、基本情報を表示するために使用できます。
  • $ hostname - ハイパーバイザーのホスト名を表示します。
  • $ sysinfo - ハイパーバイザーのシステム情報の XML 表現 (ある場合) を表示します。

15.1.7. NMI の挿入

$ virsh inject-nmi [domain] は NMI (マスクが不可能な割り込み) メッセージをゲスト仮想マシンに挿入します。これは、修復不能なハードウェアエラーなどの迅速な応答時間が重要となる場合に使用されます。このコマンドを実行するには、以下のようにします。
$ virsh inject-nmi guest-1