转自:http://zxlwz.blog.51cto.com/6952946/1852424

要求:备份的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=$[RANDOM%]
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
fi
expr $num "+" &>/dev/null
if [ $? -ne ] ;then
echo -e "\033[33mplease input a number !\033[0m"
exit
fi
if [ $num -eq ] ;then
echo -e "\033[33minput a number not range !\033[0m"
exit
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
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
done

kvm实现快速增量盘模式的克隆脚本的更多相关文章

  1. linux kvm虚拟机快速构建及磁盘类型

    KVM命令管理 virsh命令:用来管理各虚拟机的接口命令查看/创建/停止/关闭...支持交互模式格式:virsh 控制指令 [虚拟机名称] [参数] [root@room1pc01 桌面]# vir ...

  2. Java 原型模式(克隆模式)

      Java 的设计模式有 23 种,前段时间小编已经介绍了单例模式,由于我们在学习 Spring 的时候在 bean 标签的学习中碰到了今天要讲的原型模式,那么小编就已本文来介绍下原型模式. 原型模 ...

  3. Android 利用an框架快速实现夜间模式的两种套路

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22520818来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 网上看到过大多实现夜间模 ...

  4. .NET应用架构设计—表模块模式与事务脚本模式的代码编写

    阅读目录: 1.背景介绍 2.简单介绍表模块模式.事务脚本模式 3.正确的编写表模块模式.事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是 ...

  5. 通过no-gui模式运行jmeter脚本与生成报告

    说明:使用NO-GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 步骤:在GUI(图形化界面)模式调整好脚本,通过FTP工具将需要测试的.jmx文件传输到linux ...

  6. VMware/KVM/OpenStack虚拟化之网络模式总结

    一.VMware虚拟机网络模式 Vmware虚拟机有三种网络模式:Bridged (桥接模式).NAT (网络地址转换模式).Host-Only (仅主机模式).下面分别总结下这三种网络模式: 1. ...

  7. KVM虚拟机高级设置——10 快照、克隆、替换磁盘

    查看虚拟机磁盘文件 [root@CentOS2 ~]# cd /var/lib/libvirt/images/ [root@CentOS2 images]# ll -h total 13G -rw-r ...

  8. U盘模式无法引导进入pe系统

        有些笔记本.一体机 特别是win8.win10系统维护时需要 通过u盘进入pe系统,就是进不去,需要到bios中更改一下设置.            1.首先我们将已经使用u启动u盘启动盘制作 ...

  9. KVM修改虚机网卡模式:由NAT模式改为Bridge模式

    1)关闭虚机# virsh  shutdown  vm1 2)编辑虚机配置文件# virsh  edit  vm1 <interface type='default'> 改为<int ...

随机推荐

  1. Nginx 究竟如何处理事件?

    在了解了网络事件以及事件分发收集器以后,让我们来了解 Nginx 是怎么样处理事件的? Nginx 事件循环 当 Nginx 刚刚启动时,在等待事件部分,也就是打开了 80 或 443 端口,这个时候 ...

  2. LibreOJ6279. 数列分块入门 3 题解

    题目链接:https://loj.ac/problem/6279 题目描述 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,询问区间内小于某个值 \(x\) 的前驱(比其 ...

  3. 「USACO15FEB」Censoring (Silver) 审查(银) 解题报告

    题面 就是让你--在字符串A中,如果字符串B是A的子串,那么就删除在A中第一个出现的B,然后拼接在一起,一直重复上述步骤直到B不再是A的子串 |A|\(\le 10^6\) 思路: KMP+栈 1.由 ...

  4. 1092 最好吃的月饼 (20分)C语言

    月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风血雨-- 在这里我们用数字说话,给出全国各地各种月饼的 ...

  5. Python for Data Analysis 学习心得(三) - 文件读写和数据预处理

    一.Pandas文件读写 pandas很核心的一个功能就是数据读取.导入,pandas支援大部分主流的数据储存格式,并在导入的时候可以做筛选.预处理.在读取数据时的选项有超过50个参数,可见panda ...

  6. 8.在python中用data_only=True设置显示excel表格中公式的结果为None的解决方法

    在用python调用excel文件显示带公式的表格内容,有两种显示结果:第一种是直接显示表格中公式人内容:另一种是显示其表格中公式的结果. 显示第一种,可以这样输入代码: 显示第二种,可以这样输入代码 ...

  7. 大量SQL的解决方案——sdmap

    大量SQL的解决方案--sdmap 最近看到群里面经常讨论大型应用中SQL的管理办法,有人说用EF/EF Core,但很多人不信任它生成SQL的语句:有人说用Dapper,但将SQL写到代码中有些人觉 ...

  8. cogs 495. 滑动窗口 单调队列

    495. 滑动窗口 ★★   输入文件:window.in   输出文件:window.out   简单对比时间限制:2 s   内存限制:256 MB [问题描述] 给你一个长度为N的数组,一个长为 ...

  9. PTA - 堆栈模拟队列

    设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判断堆栈S是否已满,返回1或0: in ...

  10. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第二节:WebRequest

    本节主要来介绍一下,在C#中制造爬虫,最为常见.常用.实用的基础类 ------ WebRequest.WebResponse. 先来看一个示例 [1.2.1]: using System; usin ...