SSブログ

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

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。