仮想サーバ構築 KVM 覚書
仮想化サーバ環境であるKVMを導入する。
KVMはKernel-based Virtual Machineの略。Intel VTまたはAMD-VをサポートするCPU上で完全仮想化を実現する。
目的
仮想化KVM覚書
構築条件
構築機器
- 東芝ノートPC(Satellite K30)上で構築
CPU:インテル Core2Duo P8400
メモリ:4GB (メモリ増設)
作成環境
OS | CentOS 5.5 64bit版 |
※動作CPUがIntel VT(インテルCPU)またはAMD-V(AMDCPU)をサポートしていること。
インテルのどのCPUがサポートしているかは以下URLにて確認
http://www.pc-koubou.jp/info/win7_vt.php
サーバ作成条件
ホストOS | サーバIP | 10.107.16.100/24 |
サーバMAC | 00:1C:7E:7B:E3:B7 | |
ホスト名 | KVMServer | |
user | hogehoge | |
userpasswd | hogehogepass | |
ゲストOS | サーバIP | 10.107.16.102/24 |
ホスト名 | KVMhogehoge | |
user | hogehoge | |
userpasswd | hogehogepass |
手順記入ルール
- コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
- コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。
ゲストOS実行管理
ゲストOS起動/停止
- 仮想化起動
# virsh start KVMhogehoge
- 確認
# virsh list --all
- 停止
# virsh shutdown KVMhogehoge
※うまく停止しないことが多い。ゲストOSログイン後シャットダウンのほうが確実
- 強制電源断
# virsh destroy KVMhogehoge
ゲストOS一時中断/再開
- 一時中断
# virsh suspend KVMhogehoge
- 再開
# virsh resume KVMhogehoge
ゲストOS追加(qemuコマンド)
VNC設定
※Windows標準のリモートアクセスが使えない環境でリモート管理を行う場合VNCを利用する
サーバのリモート管理を可能とするため「VNC」をインストールする。
- VNCの入手
本家VNCは開発停止となっているが、派生VNCが多数出ている。今回社内使用でライセンス的に問題がないRealVNCを使用する。
http://real-vnc-personal.softonic.jp/
http://www.realvnc.com/products/download.html
- 手順に従いインストールする。
qemuコマンドによるゲストOSインストール
- イメージ作成
# qemu-img create -f qcow2 /var/lib/libvirt/images/KVMhogehoge.qcow2 8GB
Formatting '/var/lib/libvirt/images/KVMhogehoge.qcow2', fmt=qcow2, size=8388608 kB
★qcow2イメージで8GBのHDDイメージ作成
- インストール
# /usr/libexec/qemu-kvm -hda /var/lib/libvirt/images/KVMhogehoge.qcow2 \ -cdrom /home/hogehoge/CentOS5.5_32bit.iso -boot d -m 512 -vnc :0
- VNC接続
realvncツールで、「10.107.16.100:5900」に接続
★「-vnc :x」の指定で「port 590x」接続となる。 -vnc:1 指定の場合は 10.107.16.100:5901 となる。
ゲストOS削除
ゲストOS削除
- 定義削除
# virsh undefine KVM_test
ドメイン KVM_test の定義は削除されています
- イメージ確認
# virsh pool-list
名前 状態 自動起動 ----------------------------------------- default 動作中 yes
# virsh vol-list default
名前 パス ----------------------------------------- KVMhogehoge.img /var/lib/libvirt/images/KVMhogehoge.img
- イメージ削除
# virsh vol-delete /var/lib/libvirt/images/KVMhogehoge.img
ボリューム /var/lib/libvirt/images/KVM_test.img は削除されました
- 確認
# virsh vol-list default
名前 パス -----------------------------------------
# ls -l /var/lib/libvirt/images/
# ls -l /etc/libvirt/qemu/
ゲストOSイメージqcow2
KVMのゲストOSイメージファイルには以下2形式がある
- raw形式 :指定サイズ分のHDDエリアを確保、ゲストOSイメージをそのまま記録
- qcow2形式:使用する分のみHDDエリアを確保、ゲストOSファイル使用に伴いHDD使用サイズを拡張
通常の手順でゲストOSを作成すると「raw形式」となるため、qcow2形式を使用するには、予めqcow2形式イメージを作成しておく。
qcow2形式を使用する場合、バックアップイメージとしてsnapshootも取れる。
qcow2イメージファイル作成
★qcow2形式8GBイメージファイルを「KVMhogehoge.qcow2」で作成
- イメージ作成
# qemu-img create -f qcow2 /var/lib/libvirt/images/KVMhogehoge.qcow2 8GB
Formatting '/var/lib/libvirt/images/KVMhogehoge.qcow2', fmt=qcow2, size=8388608 kB
- モード変換
# chmod 600 /var/lib/libvirt/images/KVMhogehoge.qcow2
ー確認
# ls -l /var/lib/libvirt/images/
-rw------- 1 root root 262144 3月 16 14:33 KVMhogehoge.qcow2
qcow2イメージ変換
★raw2形式イメージファイル「KVMhogehoge.img」をqcow2形式ファイル「KVMhogehoge.qcow2」に変換
- 変換
# qemu-img convert /var/lib/libvirt/images/KVMhogehoge.img -O qcow2 \ /var/lib/libvirt/images/KVMhogehoge.qcow2
- 確認
# ls -l /var/lib/libvirt/images/
-rw------- 1 root root 8388608000 3月 16 15:08 KVMhogehoge.img -rw-r--r-- 1 root root 2807693312 3月 16 15:05 KVMhogehoge.qcow2
qcow2最適化
★raw2形式イメージファイル「KVMhogehoge.img」を最適化qcow2形式ファイル「KVMhogehoge.qcow2.new」に変換
- 最適化
# qemu-img convert -f qcow2 -O qcow2 /var/lib/libvirt/images/KVMfugafuga.qcow2 \ /var/lib/libvirt/images/KVMfugafuga.qcow2.new
- 確認
# ls -l /var/lib/libvirt/images/
-rw-r--r-- 1 root root 2556821504 3月 16 15:43 KVMfugafuga.qcow2 -rw-r--r-- 1 root root 2473197568 3月 16 16:22 KVMfugafuga.qcow2.new
qcow2スナップショット
★snapshot(バックアップ差分)を「snapshot1」という名前で作成
- 作成
# qemu-img snapshot -c snapshot1 /var/lib/libvirt/images/KVMhogehoge.qcow2
- 確認
# qemu-img snapshot -l /var/lib/libvirt/images/KVMhogehoge.qcow2
Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snapshot1 0 2011-03-16 15:37:48 00:00:00.000
- 復元(snapshot1イメージに戻し)
# qemu-img snapshot -a snapshot1 /var/lib/libvirt/images/KVMhogehoge.qcow2
ゲストOS定義ファイル
- ファイルの所在地
# vi /etc/libvirt/qemu/KVMhogehoge.xml
- XML定義ファイル修正後の反映
# virsh define /etc/libvirt/qemu/KVMhogehoge.xml
ドメイン KVMhogehoge が /etc/libvirt/qemu/KVMhogehoge.xml から定義されました
参照:
http://www.asterisk-works.jp/wiki/index.php/Kvm%2Bqemu
謝辞
テキスト作成にあたり、以下サイトを参考にさせて頂きました。ありがとうございます。
http://tipspc.blogspot.com/2009/09/qemu-kvm.html
http://www.asahi-net.or.jp/~aa4t-nngk/kvm.html#differentnetways
http://libvirt.org/formatdomain.html
http://d.hatena.ne.jp/int128/20090720/1248063548