本帖最后由 出VU时代 于 2016-9-10 16:06 编辑
- 要求:备份的img磁盘格式只有qcow2格式支持增量盘使用和快照功能
- 当你的一个虚拟机格式是raw格式时,请先格式转换
- 如:linux7.raw 是raw格式
- qemu-img convert -c -O qcow2 linux7.raw linux7.qcow2
- 默认的img或硬盘存放在/var/lib/libvirt/images/
- 默认的xml文件存放在/etc/libvirt/qemu/
- 脚本:
- 先创建了一个模板机,怎么创建用KVM创建虚拟机这里省略,阿铭老师都讲的很详细。
- 我这里创建虚拟的信息如下
- ls /var/lib/libvirt/images/
- linux7.img
- ls /etc/libvirt/qemu/
- linux7.xml
- 作为模板机,我不允许或不让别人知道上面那两个文件。
- mv /var/lib/libvirt/images/linux7.img /var/lib/libvirt/images/.linux7.img
- mv /etc/libvirt/qemu/linux7.xml /etc/libvirt/qemu/.linux7.xml
- 修改vim /etc/libvirt/qemu/.linux7.xml
- 在这行修改
- 为
- 后续,当要克隆机器后,直接运行脚本克隆即可!
- 解决问题:
- 解决了每次克隆完后还要修改xml文件,进系统后还要进行>/etc/udev/70*。
- 效果图,步骤
- 1.步骤一
- [root@room liuwenzhi]# kvm_clone #运行脚本
- ###########KVM clone ###########
- # #
- # Welcome Use #
- # #
- ################################
- Enter a number :1
- 2.步骤二
- [root@room liuwenzhi]# virsh list --all 查看克隆机器
- 2 linux7-clone1 closed
- 3.步骤三
- [root@room liuwenzhi]# virsh start linux7-clone1 开机
- 4.进入系统后修改ip搞定了
- [root@room liuwenzhi]#nmtui #我的机器是centos7,所以setup没有,改成nmtui了
- 脚本代码
- [root@room liuwenzhi]# cat kvm_clone
- #!/bin/bash
- #定义磁盘放置目录
- img_dir=/var/lib/libvirt/images/
- #定义XML文件放置目录
- xml_dir=/etc/libvirt/qemu/
- #模板机器IMG
- src_name=linux7
- src_img=.linux7.img
- src_xml=.linux7.xml
- menu (){
- abc=3$[RANDOM%8]
- echo -e "\033[${abc};1m ###########KVM clone ###########\033[0m"
- echo -e "\033[${abc};1m # #\033[0m"
- echo -e "\033[${abc};1m # Welcome Use #\033[0m"
- echo -e "\033[${abc};1m # #\033[0m"
- echo -e "\033[${abc};1m ################################\033[0m"
- }
- KVM_CLONE(){
- read -p "Enter a number :" num
- dst_name=$src_name-clone${num}
- dst_img=$src_name-clone${num}.img
- dst_xml=$src_name-clone${num}.xml
- if [ -z $num ] ;then
- echo -e "\033[33mplease input a number !\033[0m"
- exit 10
- fi
- expr $num "+" 1 &>/dev/null
- if [ $? -ne 0 ] ;then
- echo -e "\033[33mplease input a number !\033[0m"
- exit 11
- fi
- if [ $num -eq 0 ] ;then
- echo -e "\033[33minput a number not range !\033[0m"
- exit 12
- fi
- if [ -f $img_dir$dst_img -o -f $xml_dir$dst_xml ] ;then
- echo -e "\033[33mclone--->clone${num} exists,fail!\033[0m"
- exit 13
- fi
- echo -en "wait ... clone KVM image\t"
- qemu-img create -f qcow2 -b $img_dir$src_img $img_dir$dst_img &>/dev/null
- echo -e "\033[32;1m[OK]\033[0m"
- echo -en "wait ... Copy KVM xml\t\t"
- cat /etc/libvirt/qemu/.linux7.xml > /tmp/kvm.xml
- sed -i "//s/$src_name/$dst_name/" /tmp/kvm.xml
- sed -i "//c\$(uuidgen)" /tmp/kvm.xml
- sed -i "//dev/null
- echo -e "\033[32;1m[OK]\033[0m"
- echo "done"
- }
- while :
- do
- menu
- KVM_CLONE
- exit 0
- done
编辑回复