KVMを使用したサーバーの仮想化 [Debian]
また、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 アドレスを変更する。
コメント 0