Ubuntu 10.04にKVMで仮想サーバ構築

続いて仮想サーバの構築です。

今回はUbuntu 10.04 LTS ServerのKVMによる仮想化サーバを構築しました。この記事では、ホストOSに仮想化の設定を有効にし、ゲストOSの準備と仮想化特有の設定までを書きます。

KVMとは

KVMはカーネルがサポートする、完全仮想化環境の機能です。

KVMのインストールをする

まずはKVMが使えるか、次のコマンドで確認をします。

% kvm-ok

私の環境では「kvm_intelカーネルモジュールをロードする必要がある」と言われたので、以下のコマンドで有効にしました。

% sudo modprobe kvm_intel

続いてlibvirtパッケージのインストールです。libvirtは、KVMを使いやすくするライブラリです。

% sudo aptitude install libvirt-bin

これが終わったら、一度再起動をします。再起動後、/dev/kvmがroot:rootからroot:kvmに変わっていることを確認します。

% ls -l /dev/kvm
crw-rw---+ 1 root kvm 10, 232 2010-08-22:21:12 /dev/kvm

これでパッケージの導入は完了です。

ゲスト環境の初期設定をする

まずはネットワークの設定です。今回のゲストOSは、ホストOSと同じネットワークにつなぎます。こうすることで、ゲストOSが増えた場合も、容易に他のホスト(Windows機など)から接続することができます。

以下のような編集をします。

--- /etc/network/interfaces.orig        2010-08-01 18:21:45.691120791 +0900
+++ /etc/network/interfaces     2010-08-01 23:08:31.919576341 +0900
@@ -7,4 +7,16 @@

 # The primary network interface
 auto eth0
-iface eth0 inet dhcp
+iface eth0 inet manual
+
+auto br0
+iface br0 inet static
+        address 192.168.0.54
+        network 192.168.0.0
+        netmask 255.255.255.0
+        broadcast 192.168.0.255
+        gateway 192.168.0.1
+        bridge_ports eth0
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0

ネットワークを再起動します。

% sudo /etc/init.d/networking restart

ネットワークの準備は完了です。

ゲスト環境を作成する

ゲストOSのための環境設定を作成するには、便利なvirt-installコマンドを用います。これはpython-virtinstパッケージに含まれます。

% sudo aptitude install python-virtinst

続いて、ゲスト環境の作成です。このコマンドを実行することで、ゲスト環境の、基本的な設定が行われます。

% sudo virt-install \
    --name HOSTNAME \
    --ram 1024 \
    --disk path=/opt/kvm/disk/HOSTNAME,size=250,sparse=no \
    --cdrom /opt/kvm/iso/ubuntu-10.04-server-amd64.iso \
    --hvm --accelerate \
    --connect=qemu:///system \
    --noautoconsole \
    --vnc --vnclisten=0.0.0.0

それぞれのオプションには、以下の意味があります。

  • –name HOSTNAME: 仮想OSを起動するときに指定する名前として使います
  • –ram 1024: 仮想環境で利用できる物理メモリ量で、MB単位で記述します
  • –disk OPTIONS: 仮想ディスクの指定をします
    • pathは仮想ディスクをホストOS上で配置するパス
    • sizeはディスクサイズをGB単位
    • sparseは後から領域を確保するときはyesとします
  • –cdrom PATH: CD-ROMなどのディスクとして認識させるISOイメージなどのパスを指定します
  • –hvm: 完全仮想化という指定です
  • –accelerate: ハードウェアの仮想化支援を有効にします
  • –connect: qemu上の指定です
  • –noautoconsole: 仮想OS起動時に、仮想OS側のコンソールへつなげない指定です
  • –vnc: VNCで仮想OSへの接続を許可します
  • –vnclisten BIND-ADDR: ポートをlistenするアドレスです(0.0.0.0であれば任意、初期値はローカルホストのみ)

ゲスト環境の作成が完了すると、すぐに仮想OSが立ち上がります。

ゲストOSをインストールする

基本的に、Ubuntu 10.04でサーバ構築と同じです。

ゲストOSの設定をする

ネットワークの設定をします。ゲストOSはサーバとして使用するため、IPアドレスはDHCPの動的取得ではなく、固定割り当てにしました。

% diff -u /etc/network/interfaces.orig /etc/network/interfaces
--- /etc/network/interfaces.orig        2010-08-01 22:01:48.275499003 +0900
+++ /etc/network/interfaces     2010-08-01 23:38:22.838002119 +0900
@@ -8,3 +8,9 @@
 # The primary network interface
 auto eth0
 iface eth0 inet dhcp
+
+auto eth5
+iface eth5 inet static
+       address 192.168.0.55
+       netmask 255.255.255.0
+       gateway 192.168.0.1

普通はeth0になるはずですが、dmesgを確認すると、eth0からeth5に変更されていました。

% dmesg | grep eth
[    0.861026] eth0: RTL-8139C+ at 0xffffc90000520000, 52:54:00:6f:45:54, IRQ 10
[    5.886218] udev: renamed network interface eth0 to eth5
[    6.601430] eth5: link up, 100Mbps, full-duplex, lpa 0x05E1
[   17.230089] eth5: no IPv6 routers presen

ゲストOSの起動

起動はホストOSでvirshを用いて行います。HOSTNAMEは、virt-installの–nameで指定したものになります。

% virsh -c qemu:///system start HOSTNAME

virshから停止も出来ますが、物理サーバの「電源ボタンを押下したシャットダウン」に当たるため、通常はゲストOSにログインして停止した方が良いでしょう。

まとめ

操作する手数は多いですが、用途別にゲストOSを自由に作れる環境は便利です。たとえば、不安定版のOSを試す環境や、開発用ライブラリをガシガシ突っ込んだ開発環境、複数のサーバ間でネットワークのテストを行うなど、様々です。

KVMではハードウェアサポートが前提となってしまいますが、ハードウェアさえ仮想環境をサポートしていれば、仮想環境とは思えないくらいスムーズに使える環境を構築できます。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *