1
ゼロからはじめるKVM超入門
2010年2月6日
日本仮想化技術株式会社
技術部 大内 明
自己紹介
•  大内 明(おおうち あきら)
–  あっきぃ/id:Akkiesoft
•  まもなく技術部員4年目
•  メールマガジン・ブログ等、広報系も担当
–  ノベルティの企画も私
•  初めて仮想化は2003年(中学3年生)頃に
触ったBochsエミュレータ
–  たぶんQEMUがメジャーになる前
2
2
アジェンダ
•  KVMの概要
•  KVM仮想マシン作成のコツ
•  KVMベンチマークテスト
3
KVMの概要
3
KVMとは
•  Kernel based Virtual Machine
•  Qumranet社が開発→Red Hat社が会社ご
と買収
•  開発から半年でLinuxカーネルに組み込ま
れ話題に
•  最新のリリースは88(2009年7月)
–  最近はqemu-kvmのリリースが活発
6
仕組み
•  KVMのハイパーバイザがLinuxカーネル
モジュールとして搭載されている
–  /dev/kvmとして存在
•  QEMUが/dev/kvmにアクションを送って、
仮想マシン作成などの操作をしている
–  KVM用のQEMU(qemu-kvm)
•  エミュレーション全般はQEMUが行ってい
る
7
4
アプリ
アプリ
OS
アプリ
アプリ
他の仮想化ソフトとの違い
ハードウェア
Dom0
(OS)
アプリ
DomU
(OS)
ハードウェア
QEMU
Linux ~
ハードウェア
アプリ
OS
Virtual
Box
一般的なホスト型
(例:VirtualBox)
KVM
Xen
KVM
8
Xenハイパーバイザ
 OS
Virtio
•  汎用的な準仮想ドライバの規格
–  完全仮想化マシンを部分的に性能向上させる
•  KVMでもサポート
–  主にストレージ、ネットワーク
–  Windowsも準仮想レベルで利用可能に
•  参考: 他にサポートされている仮想化ソフト
–  VirtualBox(ネットワークのみ)
9
5
KVMを利用するメリット
•  Linuxだけで完結
–  Xen+Linuxのバージョン、VMware+Linuxの
バージョンといったことを気にする必要がない
•  Linuxのドライバがそのまま利用可能
–  VMwareの独自ハイパーバイザのように、ドラ
イバの種類不足によるハードウェア選択の制
限がほぼない
10
KVMのデメリット
•  CPUの仮想化支援機能が必須
–  Intel-VT/AMD-V/VIA VTがないCPUでは
利用不可
–  (例)数世代前(2006 2007年前後)のサーバ
–  (例)ノートPC
11
6
KVM仮想マシン作成のコツ
KVMホストOSの選択
•  最近のLinuxであればおおよそ利用可能
–  Fedora 12
–  CentOS 5.4
–  Ubuntu
•  今回はFedora 12を使用
13
7
Fedora 12のインストール
•  インストールウィザードのパッケージ選択
で「仮想化」を選択するだけでKVM環境が
そろう
14
仮想マシンの作成
•  Xenと同様、Virtual Machine Managerで仮
想マシンの作成・管理が可能
–  最近はライブマイグレーション・クローン作成も
•  インストール時に気を付けるべき点
–  ネットワークの物理ブリッジがデフォルトでは
設定されていない
–  Virtioはデフォルトで設定されない場合がある
ので、必要に応じて手動で変更する
•  ここでは、上記2点について解説
15
8
ネットワーク物理ブリッジを作成
•  デフォルトのネットワーク設定はNATのみ
–  CentOS 5.4のKVM環境でも同様
•  ブリッジ設定は手動で行う必要がある
•  手順
1. NetworkManagerを無効にしてifupに切替
2. ifcfg-eth0・ifcfg-br0の2ファイルを編集
3. ネットワークの再起動
16
NetworkManagerの無効化
•  NetworkManagerではブリッジ設定が出来
ないため、無効化する
•  代わりに、従来のnetworkを有効化する
•  手順
1.  # service NetworkManager stop
2.  # chkconfig NetworkManager off
3.  # chkconfig network on
17
9
ifcfg-br0 の作成
•  ifcfg-eth0をコピーして編集を行う
•  ※/etc/sysconfig/ntwork-scripts/の中
# DEVICE=eth0
DEVICE=br0
BOOTPROTO=dhcp
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
OPTIONS=layer2=1
TYPE=Bridge
18
ifcfg-eth0 の編集
DEVICE=eth0
#BOOTPROTO=dhcp
BOOTPROTO=none
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
OPTIONS=layer2=1
BRIDGE=br0
•  すべて完了したら /etc/init.d/network start
を実行
•  ifconfigコマンドでbr0が存在するかチェック
19
10
ブリッジ設定の確認
•  Virtual Machine Managerで実際に仮想マ
シンを作成して確認
20
Virtioの利用
•  Virtioデバイスを利用するには、OSによっ
て次の手順を行う必要がある
A.  Windowsの場合、OSインストール後にデ
バイスをVirtioに変更してドライバをインス
トール
B.  Virtio対応OSの場合、Virtual Machine
Managerが自動的にVirtioデバイスを設
定する
–  Fedora 12、CentOS 5.4等の主に最新のLinux
21
11
Virtioに変更する方法
1.  仮想マシンの設定ファイルを開く
–  設定ファイルは/etc/libvirt/qemu/の中にある
2.  ストレージ設定の書き換え
3.  ネットワーク設定の書き換え
<disk tipe=‘file’ device=‘disk’>
(略)
<target dev=‘hda’ bus=‘ide’ />→<target dev=‘vda’ bus=‘virtio’ />
</disk>
<interface type=‘bridge’>
(略)
<model type=‘virtio’ /> ←追記
</interface>
22
デバイス設定変更の反映
4.  virshコマンドを実行
5.  変更をVirtual Machine Managerで確認す
る
# virsh define /etc/libvirt/qemu/VM.xml
ドメイン VM が /etc/libvirt/qemu/VM.xml から定義されました
#
23
12
Windowsドライバについて
•  ストレージドライバのインストールは2種類
A.  OSインストール後にドライバをインストール
する方法
B.  OSインストール時にあらかじめドライバを読
み込ませる方法
•  前者が楽
–  後者の場合、ドライバを読み込ませるための
情報ファイル(txtsetup.oem)の作成などを作
成する必要があるため
24
インストール方法
1.  通常通り、IDE仮想ディスクにOSをインス
トール
2.  ダミーのVirtioストレージデバイスを仮想
マシンに追加し、ドライバをWindowsにイ
ンストール
–  追加の操作はVirtual Machine Managerで良い
3.  仮想マシン設定ファイルを書き換えてOS
を起動
–  ダミーのデバイスは削除して良い
25
13
Windowsドライバの入手
•  KVMのサイトからダウンロード可能
–  http://www.linux-kvm.org/page/
WindowsGuestDrivers/Download_Drivers
–  「You can also download the drivers as ISO
images ...」のリンク先のISOイメージ版が便利
•  ISOイメージをマウントし、適宜ドライバをイ
ンストールする
–  インストーラはないので、個別にインストール
を行う
26
最新ドライバを自分で作成する
•  ソースリポジトリからソースをダウンロード
して自分でビルドする事も可能
•  WinDDK(無料)が必要
•  Windows Server 2008では署名が必要なた
め、作成手順はやや多くて面倒
•  説明すると長くなってしまうため、仮想化通
信にて連載(?)予定
–  http://blog.virtualtech.jp/
27
14
KVMベンチマークテスト
ベンチマークテスト
•  Virtio不使用・Virtio使用・物理環境の3種
類でネットワーク・ストレージの速度に違い
があるか測定
•  ベンチマーク環境: HP ProLiant DL380 G5
–  Intel Xeon E5355 2.66GHz * 2
–  PC2-5300 FB-DIMM 4GB * 2 (8GB)
–  36.4GB/10000RPM SAS * 4(RAID 1+0)
–  ホストOS: Fedora 12 (x86_64)
–  ゲストOS: Windows Server 2008
29
15
測定方法
1.  ストレージの速度測定はCrystalDiskMark
を用いて測定を実施
2.  ネットワーク速度測定は、1GB程度のファ
イルをInternet Explorer 8でダウンロードし、
ダウンロード時間及び平均速度で測定
30
ストレージベンチマーク結果
•  Virtio使用の環境がVirtio不使用の環境に
比べ、1.5 2倍の性能
•  CPU負荷はVirtio使用環境が高め
–  高効率で転送されている
Virtioドライバ使用
Virtioドライバ未使用
 物理環境
