you_hikoの技術メモ - KVM

KVM

必要なパッケージをインストールする

# yum -y install qemu-kvm libvirt python-virtinst bridge-utils virt-manager virt-viewer
# modprobe kvm
# modprobe kvm_intel
# lsmod | grep kvm
# /etc/init.d/libvirtd start
# chkconfig libvirtd on

ブリッジネットワークを設定する

参考UR:8.2.インターフェース設定ファイル
# cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
# vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge             # bootp|dhcp|none の3択 Redhat公式ドキュメントにはstaticの記載はない
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.XX
USERCTL=no              # no:root でないユーザーはこのデバイスを制御できない
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

virbr0を削除する

# virsh net-destroy default
# virsh net-autostart default --disable

外部からのvnc接続を許可する

# echo 'vnc_listen = "0.0.0.0"' >> /etc/libvirt/qemu.conf
# /etc/init.d/libvirtd restart

ゲストマシンの作成

rawディスク
# dd if=/dev/zero of=/var/kvm/images/VirtualMachine.img bs=1M count=16000
8196+0 records in
8196+0 records out
8594128896 bytes (8.6 GB) copied, 101.529 s, 84.6 MB/s
qcow2ディスク
# qemu-img create -f qcow2 /var/kvm/images/vmguest01.qcow2 16G
ormatting 'vmguest01', fmt=qcow2 size=17179869184 encryption=off cluster_size=65536 

ゲストマシンのインストール

# virt-install --connect qemu:///system --name VirtualMachine --vcpus=1 --ram 1024 --os-type=linux --os-variant=rhel6 --disk bus=virtio,cache=writethrough,path=/var/kvm/images/VirtualMachine.img --cdrom /var/kvm/iso/CentOS-6.3-x86_64-bin-DVD1.iso --network bridge=br0,model=virtio --vnc --vncport=5901 --keymap=ja

ゲストマシンの操作

ステータス確認
# virsh list
 Id 名前               状態
----------------------------------
  1 CentOS5              実行中
  2 Windows7             実行中
設定情報確認
# virsh dominfo Windows7
Id:             2
名前:         Windows7
UUID:           d33eba70-32cc-619b-90e5-ab8c32e4078f
OS タイプ:   hvm
状態:         実行中 ← 停止中は「シャットオフ」と表示
CPU:            2
CPU 時間:     314.3s
最大メモリー: 2097152 kB
使用メモリー: 2097152 kB
Persistent:     yes
自動起動:   無効にする
ゲストマシン起動
# virsh start Windows7
ドメイン Windows7 が起動されました
ゲストマシンシャットダウン
# virsh shutdown Windows7
ドメイン Windows7 をシャットダウンしています
ゲストマシン強制停止
# virsh destroy CentOS5
ドメイン VirtualMachine は強制停止されました
ゲストマシン削除
# virsh undefine CentOS5
ドメイン CentOS5 の定義は削除されています

ゲスト設定ファイル編集

# virsh edit CentOS5
# virsh define /etc/libvirt/qemu/CentOS5.xml

KVMでゲストOSイメージ(VM)のコピー作成

# virt-clone --original src_vm_name --name dst_vm_name --file /var/lib/libvirt/images/dst_vm_name.img

qcow2イメージ変換

raw形式イメージファイル「KVMhogehoge.img」をqcow2形式ファイル「KVMhogehoge.qcow2」に変換
# qemu-img convert /var/lib/libvirt/images/KVMhogehoge.img -O qcow2 /var/lib/libvirt/images/KVMhogehoge.qcow2

qcow2スナップショット

作成
# qemu-img snapshot -c KVMhogehoge.sanpshot.yyyymmdd KVMhogehoge.qcow2
一覧
# qemu-img snapshot -l KVMhogehoge.qcow2
削除
# qemu-img snaphost -d KVMhogehoge.snapshot.yyyymmdd KVMhogehoge.qcow2
スナップショットの時点へ復元する
# qemu-img snapshot -a KVMhogehoge.snapshot.yyyymmdd KVMhogehoge.qcow2

qcow2ディスク拡張(8G->16G) ※snapshotが存在するイメージはサイズ変更不可

# qemu-img resize KVMhogehoge.qcow2 +8G
Image resized.

KVMゲストOSの時刻合わせ

# vi /etc/libvrt/qemu/guest.xml
[変更前]
<clock offset='utc'/>
[変更後]
<clock offset='localtime'/>
# virsh define /etc/libvirt/qemu/guest.xml
ドメイン guest が /etc/libvirt/qemu/guest.xml から定義されました

NAT用の仮想ブリッジvirbr0を削除する

# ifconfig virbr0
# virsh net-destroy default
ネットワーク default は停止されました
# virsh net-autostart default --disable
ネットワーク default の自動起動設定が解除されました

ホストのシャットダウン時にゲストもシャットダウンする

# vi /etc/sysconfig/libvert-guests
ON_SHUTDOWN=shutdown
SHUTDOWN_TIMEOUT=180
ゲストOSにホストからのshutdownメッセージを拾うため、acpidをインストールする
# yum install acpid
# /etc/init.d/acpid start
# chkconfig acpid on
acpid: can't open /proc/acpi/event: Device or resource busyと出力される場合
# /etc/init.d/haldaemon stop
# /etc/init.d/acpid start

ゲストの負荷情報

# yum install virt-top
# virt-top