第4章 仮想化コマンドラインインターフェースの使用

Red Hat Enterprise Linux 7 では仮想化を使用する場合、コマンドラインユーザーインターフェース (CLI) を使用するのが標準の方法です。CLI コマンドを入力すると、ホストシステム上で仮想マシンを作成したり、仮想マシンとの対話を行うシステムユーティリティーがアクティブになります。この方法では、virt-manager などのグラフィカルなアプリケーションを使用する場合よりもより詳細に制御を行うことができ、スクリプト化や自動化の可能性が広がります。

4.1. 仮想化の主なコマンドラインユーティリティー

以下のサブセクションでは、Red Hat Enterprise Linux 7 で仮想化を設定および管理するために使用できる主なコマンドラインユーティリティーを取り上げます。これらのコマンドとその他の仮想化ユーティリティーの多くは、Red Hat Enterprise Linux リポジトリーによって提供されるパッケージに含まれており、Yum パッケージマネージャーを使用してインストールできます。
仮想化パッケージのインストールに関する詳細は、『仮想化の導入および管理ガイド』を参照してください。

4.1.1. virsh

virsh は、ハイパーバイザとゲスト仮想マシンを管理するための CLI ユーティリティーです。主にこのユーティリティーを使用して、Red Hat Enterprise Linux 7 上で仮想化を制御します。これには以下の機能が含まれています。
  • 仮想マシンを作成、設定、一時停止、表示、およびシャットダウンします。
  • 仮想ネットワークの管理
  • 仮想マシンの ディスクイメージをロードします。
virsh ユーティリティーは仮想化管理スクリプトの作成に適しています。root 権限を持たないユーザーは読み取り専用で virsh を使用できます。

virsh の使用

virsh ユーティリティーは標準のコマンドライン入力で使用できますが、インタラクティブシェルとして使用することもできます。シェルモードでは、virsh コマンドの接頭辞は必要なく、ユーザーは常に root として登録されます。以下の例は virsh hostname コマンドを使用してハイパーバイザーのホスト名を表示します。最初の例は標準モードで、2 つ目は対話モードの例になります。
 $ virsh hostname
 localhost.localdomain

 $ virsh
 Welcome to virsh, the virtualization interactive terminal.

 Type:  'help' for help with commands
        'quit' to quit

 virsh # hostname
 localhost.localdomain

重要

root 権限を持たないユーザーとして virsh を使用する場合は、特権のない libvirt セッション を使用します。
要素への読み取りアクセスを取得するには virsh コマンドで -c qemu:///system オプションを使用します。

virsh でのヘルプ

Linux のすべての bash コマンドと同様、virsh のヘルプを表示するには、man virsh コマンドまたは --help オプションを使用します。また、virsh help コマンドを使用すると、virsh コマンドに固有するヘルプテキストを表示でき、キーワードを使用すると特定のグループに属する virsh コマンドをすべてリストできます。
virsh コマンドグループとそれらのキーワードは次のとおりです。
  • ゲストの管理: キーワード domain
  • ゲストの監視: キーワード monitor
  • ホストおよびハイパーバイザーの監視および管理: キーワード host
  • ホストシステムのネットワークインターフェースの管理: キーワード interface
  • 仮想ネットワークの管理: キーワード network
  • ネットワークフィルターの管理: キーワード filter
  • ノードデバイスの管理: キーワード nodedev
  • パスフレーズや暗号化キーなどの秘密の管理: キーワード secret
  • スナップショットの管理: キーワード snapshot
  • ストレージプールの管理: キーワード pool
  • ストレージボリュームの管理: キーワード volume
  • 一般的な virsh の使用方法: キーワード virsh
以下の例は、ゲスト仮想マシンの名前を変更する方法を示しています。virsh help を使用して最初に適切なコマンドを探し、その構文を調べます。そして、そのコマンドを使用して Fontaine というゲストの名前を Atlas に変更します。

例4.1 キーワードを使用してすべてのコマンドの help を一覧表示する方法

virsh help domain
 Domain Management (help keyword 'domain'):
    attach-device                  attach device from an XML file
    attach-disk                    attach disk device
    [...]
    domname                        convert a domain id or UUID to domain name
    domrename                      rename a domain
    [...]
# virsh help domrename
 NAME
   domrename - rename a domain

 SYNOPSIS
   domrename <domain> <new-name>

 DESCRIPTION
   Rename an inactive domain.

 OPTIONS
   [--domain] <string>  domain name, id or uuid
   [--new-name] <string>  new domain name