31
16
•  Seq Read/512k Readで物理がVirtio使用環
境に負けているのは、タイマー処理などの
関係と思われる
グラフ
32
0
200
400
600
800
Seq Read 512k
Read
4k Read Seq
Write
512k
Write
4k Write
Virtio不使用
Virtio使用
物理環境
•  DL時間が半減、速度もほぼ倍に
•  実行中のCPU使用率はストレージと同様の傾向
ネットワークベンチマーク結果
33
0
20
40
60
80
100
120
140
160
Virtio未使用
 Virtio使用
 物理環境
DL時間(秒)
0
5
10
15
20
25
30
35
Virtio未使用
 Virtio使用
 物理環境
平均DL速度(MB/秒)
17
Xen vs KVM
•  本来はこれをメインテーマにしたかった
•  Fedora 12は、Xenは非サポート(に近い)
–  パッケージは存在するが、以前に比べてハー
ドルが高い
–  検証環境が(時間の関係もあって)構築でき
ず……
34
CentOS 5.4でXen vs KVM
•  以下の環境でpgbenchを実施
–  HP ProLiant ML350 G6
–  Intel Xeon X5520
–  6GB メモリ
–  ゲストもCentOS5.4
–  PotgreSQL 8.3.8
–  pgbench –c 20 –t 1000
•  ※OSC2009 Tokyo/Fallで発表したもの
35
18
Xen vs KVM pgbench結果
98.8
183.1
101.1
183.6
0.0
20.0
40.0
60.0
80.0
100.0
120.0
140.0
160.0
180.0
200.0
HVM Para-Virtual RAW VirtIO
Xen KVM
RAID1+0
36
本日のまとめ
•  KVMは構造がシンプル
–  ホストOSっぽいハイパーバイザ型?
•  仮想マシン操作の使い勝手はXenと同じ
•  Virtioでデバイスを準仮想化して性能向上
–  Xenと性能はほぼ変わらない
•  XenかKVMでは好みで選んで良いレベル
37

ゼロからはじめるKVM超入門