Ubuntu 11.04にKVMを導入する

Pocket

今となっては当たり前となってしまった仮想化の波に今更ながら乗ってみました。
ファンの音がうるさいのと、固定IP契約が意外と割高なので今まで殆ど使っていなかったProLiantサーバーを引っ張り出してきて実験しました。

Linuxカーネルの標準モジュールとなっているKVMによるCPUエミュレーションとQEMUによるハードウェアエミュレーションを利用して完全仮想化しているらしいです。多分認識が間違っているかもしれませんので、もし間違っていたらご指摘いただけますと幸いです。

仮想マシンを実行するホスト環境は豊富なリソースを必要とするため、64bit版を採用します。

ホストOSのインストール

  • HP ProLiant ML115(搭載メモリ7GB)
  • Ubuntu 11.04 の 64bit サーバー版を使用

インストール時に OpenSSH serverVirtual Machine host にチェックを入れます。

インストールが終わったら、まずはCPUが仮想化支援機能を搭載しているかどうか確認します。

$ grep -E '(vmx|svm)' --color /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt rdtscp lm 3dnowext
3dnow up rep_good nopl extd_apicid pni cx16 lahf_lm svm extapic cr8_legacy
3dnowprefetch lbrv

AMD Athlon 1640B には仮想化支援機能がある(?)のでOKです。
今のUbuntuはデスクトップ、サーバーの分野ともにぐんぐんシェアを伸ばしている勢いを感じます。

仮想ディスクイメージの作成

QEMUの仮想マシンディスクイメージは10GBぐらいまで qcow2 というフォーマットが推奨されているらしいです。ここでは20GBのHDDを作成しています。

$ qemu-img create -f qcow2 centos56.qcow2 20G
Formatting 'centos56.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=0

ゲストOSのインストール

ホスト側でXサーバが立ち上がらないので、ここからはリモートで作業を行います。事前にUltraVNCというクライアントを導入してください。
本来ならホストOSでもXサーバが立ち上がったほうがリモートで作業する必要がなくなるのでよっぽど楽に作業が進められます。
グラフィックメモリが貧弱なので、あえてGUIはインストールしませんでした。

ISOイメージ (CD-ROM) から起動

以下のようにします。1024MBのメモリを割り当ててCD-ROMイメージにCentOSのISOイメージを指定、ディスクからブート(d)し、VNCサーバを(0 + 5900 = 5900)番ポートで解放することを意味します。

$ sudo kvm -hda centos56.qcow2 -cdrom CentOS-5.6-i386-bin-DVD.iso -boot d -m 1024 -vnc :0
kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"

UltraVNC側は以下のような感じで指定すればゲストOSに接続できます。

ちゃんとゲストOSでインストールが進んでいくのがわかります。

ゲストOSのインストールが済んだらブリッジ接続を設定します。

noguchi@ubuntu:~$ sudo vi /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# 2011-06-04 20:00 edit by noguchi start
#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet static
  address 192.168.0.100
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  pre-up ifconfig eth0 down
  pre-up ifconfig eth0 0.0.0.0 promisc up
  pre-up brctl addbr br0
  pre-up brctl addif br0 eth0
  pre-up ifconfig eth0 up
  post-down ifconfig eth0 down
  post-down brctl delif br0 eth0
# 2011-06-04 20:00 edit by noguchi end

はい、もう何が何だか全然分かりませんね。
とりあえずUbuntuも追加してみてネットワーク構成図はこんな感じに・・・。

なにはともあれホストOSを再起動すればブリッジが有効になってホストOSと同じセグメントのネットワークに属することができます。
以下のコマンドでTAPに接続してゲストOS + Poderosaなどで快適(?)仮想OS生活を満喫してください。

$ sudo kvm -m 1024 -hda centos56.qcow2 -drive file=centos56.qcow2,if=virtio,boot=on -net nic,model=virtio -net tap,ifname=tap0,script=/etc/qemu-ifup -vnc :0
kvm: pci_add_option_rom: failed to find romfile "pxe-virtio.bin"

ではでは。

参考

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください