KVMやP2Vについて記載します。
CentOS 6.364bit版DVDを用いてインストールを行う。
Virtual Hostを選択し、ソフトウェアのカスタマイズで下記の項目を追加、またはチェックがついていることを確認する。
仮想化
仮想化
仮想化クライアント
仮想化ツール(追加パッケージ:すべてチェック)
仮想化プラットフォーム
デスクトップ
X Window System
デスクトップ
※上記選択肢は、KVMサーバを構築する上で必要最低限(GUI)のものを示しています。
それ以外のアプリケーションに関しては、必要に応じて各人でインストールを行ってください。
※以下の作業は、すべてrootで作業してください
OSのインストールがされたら、kvmモジュールがロードされていることを確認します。
lsmod | grep kvm
kvm_intel , kvmがロードされていることを確認
ネットワーク設定の修正を行う
vi /etc/syscnofig/network-scripts/ifcfg-eth0
以下のパラメータを追加・修正します
ONBOOT-="yes"
BOOTPROTO="dhcp"
ネットワークサービスの再起動をする
/etc/rc.d/init.d/network restart
SELinuxの無効化
setnenforce 0
getenforce
Permissionになっていることを確認します。
次回起動時に無効にするための設定
vi /etc/sysconfig/selinux
SELINUX=disabled
ファイアウォールの無効化
chkconfig iptables off
chkconfig ip6tables off
起動中の表示の設定
vi /etc/grub.conf
赤字の部分を削除します。
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_kvmhost-lv_root rd_NO_LUKS rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_kvmhost/lv_root LANG=ja_JP.UTF-8 rd_LVM_LV=vg_kvmhost/lv_swap rd_NO_DM rhgb quiet
↓
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_kvmhost-lv_root rd_NO_LUKS rd_NO_MD KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_kvmhost/lv_root LANG=ja_JP.UTF-8 rd_LVM_LV=vg_kvmhost/lv_swap rd_NO_DM
IPV6の無効化
最終行に2行を追記します。
vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
ネットワークマネージャの無効化
/etc/rc.d/init.d/NetworkManager stop
chkconfig NetworkManager off
ブリッジインターフェイスの作成
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
eth0の設定編集
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="1C:75:08:DA:62:ED"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="b6fef479-371f-4fd7-8dd0-b1b32fb817d2"
BRIDGE="br0"
赤字の部分を追加・修正します
ネットワークサービスの再起動
/etc/rc.d/init.d/network restart
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.1c7508da62ed no eth0
virbr0 8000.5254000cf42a yes virbr0-nic
※ブリッジデバイス 『br0』があることを確認する
/etc/rc.d/init.d/libvirt reload
Windows仮想マシン用ネットワークドライバの入手をする
事前にここを参照して、現在どのバージョンのファイル名なのかを確認してください。
※頻繁にバージョンが上がっていることがあります。
cd /tmp 適当なディレクトリに移動します
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-49.iso
(2012/12/25現在のバージョン)
XMLファイル
/etc/libvirt/qemu
イメージファイル
/var/lib/libvirt/images
一般的に仮想OSを稼働するホストサーバとしては、できるだけホストの使用するメモリを抑えて、
ゲストOS側に割り当てられるようにしたいと考えます。
上記の設定を行うと、X-Windowが起動して、仮想管理マネージャが起動します。
コレ自体は、ゲストOSの構築やインストール作業時には非常に有用なものですが、
実際にゲストOSを稼働させて運用する際には、必要ありません。
必要な鋳物は使用しないようにするのが一番です。
そこで、ランレベルを5→3へ変更して、X-Windowを使用しないようにします。
それだけで、300KB以上使用メモリが軽減されます。
しかし、X-Windowを起動しないと、仮想管理マネージャからゲストOSの操作を行うことができなくなります。
だが、ご安心あれ!!
Linuxはコマンドが基本なだけあって、すべての操作をコマンドで行うことができるようになっています。
以下に、その一部をご紹介します。
登録されているすべてのゲストOSの一覧を取得することが出来ます。
virsh list --all
virsh list
virsh start [ゲストOSの名称]
virsh autostart [ゲストOSの名称]
スナップショットは、ゲストOSが稼働中に捕ることが出来ます。
※スナップショットを取るためには、ゲストOSのファイルイメージ形式が、qcow2形式でないといけないようです。
qcow形式は、必要なディスク容量のみを消費するモードで、ディスクの利用効率が向上しますが、
ディスクへのアクセス速度が低下するというデメリットも持ち合わせているため、使い方に注意が必要です。
下記のqemu-imgコマンドは、
yum install qemu-img
でインストールすることが出来ます。
qemu-img convert -f raw -O qcow2 [IMGファイル].img [QCOW2ファイル].qcow2
このコマンドは、ファイルサイズにもよりますが、結構時間がかかります。
まず、稼働中のゲストOSの一覧を確認します。
virsh list
Id 名前 状態
-------------------------------------------------------------------------
3 WinodwsSV 実行中
virsh snapshot-create [ゲストOSの名称]
例:
virsh snapshot-create WindowsSV
スナップショットの確認
virsh snapshot-list [ゲストOSの名称]
名前 作成時間 状態
---------------------------------------------------------------------------------------------------
1356146241 2012-12-22 12:17:21 +9000 running
スナップショットの復元
virsh snpshot-revert [ゲストOSの名称] XML形式のファイル名
ゲストOSのバックアップ
万が一のため、ゲストOSのイメージをバックアップすることは非常に大事です。
対象となるのは、下記の2つのファイルです。
環境設定ファイル /etc/libvrit/qemu/ 拡張子XMLファイル
イメージファイル /var/lib/libvirt/images/ 拡張子 IMGファイル
ゲストOSの取り込み
他のホストサーバから、移動してきたゲストOSを取り込むとき等に
下記のコマンドで稼働サーバのマネージャに登録することができます。
※事前に、所定の場所に所定のファイルをコピーしておく必要があります。
所定の場所は、上記に説明しています。
virsh define /etc/libvirt/qemu/環境定義XMLファイル名
ゲストOSの詳細コメントを表示させる場合
virsh desc [ゲストOSのドメイン名]
ゲストOSにコメント(Description)が記入されている場合、表示されます。
ゲストOSに関する詳細な情報を可能な限り記載しておくことが、
いざと言うときに役に立ちますので、習慣にしておくことをお勧めします。
記載しておく情報の例
OS / バージョン
IPアドレス
アカウント情報
使用用途
構成情報(インストールしているアプリケーション情報など)
テスト期間
これらの情報を記載しておくことにより、検証用として一時的に構築した
ゲストOSとしても、一時的にでも再利用することが可能なのか、廃棄するか
継続して補完するのかの判断をする材料となります。
クローニング直後や、外部から取り込んだ直後のゲストOSのネットワークは、OS内部のMACアドレスの設定値と、
KVMで管理しているMACアドレスとが、食い違っているため、正常に動作しません。
そこで、KVM側で設定されているMACアドレスを取得して、ゲストOSに正しい値を設定する必要があります。
ゲストOSがCentOSの場合
現在割り当てられているMACアドレスを確認します。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=52:54:00:AA:3F:5C
vi /etc/udev/rules/70-persistent-net.rules
割り当てられているMACアドレスのもののみを残して、似たような記述のものはすべて削除します。
ethの値が、eth1やeth2に代わっている場合、eth0に変更します。
※設定を行ったら、必ず再起動をしてください。
再起動しないと設定が反映されません。
ゲストOSがWindowsの場合
まだ、未確認です。
virshコマンドで使用することが出来るコマンドの一覧を示します。
P2Vのツール
http://libguestfs.org/virt-v2v/
http://www.macrium.com/reflectfree.aspx
参考ページ
http://www.todo.ne.jp/doc/virt-p2v/
http://syer-wastepaper.blogspot.jp/2012/04/kvmclonezillap2v.html
CentOS 6.xで動作するらしいです。
詳しくはHPのインストールページを参照してください。
っていうか、実はまだ試していません。
でも、非常に便利だと思います。
X-Windowで管理するのが良いか、kuresansuiのようなWebページによる管理が良いのか・・・
試してみるしかないでしょうね。