本文共 3962 字,大约阅读时间需要 13 分钟。
通过COW写时复制原理 实现快速生成虚拟机脚本
#!/bin/bash#IMG 为镜像文件目录#YUAN 为模版虚拟机镜像文件#NAME 为生成虚拟机镜像文件名头#XML 为xml文件存放位置#IP 为当前用户的IP 我取来是为了生成mac地址用的XML=/etc/libvirt/qemu/IMG=/var/lib/libvirt/images/YUAN=rh7_templateNAME=testUUID=`uuidgen`#IP=`ifconfig | sed -rn "2p" | sed -r 's/(inet)(.*)(netmask)(.*)/\2/'`IP=`ifconfig |sed -n '2p' | awk '{print $2}'`#将IP4,IP3设置为mac地址第三四位#IP4=`echo $IP | sed -r 's/(.*)([0-9]*)[.]([0-9]*$)/\3/'` 这是我没有学awk的时候写的IP4=`echo $IP | awk -F. '{print $4}'`if [ $IP4 -ge 100 ];then IP4=$[IP4%100]elif [ $IP4 -le 9 ];then IP4=0$IP4fi#IP3=`echo $IP | sed -r 's/(.*)[.]([0-9]*)[.]([0-9]*$)/\2/'`这也是我没有学awk的时候写的IP3=`echo $IP | awk -F. '{print $3}'`if [ $IP3 -ge 100 ];then IP3=$[IP3%100]elif [ $IP3 -le 9 ];then IP3=0$IP3firead -p '请输入要创建的数字: ' NUMif [ -z $NUM ];then echo '输入不能为空' exitelif [ -z `echo $NUM | sed 's/[^0-9]*//'` ];then echo '请输入数字' exitelif [ $NUM -ge 100 -o $NUM -lt 1 ];then echo '请输入在1-100以内的数字' exitfiif [ $NUM -le 9 ];then NUM=0$NUMfiNAME=${NAME}${NUM}if [ -z $1 ];then if [ -e ${IMG}${NAME}.img ];then echo '你要创建的号码已经存在' exit fi echo -en "正在创建虚拟机镜像文件和......\t" #通过镜像文件,快速生成相应镜像文件 qemu-img create -f qcow2 -b ${IMG}.${YUAN}.img ${IMG}${NAME}.img &>/dev/null echo -e "\e[32;1m[OK]\e[0m" echo -en "正在生成XML配置文件......\t" #MYXML 为生成的xml配置文件目录 MYXML=${XML}${NAME}.xml cp $IMG.rhel7.xml ${MYXML} #使用sed对镜像文件进行修改 sed -i "/${YUAN}/s/${YUAN}/${NAME}/" ${MYXML} sed -i "/ /s/ .* $UUID /dev/null if [ $? -eq 0 ];then echo -e "\e[32;1m[OK]\e[0m" else rm -rf ${MYXML} rm -rf ${IMG}${NAME}.img echo -e "\e[31;1m[Failed]\e[0m" fi#-d将用次方法生成的虚拟机删除 当时是为了测试方便写的elif [ $1 == "-d" ];then rm -rf ${MYXML} rm -rf ${IMG}${NAME}.img virsh undefine ${NAME} &> /dev/null echo "成功删除${NAME}虚拟机"fi
这里我会提供模版XML 文件
模版虚拟机镜像文件 使用KVM生成一个新的rhel7虚拟机 做为原始盘可以参考 ()XML 模版
rh7_template e783146f-d26f-448d-951f-5c739b136d2f 1048576 1048576 1 hvm destroy restart restart /usr/libexec/qemu-kvm
转载于:https://blog.51cto.com/13558754/2057094