目次
QEMU が実行中であればモニタコンソールが提供され、ユーザとの対話操作が可能と なります。モニタコンソールでのコマンドを利用すると、動作中のオペレーティング システムの調査やリムーバブルメディアの交換を行なったり、スクリーンショットや サウンドデータを採取したり、その他仮想マシンに関するいくつかの制御を行なうこと ができます。
QEMU からモニタコンソールにアクセスするには、 Ctrl+Alt+2 を押します。 QEMU の モニタコンソールから抜けたい場合は、 Ctrl+Alt+1 を押します。
コンソールの使用中にヘルプを表示させたい場合は、 help か
? コマンドを利用します。また、特定のコマンドに対してヘルプを
表示するには、 help コマンド
のように入力します。
ゲストシステムについての情報を取得するには info オプション
コマンドを利用します。何もオプションを指定せずに実行すると、利用可能なオプションの
一覧が表示されます。オプションでは分析したい項目を指定します:
QEMU のバージョンを表示します。
利用可能な QMP コマンドを表示します。
ネットワークの状態を表示します。
キャラクタデバイスを表示します。
ハードディスクドライブやフロッピィディスクドライブ、 CD-ROM ドライブ など、ブロックデバイスについての情報を表示します。
ブロックデバイスについての読み込み/書き込み統計情報を表示します。
CPU レジスタを表示します。
利用可能な CPU についての情報を表示します。
コマンドラインの履歴を表示します。
割り込みに関する統計情報を表示します。
i8259 (PIC) の状態を表示します。
PCI に関する情報を表示します。
仮想メモリと物理メモリのマッピング情報を表示します。
有効な仮想メモリのマッピング情報を表示します。
ダイナミックコンパイラの情報を表示します。
KVM の情報を表示します。
NUMA の情報を表示します。
ゲスト側の USB デバイスの情報を表示します。
ホスト側の USB デバイスの情報を表示します。
プロファイル情報を表示します。
キャプチャ (オーディオ録音) 情報を表示します。
現在保存されている仮想マシンのスナップショットについて、 情報を表示します。
現在の仮想マシンの情報を表示します。
PCMCIA の状態を表示します。
ゲスト側のどのマウスがイベントを受信しているかを 表示します。
VNC サーバ情報を表示します。
現在の仮想マシン名を表示します。
現在の仮想マシンの UUID を表示します。
ユーザネットワークのスタック接続状態を表示します。
マイグレーション状態を表示します。
バルーンデバイスの情報を表示します。
デバイスの木構造を表示します。
qdev デバイスモデルリストを表示します。
ROM の情報を表示します。
現在のマイグレーション xbzrle (=Xor Based Zero Run Length Encoding; XOR ベースのゼロ長エンコーディング) のキャッシュサイズを 表示します。
xbzrle 圧縮などの様々なマイグレーション機能の状態を表示します。
VM ゲスト のメモリ階層構造を表示します。
利用可能なトレースイベントとその状態を表示します。
VNC のパスワードを変更するには、 change vnc password コマンドを入力し、新しいパスワードを 入力します:
(qemu) change vnc password Password: ******** (qemu)
リムーバブルメディアデバイスに接続されているデバイスやファイルを開放 (取り出す)
には、 eject デバイス名
コマンドを
利用します。 -f
オプションを指定すると、強制的な取り出しを
実行します。
リムーバブルメディア (たとえば CD-ROM など) のメディア交換を行なうには、
change デバイス名
コマンドを
利用します。リムーバブルメディアのデバイス名は、 info block
コマンドで取得できます:
(qemu) info block ide1-cd0: type=cdrom removable=1 locked=0 file=/dev/sr0 ro=1 drv=host_device (qemu) change ide1-cd0 /path/to/image
モニタコンソールから、キーボードやマウスの入力を擬似させることができます。たとえば
お使いのグラフィカルユーザインターフェイス (GUI) が低レベルなキー入力の組み合わせを
奪い取ってしまうような場合 (たとえば X Window での
Ctrl+Alt+F1
など) は、 sendkey キー指定
コマンドでキー入力を送信することができます:
sendkey ctrl-alt-f1
キー指定
オプションで使用するキー名の一覧を表示するには、
sendkey コマンドを入力して Tab を押します。
マウスを制御したい場合は、下記のコマンドを利用することができます:
dx
dy
[dz
]
dx, dy で指定する座標にマウスのポインタを移動します。 dz は任意指定で、 スクロールホイールの移動量を指定します。
値
マウスボタンの状態を変更します (1=左ボタン, 2=中央ボタン, 4=右ボタン) 。
インデックス
どのマウスデバイスがイベントを受け取るかを指定します。インデックスで 指定する値は、 info mice コマンドで取得することができます。
-balloon virtio
オプションを指定して仮想マシンを起動し、
擬似仮想化バルーンデバイスが有効化した場合は、動的にメモリ量の割り当てを変更する
ことができます。バルーンデバイスの有効化について、詳しくは
11.1項 「qemu-kvm を利用した基本インストール」 をお読みください。
バルーンデバイスに関する情報をモニタコンソール内で表示したい場合や、どのデバイスが 有効になっているのかを判断したい場合は、 info balloon コマンドを利用します:
(qemu) info balloon
バルーンデバイスが有効になっている場合は、 balloon
メガバイト
コマンドを実行して、
メモリ量の割り当てを指定することができます:
(qemu) balloon 400
仮想マシン内のメモリをディスクやコンソール出力に保存したい場合は、 下記のコマンドを実行します:
アドレス
サイズ
ファイル名
仮想メモリのダンプを指定した アドレス
から開始し、
サイズ
で指定したサイズ分だけ
ファイル名
のファイルに保存します。
アドレス
サイズ
ファイル名
物理メモリのダンプを指定した アドレス
から開始し、
サイズ
で指定したサイズ分だけ
ファイル名
のファイルに保存します。
フォーマット
アドレス
仮想メモリのダンプを フォーマット
で指定した
形式で、 アドレス
のアドレスから開始します。
フォーマット
は 3 つのパラメータから構成
される文字列で、
を指定します:
カウント
形式
サイズ
カウント
には、ダンプされる項目数を指定します。
形式
には、 x
(16 進数), d
(符号付き 10 進数), u
(符号無し 10 進数), o
(8 進数), c
(キャラクタ), i
(アセンブラ命令) のいずれかを指定します。
サイズ
には、 b
(8 ビット),
h
(16 ビット), w
(32 ビット),
g
(64 ビット) のいずれかを指定します。 x86 環境では、
h
や w
は i
を併記することもでき、この場合はそれぞれ 16 ビットや 32 ビットのコード
命令サイズを選択することができます。
フォーマット
アドレス
物理メモリのダンプを フォーマット
で指定した
形式で、 アドレス
のアドレスから開始します。
フォーマット
は 3 つのパラメータから構成
される文字列で、
を指定します:
カウント
形式
サイズ
カウント
には、ダンプされる項目数を指定します。
形式
には、 x
(16 進数), d
(符号付き 10 進数), u
(符号無し 10 進数), o
(8 進数), c
(キャラクタ), i
(アセンブラ命令) のいずれかを指定します。
サイズ
には、 b
(8 ビット),
h
(16 ビット), w
(32 ビット),
g
(64 ビット) のいずれかを指定します。 x86 環境では、
h
や w
は i
を併記することもでき、この場合はそれぞれ 16 ビットや 32 ビットのコード
命令サイズを選択することができます。
QEMU モニタを利用したスナップショット管理の機能は、 SUSE では公式に サポートはしていませんが、下記の情報は特定の用途で役立つものであるため、 説明のみ行なっているものです。 |
仮想マシンのスナップショットとは、 CPU や RAM の状態、および全ての書き込み可能な
ディスクの内容を含む、その時点での完全な仮想マシンの状態を保存するための仕組み
です。仮想マシンのスナップショット機能を利用するには、少なくとも 1 台以上の
固定された (リムーバブルでない) 書き込み可能なブロックデバイスが必要で、
このディスクは qcow2
形式で存在していなければなりません。
スナップショットは、お使いの仮想マシンを特定の状態で保存しておきたい場合に便利な 仕組みです。たとえば仮想サーバ内でネットワークサービスを設定し、その時点の状態を 保存しておいて、全く同じ状態に素早く復元したいような場合に利用します。 またスナップショットは、何か実験的なことを行なって VM ゲスト を不安定にさせて しまうようなことを行なうような場合、事前にいったん仮想マシンの電源を落としてから その時点でのバックアップを作成するような用途にも利用することができます。 この章では前者のような場合について手順を説明しています。後者のような用途の場合は、 11.2.3項 「qemu-img による仮想マシンのスナップショット管理」 をお読みください。
QEMU モニタでは、スナップショットを管理するのに下記のようなコマンドを利用する ことができます:
名前
名前
でタグ付けした名前で、新しい仮想マシンの
スナップショットを作成します。なお同名のスナップショットが存在した場合は、
上書きされます。
名前
名前
でタグ付けした名前のスナップショットを
読み込みます。
仮想マシンのスナップショットを削除します。
利用可能なスナップショットについて、情報を表示します。
(qemu) info snapshots Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 booting 4.4M 2010-11-22 10:51:10 00:00:20.476 2 booted 184M 2010-11-22 10:53:03 00:02:05.394 3 logged_in 273M 2010-11-22 11:00:25 00:04:34.843 4 ff_and_term_running 372M 2010-11-22 11:12:27 00:08:44.965
下記に示すコマンドが、それぞれ仮想マシンを一時停止 (サスペンド) させたり 復元させたりするためのものです:
仮想マシンの実行を一時停止 (サスペンド) します。
仮想マシンの実行を再開 (レジューム) します。
マシンに対して ACPI シャットダウン要求を送信します。実際のマシンで言うところの 電源ボタンに似た動作になります。
QEMU を即時に終了します。
ライブマイグレーション処理は、任意の仮想マシンを一方のホストシステムから他方の ホストシステムに移行するための仕組みで、可用性を一切損なうことがありません。 移行の処理は恒久的に行なうこともできますし、メンテナンスなどの理由で一時的な 移行を行なうこともできます。なお、移行元と移行先の各ホストは同じアーキテクチャで あることがお勧めですが、 AMD と Intel アーキテクチャの間でも移行できます。
ライブマイグレーションの要件は下記のとおりです:
ライブマイグレーションは、同じ CPU 機能を持つ VM ホストサーバ 同士でのみ実現
できます。ライブマイグレーション対応の CPU モデルは、
-cpu qemu64
(既定値) のみで、追加の機能が何も指定
されていない場合のみです。
物理デバイスをホストからゲストにパススルーすることはできません。
VM ホストサーバ と VM ゲスト は、それぞれ適切な時刻維持機能がインストール されている必要があります。
AHCI インターフェイス, virtfs 機能, -mem-path
コマンドラインオプションは、それぞれマイグレーションとの互換性が
ありません。
SP3 が動作しているホスト上のゲストを、 SP2 や SP1 の動作している ホストに移行することはできません。
仮想マシンのイメージは、移行元と移行先の両方からアクセス可能でなければ なりません。たとえば共有の NFS ディスクなどに配置されている場合などが 該当します。
イメージのディレクトリは、両方のホストで同じパスに配置されている必要が あります。
両方のホストは同じサブネット内に存在していなければなりません。
移行元と移行先のゲストは、いずれも同じ方法で起動されていなければなりません。
ライブマイグレーションは下記の手順で行ないます:
まずは移行元の仮想マシンを動作中の状態にします。
次に仮想マシンを移行先のホストで起動し、一時停止させて移行を受け付けられる
モードにします。起動時のパラメータは移行元のホストと同じもののほか、
-incoming tcp:
を追加で指定します。ここで IP アドレス
:ポート
IP アドレス
には
ライブマイグレーションのデータを受け付ける IP アドレスを、
ポート
には TCP ポートをそれぞれ指定します。
IP アドレスに 0 を指定した場合は、仮想マシンは全てのインターフェイスで
ライブマイグレーションを受け付けるようになります。
次に移行元のホストでモニタコンソールを表示させ、
migrate -d
tcp:移行先 IP アドレス
:ポート
コマンドを入力して、移行作業を開始します。
移行状況を表示するには、移行元のホストにあるモニタコンソールから、 info migrate コマンドを実行します。
移行作業をキャンセルするには、移行元のホストにあるモニタコンソールから、 migrate_cancel コマンドを実行します。
また、移行作業での最大ダウンタイム (サービス停止時間) を指定するには、
migrate_set_downtime
秒数
コマンドを実行します。
移行処理の最大転送速度を [バイト毎秒] の単位で指定するには、
migrate_set_speed
速度
コマンドを実行します。