# virsh domrename --domain Fontaine --new-name Atlas
Domain successfully renamed

注記

virsh を使用した仮想マシンの管理に関する詳細は、『Red Hat Enterprise Linux 7 仮想化の導入および管理ガイド』を参照してください。

4.1.2. virt-install

virt-install は、新規仮想マシンを作成する CLI ユーティリティーです。このユーティリティーは、シリアルコンソール、SPICE、または VNC クライアント/サーバーペアグラフィックを使用して、テキストベースのインストールとグラフィカルインストールの両方をサポートします。インストールメディアはローカルに配置でき、NFS、HTTP、または FTP サーバー上でリモートに配置することもできます。このツールを使用すると、無人で稼働し、キックスタートを使用してゲストを準備するよう設定できるため、インストールの自動化が容易になります。このツールは virt-install パッケージに含まれています。

重要

root 権限のないユーザーとして virt-install を使用する場合は、特権のない libvirt セッション を使用します。この場合、作成したゲストは作成者のみに表示され、root 権限を持つユーザーが作成したゲストが持つ機能の一部を使用できません。

注記

virt-install の使用に関する詳細は、『Red Hat Enterprise Linux 7 仮想化の導入および管理ガイド』を参照してください。

4.1.3. virt-xml

virt-xml は、ドメイン XML ファイルを編集するためのコマンドラインユーティリティーです。XML の設定を正常に変更するには、ゲストの名前、XML のアクション、および変更内容がコマンドに含まれている必要があります。
たとえば、以下はゲスト起動設定に関連するサブオプションを表示し、example_domain ゲストの起動メニューをオンにします。
# virt-xml boot=?
 --boot options:
   arch
   cdrom
   [...]
   menu
   network
   nvram
   nvram_template
   os_type
   smbios_mode
   uefi
   useserial
# virt-xml example_domain --edit --boot menu=on
Domain 'example_domain' defined successfully.
コマンドの各呼び出しは、ドメイン XML ファイルごとに 1 つのアクションを実行できることに注意してください。

注記

このツールは virt-install パッケージに含まれています。virt-xml の使用に関する詳細は virt-xml の man ページを参照してください。

4.1.4. guestfish

guestfish は仮想マシンのディスクイメージを検証および編集するためのコマンドラインユーティリティーです。libguestfs ライブラリーを使用し、 libguestfs API によって提供される機能をすべて公開します。

guestfish の使用

guestfish ユーティリティーは標準のコマンドライン入力で使用できますが、インタラクティブシェルとして使用することもできます。シェルモードでは、guestfish コマンドの接頭辞は必要なく、ユーザーは常に root として登録されます。以下の例は guestfish コマンドを使用して testguest 仮想マシン上のファイルシステムを表示します。最初の例は標準モードで、2 つ目は対話モードの例になります。
# guestfish domain testguest : run : list-filesystems
/dev/sda1: xfs
/dev/rhel/root: xfs
/dev/rhel/swap: swap
# guestfish

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
	  'man' to read the manual
	  'quit' to quit the shell

><fs> domain testguest
><fs> run
><fs> list-filesystems
/dev/sda1: xfs
/dev/rhel/root: xfs
/dev/rhel/swap: swap
また、自動化の目的で guestfishbash スクリプト で使用することもできます。

重要

guestfish を root 権限を持たないユーザーとして使用する場合、特権のない libvirt セッション を使用します。この場合、root 権限を持つユーザーによって作成されたゲストのディスクイメージを見ることはできず、対話することもできません。
これらのディスクイメージに読み取り専用アクセスできるようにするには、guestfish-ro -c qemu:///system オプションを使用します。また、ディスクイメージファイルの読み取り権限が必要です。

guestfish のヘルプ

すべての bash コマンドと同様、guestfish のヘルプを表示するには、man guestfish コマンドまたは --help オプションを使用します。また、guestfish help コマンドを使用すると、guestfish コマンドに固有する詳細情報を表示できます。以下の例は、guestfish add コマンドに関する情報を表示します。
$ guestfish help add
NAME
    add-drive - add an image to examine or modify

SYNOPSIS
     add-drive filename [readonly:true|false] [format:..] [iface:..] [name:..] [label:..] [protocol:..] [server:..] [username:..] [secret:..] [cachemode:..] [discard:..] [copyonread:true|false]

DESCRIPTION
    This function adds a disk image called filename to the handle. filename
    may be a regular host file or a host device.
    [...]

注記

guestfish の使用に関する詳細は、『Red Hat Enterprise Linux 7 仮想化の導入および管理ガイド』を参照してください。