Tools: libvirt and virsh/virt-manager

Prerequisites

libvirt default ネットワークの動作確認

libvirt を用いて仮想マシンを作成する前に、libvirt の default ネットワークが起動していることを確認します。このネットワークは、仮想マシンが外部のネットワークに接続できるよう、有効化されている必要があります。このネットワークを起動することにより、Linux ブリッジ (通常 virbr0)、iptables ルール、DHCP サーバーとして動作する dnsmasq が作成されます。

libvirt の default ネットワークが有効化されていることを確認するために、 virsh net-list コマンドを使用して、 default ネットワークが有効であることを確認します。

# virsh net-list
Name                 State      Autostart
-----------------------------------------
default              active     yes

ネットワークが動作していない場合、以下を実行して起動します。

# virsh net-start default

仮想マシンマネージャー X11 GUI の使用

X11 アプリケーションを実行できるマシンに仮想マシンイメージを作成する予定ならば、最も簡単にそうする方法は、 virt-manager GUI を使用することです。これは、Fedora 系と Debian 系のシステムにおいて、 virt-manager パッケージとしてインストールできます。この GUI は、ゲストのグラフィカルコンソールを表示および操作できる、組み込みの VNC クライアントを持ちます。

コンソールの無いサーバーにイメージを構築していて、ローカルマシンに X サーバーが有る場合、GUI にアクセスするために、SSH の X11 転送を使用して virt-manager を起動できます。仮想マシンマネージャーは、libvirt と直接通信するため、アクセスするためには、一般的に root になる必要があります。root (または、libvirt と通信する権限を持つユーザー) として直接 SSH できる場合、次のとおり実行します。

$ ssh -X root@server virt-manager

サーバーに SSH するために使用するアカウントが、libvirt を実行する権限を持たず、sudo 権限を持つ場合、次のとおり実行します。

$ ssh -X user@server
$ sudo virt-manager

注釈

SSH に渡す -X フラグが、SSH 経由の X11 転送を有効化します。これが動作しない場合、-Y フラグに変更してみてください。

Click the Create a new virtual machine button at the top-left, or go to File ‣ New Virtual Machine. Then, follow the instructions.

_images/virt-manager.png

仮想マシンに関する情報を指定できる、一連のダイアログボックスが表示されます。

注釈

qcow2 形式のイメージを使用している場合、 Customize configuration before install オプションをチェックし、ディスクのプロパティから明示的に qcow2 形式を選択すべきです。これにより、仮想マシンのディスク容量が正しくなります。

virt-install の使用とローカル VNC クライアントを用いた接続

virt-manager を使用したくない場合 (例えば、サーバーに関連パッケージをインストールしたくない場合、ローカルで X サーバーを動作させていない場合、SSH の X11 転送が動作しない場合など)、libvirt から仮想マシンを起動するために virt-install ツールを利用できます。また、ローカルマシンにインストールした VNC クライアントからグラフィカルコンソールに接続できます。

Because VNC is a standard protocol, there are multiple clients available that implement the VNC spec, including TigerVNC (multiple platforms), TightVNC (multiple platforms), RealVNC (multiple platforms), Chicken (Mac OS X), Krde (KDE), Vinagre (GNOME).

以下の例は、 qemu-img コマンドを使用して、空のイメージファイルを作成する方法、および virt-install コマンドを使用して、そのイメージファイルを用いて仮想マシンを作成する方法を示します。以下を root として実行します。

# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
  --disk /tmp/centos.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso

Starting install...
Creating domain...                     |    0 B     00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

KVM は、libvirt 名 centos、メモリ 1024MB の仮想マシンを起動します。仮想マシンは、 /data/isos/CentOS-7-x86_64-NetInstall-1611.iso ファイルを接続した仮想 CD-ROM ドライブ、ホストの /tmp/centos.qcow2 に保存した qcow2 形式の 10 GB ハードディスクを持ちます。また、libvirt の default ネットワークを使用するよう設定します。すべてのインターフェースでリッスンしている VNC サーバーがあります。libvirt は、VNC クライアントを自動的に起動しません。テキストコンソールを表示しません (--no-autoconsole)。最後に、libvirt は CentOS 7 ディストリビューションを実行する Linux ゲスト向けに設定を最適化しようとします。

注釈

libvirt default ネットワークの利用時、libvirt が仮想マシンのインターフェースを virbr0 という名前のブリッジに接続します。libvirt により管理される dnsmasq プロセスが動作しています。192.168.122.0/24 サブネットに IP アドレスを払い出します。また、libvirt がこのサブネットに IP アドレスを NAT する iptables ルールを作成します。

osinfo-query os コマンドを実行し、 --os-variant オプションの利用できる値を確認します。

virsh vncdisplay vm-name コマンドを使用して、VNC ポート番号を取得します。

# virsh vncdisplay centos
:1

上の例では、ゲストの centos が VNC ディスプレイ :1 を使用します。これは、TCP ポート 5901 番に対応します。ローカルマシンの VNC クライアントをリモートマシンのディスプレイ :1 に接続できます。そして、インストールプロセスを進めていきます。