実践!仮想化ソフトウェア 2010 Updates

第6回Fedora 14で話題のSPICEを体験しよう

今回は、11月上旬にリリースされたFedora 14に搭載されたデスクトップ仮想化技術「SPICE」の基本的な使用法をご紹介します。

Fedora Project
URL:http://fedoraproject.org/

SPICEとは

SPICEは、LinuxKVMを開発したことで知られるQumranet社が開発したリモートデスクトッププロトコルです。Red Hat社に買収された後、オープンソース化されました。

SPICEの特徴として、音声転送(再生・録音に対応)やクリップボード転送機能、ネットワーク帯域が少ない環境でも快適に利用できるように映像や音声を転送する仕組みが最適化されている点などが挙げられます。例えば、外出先からイーモバイルやWiMAXなどといったモバイル環境で使用して接続しても、ストレス無くリモート操作すること可能です。

SPICE公式サイト
URL:http://www.spice-space.org/

SPICEを試してみよう

SPICEの使い方については、わかりやすく言うとQemuのvncオプションの代わりに使うイメージになります。これまでKVMでは次のようなオプション指定して、リモートからVNC接続して仮想マシンを操作していました。

qemu-kvm (中略) -vnc 127.0.0.1:0

SPICEでは、上記の代わりに次のようなオプションを指定して、リモートからSPICEクライアントで接続して仮想マシンを操作します。

qemu-kvm (中略) -spice port=5930,disable-ticketing

よって、SPICEを試すまでの大まかな手順は次の通りとなります。

  1. Fedora 14でKVM環境を用意する。
  2. 仮想マシンを構築する。
  3. SPICEサーバーを仮想ホストにインストールする。
  4. SPICEを有効にして仮想マシンを起動する。
  5. SPICEクライアントで仮想マシンに接続する。
  6. 仮想マシンに必要なドライバをインストールする。

KVM環境の用意

まずはFedora 14でKVM環境を構築します。こちらは特に注意事項はありません。お好みで、ネットワークブリッジを作成してください。テスト用の仮想マシンは、Windows、Linuxどちらでも利用可能です。今回はWindows XP仮想マシンを例に説明を行います。ストレージ・ネットワークのVirtioドライバがインストール済みの環境であることを前提とします。

ちなみに、Fedora 14の仮想マシンを作成する場合は、インストール後にOSのアップデートを実行することと、後述のvdagentをソースからコンパイルしてインストールする必要があります。

SPICEサーバのインストール

SPICEのサーバパッケージを仮想ホスト上にインストールします。yumコマンドで簡単にインストールすることができます。

# yum install spice-server

SPICEを有効にして仮想マシンを起動する

SPICEは現在、libvirtや仮想マシンマネージャで利用することができません。よって、コマンドで仮想マシンを起動させる必要があります。前回の記事(第5回 Fedora 13で最新のLinux KVMに触れてみよう)で紹介した「vhost_netを有効にして仮想マシンを起動する」で行った方法と同じく、仮想マシンマネージャで仮想マシンを起動し、psコマンドで実行中の仮想マシンのパラメータを取得します。

#ps auxww | grep kvm-qemu

不要なパラメータを取り除きつつ、SPICEに関するパラメータを追加します。赤文字が取り除くパラメータ、青文字が追記する部分です。

/usr/bin/qemu-kvm -S -M pc-0.13 -enable-kvm -m 1024 -smp 2,sockets=1,cores=2,threads=2 -name WinXP -uuid 74b52e50-b95e-569e-1f04-85101152e6e5 -nodefconfig -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/WinXP.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=localtime -boot c -drive file=/var/lib/libvirt/images/WinXP.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:a6:01:81,bus=pci.0,addr=0x3 -net tap,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga cirrus -vga qxl -spice port=5930,password=,disable-ticketing -device AC97,id=sound0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -device virtio-serial,bus=pci.0,addr=0x7 -device spicevmc,subtype=vdagent

SPICEに関するパラメータは次の通りです。

-vga qxl -spice port=5930,disable-ticketing

portはポート番号、disable-ticketingはパスワード無しで接続可能にするオプションです。パスワードを設定するには次のように指定します。

-spice port=5930,password=(パスワード)

また、次のパラメータはクリップボード転送を有効にするためのものです。

-device virtio-serial,bus=pci.0,addr=0x7 -device spicevmc,subtype=vdagent

