第22章 virsh でゲストを管理
virsh はゲストと hypervisor を管理するための コマンドラインインターフェイスです。
virsh ツールは libvirt 管理 API を 土台にして構築されており、xm コマンドとグラフィカルゲスト マネージャ (virt-manager) への代替として機能します。 virsh は特別権限のないユーザーにより読み込み専用モードで 使用可能です。 virsh を使用してゲストマシン用のスクリプトを 実行することができます。
以下の表では、全ての virsh コマンドラインオプションのクイックリファレンスを 提供します。
| コマンド | 説明 |
|---|---|
help | 基本的なヘルプ情報を表示します。 |
list | 全てのゲストを一覧表示します。 |
dumpxml | ゲスト用の XML 設定ファイルを出力します。 |
create | XML 設定ファイルからゲストを作成して新規のゲストを開始します。 |
start | 停止中のゲストを開始します。 |
destroy | ゲストを強制的に停止します。 |
define | ゲスト用の XML 設定ファイルを出力します。 |
domid | ゲストの ID を表示します。 |
domuuid | ゲストの UUID を表示します。 |
dominfo | ゲスト情報を表示します。 |
domname | ゲスト名を表示します。 |
domstate | ゲストの状態を表示します。 |
quit | 対話式のターミナルを終了します。 |
reboot | ゲストを再起動します。 |
restore | ファイル内に以前に保存されているゲストを復元します。 |
resume | 休止中のゲストを復帰します。 |
save | ゲストの現在の状態をファイルに保存します。 |
シャットダウン中 | ゲストを丁寧にシャットダウンします。 |
suspend | ゲストを休止します。 |
undefine | ゲストに関連のファイルをすべて削除します。 |
migrate | ゲストを別のホストに移行します。 |
virsh コマンドはゲストと hypervisor リソースを 管理します:
| コマンド | 説明 |
|---|---|
setmem | ゲストのために割り当てたメモリーを設定します。 |
setmaxmem | hypervisor 用の最大メモリー限度を設定します。 |
setvcpus | ゲストに割り当てた仮想 CPU の数を変更します。 |
vcpuinfo | ゲストに関して仮想 CPU 情報を表示します。 |
vcpupin | ゲストの仮想 CPU 同類を制御します。 |
domblkstat | 実行中ゲストのブロックデバイス統計を表示します。 |
domifstat | 実行中のゲストのネットワークインターフェイス統計を表示します。 |
attach-device | XML ファイル内のデバイス定義を使用してゲストへデバイスを添付します。 |
attach-disk | 新規のディスクデバイスをゲストに添付します。 |
attach-interface | 新規のネットワークインターフェイスをゲストに添付します。 |
detach-device | ゲストからデバイスを分離し、attach-device コマンドと 同じ種類の XML 記述を提示します。 |
detach-disk | ゲストからディスクデバイスを分離します。 |
detach-interface | ゲストからネットワークインターフェイスを分離します。 |
virsh オプションを示します:
| コマンド | 説明 |
|---|---|
version | virshのバージョンを表示します。 |
nodeinfo | hypervisor に関する情報を出力します。 |
virsh で hypervisor セッションへ接続します:
virsh connect {hostname OR URL}
# virsh connect {hostname OR URL}
<name> は hypervisor のマシン名です。読み込み専用の接続を開始したい場合、上記のコマンドに -readonly を追記します。
virsh でゲストの XML 設定ファイルを出力します:
virsh dumpxml {domain-id, domain-name or domain-uuid}
# virsh dumpxml {domain-id, domain-name or domain-uuid}
stdout) に 出力します。出力をファイルにパイプすることでデータを保存できます。guest.xml と言うファイルへ出力をパイプする例として:
virsh dumpxml GuestID > guest.xml
# virsh dumpxml GuestID > guest.xml
guest.xml はゲストを再作成できるものです。 (ゲスト設定ファイルの編集 を参照) この XML 設定ファイルを編集して追加のデバイスを設定したり、 又は追加のゲストを導入したりすることも出来ます。virsh dumpxml を使用した ファイルの修正に関する情報には、「virsh を用いた XML 設定ファイルの使用」 を参照して下さい。
virsh dumpxml 出力の例:
ゲストは XML 設定ファイルから作成することができます。以前に作成されているゲストから 既存の XML をコピーするか、又は dumpxml オプションを使用します。 (仮想マシン XML ダンプ(設定ファイル)を作成 参照) virsh を 使用して XML ファイルからゲストを作成するには:
virsh create configuration_file.xml
# virsh create configuration_file.xml
dumpxml オプション ( 仮想マシン XML ダンプ(設定ファイル)を作成 を参照) を使用する代わりに、 ゲストは、それが稼働中でも、オフライン中でも編集することができます。virsh edit コマンドがこの機能を提供します。例えば、softwaretesting と 言う名前のゲストを編集するには:
virsh edit softwaretesting
# virsh edit softwaretesting
$EDITOR シェルパラメータです(デフォルトで vi にセット)。
virsh を使用してゲストを休止します:
virsh suspend {domain-id, domain-name or domain-uuid}
# virsh suspend {domain-id, domain-name or domain-uuid}
resume (ゲストの復帰) オプションで再開始する必要があります。
resume オプションと共に virsh を 使用して休止中のゲストを復帰します:
virsh resume {domain-id, domain-name or domain-uuid}
# virsh resume {domain-id, domain-name or domain-uuid}
suspend と resume 操作用に保持されます。
virsh コマンドを使用してゲストの現在の状態をファイルに 保存します:
virsh save {domain-name, domain-id or domain-uuid} filename
# virsh save {domain-name, domain-id or domain-uuid} filename
restore (ゲストの復帰) オプションで復帰することができます。保存は休止と似ていますが、単なる休止の代わりに ゲストの現在の状態が保存されます。
virsh save コマンド(ゲストを保存) で以前に保存されたゲストを virsh を使用して 復帰します:
virsh restore filename
# virsh restore filename
virsh コマンドを使用してゲストをシャットダウンします:
virsh shutdown {domain-id, domain-name or domain-uuid}
# virsh shutdown {domain-id, domain-name or domain-uuid}
on_shutdown パラメータを修正することで制御できます。
virsh コマンドを使用してゲストを再起動します:
#virsh reboot {domain-id, domain-name or domain-uuid}
#virsh reboot {domain-id, domain-name or domain-uuid}
on_reboot エレメントを修正することで制御できます。
virsh コマンドを使用してゲストの停止を強制します:
virsh destroy {domain-id, domain-name or domain-uuid}
# virsh destroy {domain-id, domain-name or domain-uuid}
virsh destroy を使用すると、ゲストのファイルシステムを 破損するかも知れません。destroy オプションは、ゲストが 反応しない時にのみ使用して下さい。para-virtualized ゲスト用には代わりに shutdown オプション (ゲストのシャットダウン) を使用します。
ゲストのドメイン ID を取得するには:
virsh domid {domain-name or domain-uuid}
# virsh domid {domain-name or domain-uuid}
ゲストのドメイン名を取得するには:
virsh domname {domain-id or domain-uuid}
# virsh domname {domain-id or domain-uuid}
ゲストの UUID(Universally Unique Identifier)を取得するには:
virsh domuuid {domain-id or domain-name}
# virsh domuuid {domain-id or domain-name}
virsh domuuid の出力の例:
virsh domuuid r5b2-mySQL01
# virsh domuuid r5b2-mySQL01
4a4c59a7-ee3f-c781-96e4-288f2862f011
ゲストのドメイン ID、ドメイン名、あるいは UUID と共に virsh を 使用すると、指定したゲストの情報を表示することができます:
virsh dominfo {domain-id, domain-name or domain-uuid}
# virsh dominfo {domain-id, domain-name or domain-uuid}
virsh dominfo 出力の例を示します:
ホストに関する情報を表示するには:
virsh nodeinfo
# virsh nodeinfo
virsh nodeinfo 出力の例 :
virsh コマンドを使用してゲストの一覧とその現在状態を 表示するには:
virsh list
# virsh list
--inactive オプション 。そして
--all オプション。 例えば:
virsh list からの出力は6つの状態の1つとして 分類されます(以下の一覧)。
running状態は CPU 上で現在活動中のゲストを 示します。blockedとして表示してあるゲストは阻止されており、 実行していないか、又は実行不可能です。これは I/O 待ちのゲスト(旧来の wait 状態)か、 スリープモードのゲストがその要因です。paused状態は休止中のドメインを一覧表示します。 これは、管理者がvirt-manager、xm pause、 又はvirsh suspendで、pause ボタンを使用する ことで発生します。ゲストが休止している時は、メモリーとその他のリソースを消費しますが、スケジュールと hypervisor からの CPU リソースには無視できる量です。shutdown状態は シャットダウンプロセスにある ゲスト用のものです。ゲストはシャットダウン信号を受けてその運用を丁寧に終了するプロセスに 入るべき状態です。これは全てのゲストオペレーティングシステムでは機能しないかも知れません。 一部のオペレーティングシステムはこの信号に良く反応しません。dying状態のドメインはご臨終のプロセスにある ものです。これはドメインがシャットダウンやクラッシュを完全に終了していない状態を指します。crashedの場合、ゲストは実行中に障害を受け、もう 実行していない状態です。この状態はクラッシュ時にゲストが再スタートしないように設定されている 場合にのみ発生します。
virsh を使用してゲストからの仮想 CPU の情報を 表示するには:
virsh vcpuinfo {domain-id, domain-name or domain-uuid}
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
virsh vcpuinfo 出力の例:
物理 CPU を使用して、仮想 CPU の類似物を設定するには:
virsh vcpupin domain-id vcpu cpulist
# virsh vcpupin domain-id vcpu cpulist
domain-id パラメータはゲストの ID 番号、又は名前です。
vcpu パラメータは、ゲストに割り当てられた仮想 CPU の数を示します。 vcpu パラメータは必須項目です。
cpulist パラメータは、コンマで区切られた物理 CPU の 識別子番号の一覧です。cpulist パラメータはどの物理 CPU で VCPU が稼働するかを決定します。
virsh を使用してゲストに割り当てられた CPU の数を 修正するには:
virsh setvcpus {domain-name, domain-id or domain-uuid} count
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
count 値はゲストが作成された時に指定されたカウントを 超過することは出来ません。
virsh を使用してゲストのメモリー割り当てを修正するには:
virsh setmem {domain-id or domain-name} count
# virsh setmem {domain-id or domain-name} count
virsh domblkstat を使用すると稼働中のゲストの ブロックデバイス統計が表示できます。
virsh domblkstat GuestName block-device
# virsh domblkstat GuestName block-device
virsh domifstat を使用すると、稼働中のゲストの ネットワークインターフェイス統計が表示できます。
virsh domifstat GuestName interface-device
# virsh domifstat GuestName interface-device
ゲストは virsh を使用して別のホストへ移行することが できます。ドメインを別のホストへ移行します。ライブ移行用には --live を追加します。 migrate コマンドは以下の形式のパラメータを受け付けます:
virsh migrate --live GuestName DestinationURL
# virsh migrate --live GuestName DestinationURL
--live パラメータはオプションです。ライブ移行用には --live パラメータを追加します。
GuestName パラメータは移行したいゲストの名前を示します。
DestinationURL パラメータは移行先システムの URL 又はホスト名です。移行先システムは以下を必要とします:
- Red Hat Enterprise Linux の同じバージョン
- 同じ hypervisor (KVM か Xen)、それに
libvirtサービスが開始する必要があります。
このセクションでは、virsh コマンドを使用した仮想化 ネットワークの管理を説明します。仮想化ネットワークを一覧表示するには:
virsh net-list
# virsh net-list
virsh net-dumpxml NetworkName
# virsh net-dumpxml NetworkName
virsh コマンドを以下に示します:
virsh net-autostart [network name]— network-name で指定された ネットワークを自動開始します。virsh net-create XMLfile— 既存の XML ファイルを使用して新規のネットワークを生成して開始します。virsh net-define XMLfile— 既存の XML ファイルから新規のネットワークデバイスを生成しますが開始しません。virsh net-destroy network-name— network-name として指定された ネットワークを破棄します。virsh net-name networkUUID— 指定された networkUUID をネットワーク名に変換します。virsh net-uuid network-name— 指定された network-name をネットワーク UUID に変換します。virsh net-start nameOfInactiveNetwork— 休止中のネットワークを開始します。virsh net-undefine nameOfInactiveNetwork— 休止中のネットワークを定義解除します。