So-net無料ブログ作成

KVMを使用したサーバーの仮想化 [Debian]

サーバーの仮想化が必要となり、KVM を使用したサーバーの仮想化を行った。
また、32bit 版 Linux に導入したかったため、Debian GNU/Linux 6.0 の KVM を採用した。
(ゲスト OS には、CentOS 6.3 を採用。)

以下は、基本的な構築手順をまとめたものである。

1. OS のインストール


Debian GNU/Linux 6.0.5 をインストールする。


2. KVM のインストール
# apt-get install virt-manager qemu-kvm


下記のパッケージがインストールされる。

・virt-manager 0.8.4-8
・qemu-kvm 0.12.5+dfsg-5+squeeze9
・その他、依存関係のあるパッケージ


3. 仮想ディスク用の領域の確保


/var/lib/libvirt/images に十分な空き容量がない場合には、下記の手順を実施する。

(1) /var/lib/libvirt/images 用のパーティションを作成する。

(2) 上記パーティションにファイルシステムを作成する。

(3) 上記パーティションを /var/lib/libvirt/images にマウントする。


4. ネットワークの設定


外部からのゲスト OS への接続を可能にするため、ブリッジインターフェースを作成する。

(1) /etc/network/interfaces の編集

# diff interfaces interfaces.sav
9,10c9,10
< auto br0
< iface br0 inet static
---
> auto eth0
> iface eth0 inet static
16d15
<   bridge_ports eth0


編集前の設定内容は、下記の通りである。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address xxx.xxx.xxx.xxx
    netmask xxx.xxx.xxx.xxx
    network xxx.xxx.xxx.xxx
    broadcast xxx.xxx.xxx.xxx
    gateway xxx.xxx.xxx.xxx


(2) カーネルパラメーターの設定


/etc/rc.local に下記の設定を追加する。

echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables


(注意)
/etc/sysctl.conf への設定の追加ではエラーを発生するため、上記の方法を採用する。
bridge モジュールがロードされる前に参照されるためと思われる。
・"net.bridge.bridge-nf-call-iptables" is an unknown key、等を発生する。
・bridge モジュールがロードされた後の sysctl -p では、エラーは発生しない。


(3) OS の再起動

# shutdown -r now


(4) 設定の確認

# ifconfig
・br0 に指定した IP アドレスが設定され、UP となっていること。
・eth0 が存在し、UP となっていること。
# brctl show
・br0 が存在し、interface が eth0 であること。

5. virt-manager のための設定


(1) root 以外で virt-manager を実行する場合の設定


該当するユーザーを libvirt グループのメンバーに追加する。


6. 仮想マシンの作成とゲスト OS のインストール


(1) root ユーザーでの GNOME 環境の起動

# startx


(2) 仮想マシンの作成とゲスト OS のインストール(例)


(a) インストール用のメディアを光学ドライブに設定する。

(b) virt-manager の起動


[アプリケーション] -> [システムツール] -> [仮想マシンマネージャー]


(c) 仮想マシンの作成


[localhost (QEMU)] を右クリックし、[新規] を選択する。

・仮想マシン名を指定する。
・インストールメディアとして、[Local install media] を選択する。
・インストールする OS のタイプとバージョンを指定する。
・ストレージの作成方法として、[Allocate entire disk now] を選択する。
 (raw ノンスパースファイルが作成される。)
・Advanced optins で、ネットワーク I/F として、br0 を指定する。


(d) ゲスト OS のインストール


仮想マシンの作成後、ゲスト OS のインストールが開始される。


7. 仮想マシンの設定


(1) 仮想マシンを再起動すると時刻が UTC になることへの対応


(a) /etc/libvirt/qemu/<VM_name>.xml の編集

(変更前) <clock offset='utc'/>
(変更後) <clock offset='localtime'/>


(b) 変更内容の反映

# virsh define <VM_name>.xml

8. ゲスト OS 上での設定


(1) 外部からの接続を可能にするための設定


iptables に、外部からの接続を許可するための設定を追加する。


(2) 時刻合わせ


NTP を使用し、時刻の同期を行う。
(必要なら、KVM を導入したシステム上で NTP サーバーを実行する。)


9. 備考


(1) 仮想ディスクのパス(デフォルト設定の場合)


/var/lib/libvirt/images/<VM_name>.img


(2) 仮想マシンの設定ファイル


/etc/libvirt/qemu/<VM_name>.xml


(3) 仮想ネットワーク I/F の MAC アドレス


仮想マシンの設定ファイルに記載されている。
(<mac address='xx:xx:xx:xx:xx:xx'/>)


(4) 仮想マシンの複製(実行例)


複製元の仮想マシンの停止後、下記のコマンドを実行する。
(VM_src: 複製元の仮想マシン名、VM_dst: 複製先の仮想マシン名)

# virt-clone -o <VM_src> -n <VM_dst> -f /var/lib/libvirt/images/<VM_dst>.img


複製した仮想マシンを起動し、ゲスト OS のホスト名、IP アドレスを変更する。



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0