次に、qemu-ifup、qemu-ifdownスクリプトを作成します。作成方法は前回の記事を参照してください。

クライアントから接続する

仮想マシンを起動したら、SPICEクライアントから仮想マシンに接続します。SPICEのクライアントには、現在のところWindows版とLinux版の2種類が用意されています。クライアントは下記URLから入手できます。

Spice - Download
URL:http://www.spice-space.org/download.html

使い方についてはどちらも共通です。

  • Windows版を利用する場合:上記URLからclientとlibrariesの2つをダウンロードします。解凍したものの中からspicec.exeとlibcelt_0_5_1.dllを取り出し、同じディレクトリに配置して利用します。なお、クライアントの動作には.NET Framework 3.5 SP1が必要になります。
  • Linux(Fedora 14)の場合:yumコマンドでspice-clientパッケージをインストールします。

spicecを起動すると、図1のような画面が表示されるので、接続先やポート番号などの情報を入力して接続します。

図1 SPICEクライアントのログイン画面
図1 SPICEクライアントのログイン画面

また、コマンドラインから直接パラメータを指定して起動することも可能です。

spicec -h <接続先のホスト名> -p <ポート番号> [-w <パスワード>]

接続に成功すると、デスクトップ画面が表示されます。

図2 SPICEで接続したWindows XP
図2 SPICEで接続したWindows XP

ドライバのインストール

仮想マシンを起動すると、次のドライバのインストールを求められるので、インストールを行います。最新のドライバは先述のSPICE公式サイトのダウンロードページで配布されています。

  • qxl ドライバ
  • virtio-serial ドライバ

上記のインストールが済んだら、同じくSPICEの公式サイトで配布されているゲストエージェント(vdagent)をインストールします。これはクリップボード転送に必要なエージェントになります。ダウンロード・解凍したディレクトリをコマンドプロンプトで開き、次のコマンドでインストールします。

vdservice.exe install

以上でSPICEに必要なドライバとエージェントがインストールされました。

SPICEがモバイル環境で快適に使えるか試してみる

さて、モバイル環境ではどのくらい快適に利用できるのでしょうか。VNCプロトコルとの比較も行いつつ、自宅のベランダでWiMAX回線を使った検証と、自宅の光回線の2種類で、YouTubeの動画を再生するテストを行ってみました。

図3 自宅のベランダにて
図3 自宅のベランダにて

検証した環境

検証環境は以下の通りです。

【サーバ】HP BL460c
CPUIntel Quad-Core Xeon L5320(1.86GHz)×2
メモリ16GB(PC5300 FB-DIMM 4GB×4)
ネットワークデータセンターの100Mbps回線を使用
仮想マシン2vCPU
2GB仮想メモリ
Windows XP SP3
【クライアント】MacBook
OSブートキャンプを使って起動したWindows XP SP3
ネットワーク次の2種類で検証
  • WiMAX回線。およその速度は下り5Mbps、上り2Mbps。
  • 自宅の光回線(VDSL⁠⁠。およその速度は下り30Mbps、上り18Mbps。
図4 WiMAXの受信感度はごく標準的
図4 WiMAXの受信感度はごく標準的
【再生動画】次の動画を使用(オフィスの私のデスク上にある鉄道模型コースを映したもの)

モバイル環境で比較

SPICE環境で動画再生を行ったところ、音声は比較的スムーズに届いてくることがわかりました(外の雑音がひどいですが……⁠⁠。一方、映像はややもたついて見える印象です。

次はVNC環境です。音声はそもそも有効にならないため、映像のみとなりますが、紙芝居状態となってしまっています。再生直後に送信したスクロールがだいぶ後になって反映されてしまうなど、操作が難しい状態になっています。

光回線で比較

SPICE環境での再生結果はこちらです。下り速度が約6倍になったため、モバイル環境で再生した時よりも映像がだいぶスムーズに転送されるようになりました。

VNC環境は画面の更新間隔がおよそ2秒ほどに縮まりましたが、それでも紙芝居状態です。

まとめ

Fedora 14時点のSPICEは、libvirt・仮想マシンマネージャーでの利用ができないため、実行にはやや手間がかかりますが、VNCよりも十分快適に利用できることがわかりました。また、検証ではYouTube動画の再生という少々ヘビーなテストを行いましたが、オフィススイートの使用程度の用途であればモバイル環境でも快適に使用できるでしょう。

おすすめ記事

記事・ニュース一覧