KVM/覚書

Last-modified: 2011-11-29 (火) 08:46:53
最終更新:2011-11-29 (火) 08:46:53
アクセス数(合計):?
利用者; ? アクセス数(本日):? アクセス数(昨日):?

仮想サーバ構築 KVM 覚書

仮想化サーバ環境であるKVMを導入する。
KVMはKernel-based Virtual Machineの略。Intel VTまたはAMD-VをサポートするCPU上で完全仮想化を実現する。


目的

仮想化KVM覚書

構築条件

構築機器

  • 以下構成のPC上で構築
    CPUAthlon64x2 3600+
    ChipsetAMD 690G
    メモリ2GB

作成環境

OS    CentOS 6.0 64bit版

※動作CPUがIntel VT(インテルCPU)またはAMD-V(AMDCPU)をサポートしていること。
 インテルのどのCPUがサポートしているかは以下URLにて確認
 http://www.pc-koubou.jp/info/win7_vt.php

サーバ作成条件

ホストOSサーバIP192.168.0.20/24
サーバMAC00:19:DB:88:74:4E
ホスト名KVMhost
user   hogehoge
userpasswdhogehogepass
ゲストOSサーバIP(外部)192.168.0.100/24
サーバIP(内部)192.168.122.100/24
ホスト名KVMguest
user   hogehoge
userpasswdhogehogepass

手順記入ルール

  • コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
  • コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。

ゲストOS実行管理

ゲストOS起動/停止

  • 仮想化起動
# virsh start KVMguest
  • 確認
# virsh list --all
  • 停止
# virsh shutdown KVMguest

※うまく停止しない場合がある。ゲストOSログイン後シャットダウンのほうが確実

  • 強制電源断
# virsh destroy KVMguest

ゲストOS一時中断/再開

  • 一時中断
# virsh suspend KVMguest
  • 再開
# virsh resume KVMguest

ゲストOS追加(qemuコマンド)

VNC設定

※Windows標準のリモートアクセスが使えない環境でリモート管理を行う場合VNCを利用する 

サーバのリモート管理を可能とするため「VNC」をインストールする。

  • 手順に従いインストールする。

qemuコマンドによるゲストOSインストール

  • イメージ作成
# qemu-img create -f qcow2 /var/lib/libvirt/images/KVMhogehoge.qcow2 8GB
Formatting '/var/lib/libvirt/images/KVMhogehoge.qcow2', fmt=qcow2 size=8589934592
encryption=off cluster_size=0

★qcow2イメージで8GBのHDDイメージ作成

  • インストール
# /usr/libexec/qemu-kvm -hda /var/lib/libvirt/images/KVMhogehoge.qcow2 \
-cdrom /home/hogehoge/CentOS6.0_64bit.iso -boot d -m 1024 -vnc :1
  • VNC接続
    realvncツールで、「10.107.16.100:5901」に接続
    ★「-vnc :x」の指定で「port 590x」接続となる。 -vnc:1 指定の場合は 10.107.16.100:5901 となる。

ゲストOS削除

ゲストOS削除

  • 定義削除
# virsh undefine KVMtest
ドメイン KVMtest の定義は削除されています
  • イメージ確認
# virsh pool-list
名前               状態     自動起動
-----------------------------------------
default              動作中  yes
# virsh vol-list default
名前               パス
-----------------------------------------
KVMtest.qcow2        /var/lib/libvirt/images/KVMtest.qcow2
  • イメージ削除
# virsh vol-delete /var/lib/libvirt/images/KVMhogehoge.img
ボリューム /var/lib/libvirt/images/KVMtest.qcow2 は削除されました
  • 確認
# 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/KVMtest.qcow2 8GB
Formatting '/var/lib/libvirt/images/KVMtest.qcow2', fmt=qcow2 size=8589934592 encryption=off
cluster_size=0
  • 確認
# ls -l /var/lib/libvirt/images/
-rw-r--r--  1 root root      262144  9月 25 15:08 2011 KVMtest.qcow2
  • モード変換
# chmod 600 /var/lib/libvirt/images/KVMtest.qcow2
  • 確認
# ls -l /var/lib/libvirt/images/
-rw-------  1 root root      262144  9月 25 15:08 2011 KVMtest.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 qemu qemu  8589934592  9月 25 15:34 2011 KVMhogehoge.img
-rw-r--r--  1 root root  1661599744  9月 25 15:28 2011 KVMhogehoge.qcow2

qcow2最適化

★raw2形式イメージファイル「KVMhogehoge.img」を最適化qcow2形式ファイル「KVMhogehoge.qcow2.new」に変換

  • 最適化
#  qemu-img convert -f qcow2 -O qcow2 /var/lib/libvirt/images/KVMhogehoge.qcow2 \
 /var/lib/libvirt/images/KVMhogehoge.qcow2.new
  • 確認
# ls -l /var/lib/libvirt/images/
-rw-r--r--  1 root root  1661599744  9月 25 15:28 2011 KVMhogehoge.qcow2
-rw-r--r--  1 root root  1661599744  9月 25 15:52 2011 KVMhogehoge.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-09-25 16:26:05   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