#kvm虚拟化中用增量镜像(差量镜像)创建vm的脚本
说明:本例是通过现有的一台kvm虚拟机vmx0的磁盘镜像vmx0.img作为基础镜像(后备镜像)来创建增量镜像vmx?.img(差量镜像),新虚拟机vmx?的磁盘使用增量镜像(差量镜像),新虚拟机的数据写入到增量镜像中,基础镜像vmx0.img(后备镜像)设置为只读且不写入任何新数据。
#创建新虚拟机vmx0,并安装好centos7.3系统,作为模板:
mkdir -pv /vmdisk/ #创建存放磁盘镜像的目录
virt-install \
--name=vmx0 \
--ram 1024 \
--vcpus=1 \
--disk path=/vmdisk/vmx0.img,size=5,format=qcow2 \
--vnc --vncport=5910 --vnclisten=0.0.0.0 \
-- location=ftp://192.168.10.7/dvd
--------------------------------------------------------------------
#kvm虚拟化中用增量镜像创建vm的脚本
vi kvmz.sh 脚本如下(脚本已测OK-金,可直接复制代码)
#--------------------------------------
#!/bin/bash
#定义变量
virsh list --all
simg=vmx0
svm_name=vmx0
dvname=vmx5
vport=5915
mac="00:"`echo $RANDOM | md5sum | sed 's/\(..\)/&:/g' | cut -c1-14`
vmuid=$(uuidgen)
echo $dvname
echo $mac
echo $vmuid
#提示用户输入信息
read -p '请输入虚拟机的模板机名称,例:vmx0:' svm_name
read -p '请输入新虚拟机的名称,例:vmx0:' dvname
read -p '请输入新虚拟的vnc端口,例:5912:' vport
#用simg基础镜像来创建增量镜像
#-b指定后备镜像(即基础镜像),-f指定格式。只有格式为qcow2才能实现后备镜像和增量镜像功能。
mkdir -pv /vmdisk
cd /vmdisk
qemu-img create -b ${svm_name}.img -f qcow2 ${dvname}.img
chmod -v 444 ${svm_name}.img
qemu-img info ${svm_name}.img
qemu-img info ${dvname}.img
#编辑新虚拟机的xml配置文件
cd /etc/libvirt/qemu/
cp -pv ${svm_name}.xml ${dvname}.xml
sed -i "/uuid/c\<uuid>$vmuid</uuid>" ${dvname}.xml
sed -i "s/${svm_name}/${dvname}/" ${dvname}.xml
sed -i "/mac address/c\<mac address='$mac'/>" ${dvname}.xml
sed -i "s/5910/${vport}/" ${dvname}.xml
grep $vmuid ${dvname}.xml
grep $mac ${dvname}.xml
grep $dvname ${dvname}.xml
grep $vport ${dvname}.xml
#根据虚拟机的xml模板文件创建新虚拟机
virsh define /etc/libvirt/qemu/${dvname}.xml
virsh start ${dvname}
virsh autostart ${dvname}
virsh list --all
ls /vmdisk/
#功能说明
#virsh start ${dvname} --console #启动虚拟机并进入console控制台
#virsh console ${dvname} #按ctl+]退出console控制台
#virt-viewer ${dvname}
read -p "按回车键进入${dvname}的console控制台,进入console后按ctrl+]退出..."
virsh console ${dvname}
###脚本编写完毕
#--------------------------------------
测试脚本的运行:
chmod +x kvmz.sh
说明:本例是通过现有的一台kvm虚拟机vmx0的磁盘镜像vmx0.img作为基础镜像(后备镜像)来创建增量镜像vmx?.img(差量镜像),新虚拟机vmx?的磁盘使用增量镜像(差量镜像),新虚拟机的数据写入到增量镜像中,基础镜像vmx0.img(后备镜像)设置为只读且不写入任何新数据。
#创建新虚拟机vmx0,并安装好centos7.3系统,作为模板:
mkdir -pv /vmdisk/ #创建存放磁盘镜像的目录
virt-install \
--name=vmx0 \
--ram 1024 \
--vcpus=1 \
--disk path=/vmdisk/vmx0.img,size=5,format=qcow2 \
--vnc --vncport=5910 --vnclisten=0.0.0.0 \
-- location=ftp://192.168.10.7/dvd
--------------------------------------------------------------------
#kvm虚拟化中用增量镜像创建vm的脚本
vi kvmz.sh 脚本如下(脚本已测OK-金,可直接复制代码)
#--------------------------------------
#!/bin/bash
#定义变量
virsh list --all
simg=vmx0
svm_name=vmx0
dvname=vmx5
vport=5915
mac="00:"`echo $RANDOM | md5sum | sed 's/\(..\)/&:/g' | cut -c1-14`
vmuid=$(uuidgen)
echo $dvname
echo $mac
echo $vmuid
#提示用户输入信息
read -p '请输入虚拟机的模板机名称,例:vmx0:' svm_name
read -p '请输入新虚拟机的名称,例:vmx0:' dvname
read -p '请输入新虚拟的vnc端口,例:5912:' vport
#用simg基础镜像来创建增量镜像
#-b指定后备镜像(即基础镜像),-f指定格式。只有格式为qcow2才能实现后备镜像和增量镜像功能。
mkdir -pv /vmdisk
cd /vmdisk
qemu-img create -b ${svm_name}.img -f qcow2 ${dvname}.img
chmod -v 444 ${svm_name}.img
qemu-img info ${svm_name}.img
qemu-img info ${dvname}.img
#编辑新虚拟机的xml配置文件
cd /etc/libvirt/qemu/
cp -pv ${svm_name}.xml ${dvname}.xml
sed -i "/uuid/c\<uuid>$vmuid</uuid>" ${dvname}.xml
sed -i "s/${svm_name}/${dvname}/" ${dvname}.xml
sed -i "/mac address/c\<mac address='$mac'/>" ${dvname}.xml
sed -i "s/5910/${vport}/" ${dvname}.xml
grep $vmuid ${dvname}.xml
grep $mac ${dvname}.xml
grep $dvname ${dvname}.xml
grep $vport ${dvname}.xml
#根据虚拟机的xml模板文件创建新虚拟机
virsh define /etc/libvirt/qemu/${dvname}.xml
virsh start ${dvname}
virsh autostart ${dvname}
virsh list --all
ls /vmdisk/
#功能说明
#virsh start ${dvname} --console #启动虚拟机并进入console控制台
#virsh console ${dvname} #按ctl+]退出console控制台
#virt-viewer ${dvname}
read -p "按回车键进入${dvname}的console控制台,进入console后按ctrl+]退出..."
virsh console ${dvname}
###脚本编写完毕
#--------------------------------------
测试脚本的运行:
chmod +x kvmz.sh
sh kvmz.sh
本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/1964939,如需转载请自行联系原作者