KVM虛擬機在CentOS6.4上的應用

KVM虛擬化基於它在開源性受到了不少人的歡迎。KVM的裝機、克隆功能是如何實現的呢?下面介紹的是在CentOS6.4上部署PXE環境來實現自動安裝Rhel6.4,利用qcow2增量鏡像實現克隆虛擬機功能。

  我們可以通過以下命令來查看CPU是否支持全虛擬化!找到flags部分,如果其中輸出有VMX或SVM,即表明支持虛擬化技術。

# egrep '(vmx|svm)' /proc/cpuinfo

flags       : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tscarch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16xtpr pdcm lahf_lm tpr_shadow

flags       : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tscarch_perfmon pebs bts rep_good pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16xtpr pdcm lahf_lm tpr_shadow

1、安裝KVM虛擬機軟件

# yum groupinstall "Virtualization" "Virtualization Client""Virtualization Platform" -y 

# yum install qemu-kvm virt-manager libvirt -y 

# lsmod |grep kvm                                  //kvm模塊一定要加載

kvm_intel              53484  0

kvm                  316506  1 kvm_intel

# service libvirtd start                            //啓動libvirt服務


2、安裝配置PXE所需的軟件並配置dhcp

# yum install -y dhcp tftp-server syslinuxsystem-config-kickstart vsftpd

# vim /etc/dhcp/dhcpd.conf

subnet 192.168.10.0 netmask 255.255.255.0 {

      option  routers  192.168.10.254;

      option  domain-name-servers  192.168.10.254;

      range  192.168.10.10  192.168.10.200;

      next-server  192.168.10.1;

      filename  "pxelinux.0";

        }

# service dhcpd start

# chkconfig dhcpd on


3、啓動tftp服務

# vim /etc/xinetd.d/tftp

# mkdir /tftpboot

server_args             = -s /tftpboot

disable                 = no

# service xinetd restart


4、拷貝相關文件到tftp下載目錄

# mkdir /tftpboot

# cd /media/isolinux/

# cp -r * /tftpboot/

# cp /usr/share/syslinux/pxelinux.0/tftpboot/

# mkdir pxelinux.cfg

# mv isolinux.cfg pxelinux.cfg/default

# vim default

label linux

menu label ^Install or upgrade an existing system

menu default

kernel vmlinuz

append initrd=initrd.img ks=ftp://192.168.10.1/ks.cfg


5、拷貝光盤文件到ftp下載目錄啓動ftp服務並配置基於rhel6.4的yum

# cd /media

# mkdir rhel6

# cp -r * /var/ftp/rhel6

# service vsftpd start

# chkconfig vsftpd on

# vim /etc/yum.repo.d/redhat.repo

[red]

name=red hat

baseual=file:///var/ftp/rhel6/

enabled=1

gpgcheck=0


6、生成ks文件

# system-config-kickstart


7、關閉NetworkManager服務

# service  NetworkManager  stop

# chkconfig  NetworkManager  off


8、網卡改名

# vim /etc/udev/rules.d/70-persistent-net.rules

查看mac地址,把指定mac地址的網卡改成你需要的名字

# modprobe  -rv  e1000       //停止網卡驅動

# modprobe  -v   e1000       //重新加載網卡驅動


9、創建橋接網卡br0並配置br0eth0

# cp ifcfg-eth0  ifcfg-br0

# cat ifcfg-br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.168.10.1

PREFIX=24


# cat ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

BRIDGE=br0

service network restart


10、編寫系統安裝腳本

# vim install.sh

#!/bin/bash

cd  /var/lib/libvirt/images/

qemu-img create  -f  qcow2 rhel6base.img 80G

/usr/sbin/virt-install \

  --vnc \

  --noautoconsole \

  --name=rhel6base \

  --ram=1024 \

  --arch=x86_64 \

  --vcpus=1 \

  --os-type=linux \

  --os-variant=rhel6 \

   --hvm \

  --accelerate \

  --disk=/var/lib/libvirt/images/rhel6base.img \

  -m 52:54:00:00:01:00 \

  -w bridge=br0 \

  --location=ftp://192.168.10.1/rhel6 \

  --extra-args="ks=ftp://192.168.10.1/ks.cfg"


11、編寫克隆虛擬機的腳本

# vim clone.sh

#!/bin/bash


IMG_DIR=/var/lib/libvirt/images

BASE_VM=rhel6base

E_NOINPUT=65

E_NOTNUM=66

E_OUT_OF_RANGE=67

E_VM_EXISTS=68

read -p "please input a vm number:" NEW_VMNU

if [ -z $NEW_VMNU ]; then

echo "You must input a number."

exit $E_NOINPUT

fi

if [ $NEW_VMNU != $(echo"$NEW_VMNU*1" | bc) ]; then

echo "You must input a number."

exit $E_NOTNUM

fi

if [ $NEW_VMNU -lt 1 -o $NEW_VMNU -gt 254]; then

echo "You must input a number between 1 and 254"

exit $E_OUT_OF_RANGE

fi

NEW_VM=${BASE_VM}node${NEW_VMNU}

if [ -e $IMG_DIR/$NEW_VM.img ]; then

echo "$NEW_VM already exists"

exit $E_VM_EXISTS

fi

echo -en "creating diskimage......\t\t"

qemu-img create -b $IMG_DIR/$BASE_VM.img -fqcow2 $IMG_DIR/$NEW_VM.img &> /dev/null

echo -e "\e[32m[OK]\e[0m"

echo

virsh dumpxml $BASE_VM >/tmp/$BASE_VM.xml

MAC_ADDR=$(echo"obase=16;$NEW_VMNU" | bc)

sed -i"/<name>$BASE_VM/s/$BASE_VM/$NEW_VM/" /tmp/$BASE_VM.xml

sed -i"/<uuid>/s/<uuid>.\{36\}/<uuid>$(uuidgen)/"/tmp/$BASE_VM.xml

sed -i "/$BASE_VM\.img/s/$BASE_VM\.img/$NEW_VM\.img/"/tmp/$BASE_VM.xml

sed -i "/macaddress/s/00'/$MAC_ADDR'/" /tmp/$BASE_VM.xml

virsh define /tmp/$BASE_VM.xml &>/dev/null

echo "$NEW_VM created."


12、編寫刪除克隆機的腳本

# vim undefine.sh

#!/bin/bash

IMG_DIR=/var/lib/libvirt/images

BASE_VM=rhel6basenode

read -p "please input a vm number:" NEW_VMNU

virsh undefine ${BASE_VM}${NEW_VMNU}

rm -rf ${IMG_DIR}/${BASE_VM}${NEW_VMNU}.img



附:

virsh命令

1、查看虛擬機列表

# virsh  list

# virsh  list  --all

2、查看virsh版本

# virsh  version

3、啓動名稱爲rhel6baseGUEST主機

# virsh  start  rhel6base

4、強制關閉GUEST主機

# virsh  destroy  rhel6base

5、導出GUEST主機的XML配置文件

# virsh  dumpxml  rhel6base >  ~/rhel6base.xml

6、取消GUEST主機的定義

#  virsh  undefine ~/rhel6base

7、使用已經存在的xml文件和磁盤文件定義GUEST主機

# virsh  define  ~/rhel6base.xml

8、設置GUEST主機在HOST主機啓動時,也會自動啓動

# virsh  autostart  rhel6base


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章