続いて仮想サーバの構築です。
今回は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ではハードウェアサポートが前提となってしまいますが、ハードウェアさえ仮想環境をサポートしていれば、仮想環境とは思えないくらいスムーズに使える環境を構築できます。
Leave a Reply