zoukankan      html  css  js  c++  java
  • kvm实现快速增量盘模式的克隆脚本

    转自: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=3$[RANDOM%8]
            echo -e "33[${abc};1m      ###########KVM clone ###########33[0m"
            echo -e "33[${abc};1m      #                              #33[0m"
            echo -e "33[${abc};1m      #       Welcome Use            #33[0m"
            echo -e "33[${abc};1m      #                              #33[0m"
            echo -e "33[${abc};1m      ################################33[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 "33[33mplease input a number !33[0m"
            exit 10
    fi
    expr $num "+" 1 &>/dev/null
    if [ $? -ne 0 ] ;then
            echo -e "33[33mplease input a number !33[0m"
            exit 11
    fi
    if [ $num -eq 0 ] ;then
            echo -e "33[33minput a number not range !33[0m"
            exit 12
    fi
    if [ -f $img_dir$dst_img -o -f $xml_dir$dst_xml ] ;then
            echo -e "33[33mclone--->clone${num} exists,fail!33[0m"
            exit 13
    fi
    echo -en "wait ... clone KVM image	"
    qemu-img create -f qcow2 -b $img_dir$src_img $img_dir$dst_img  &>/dev/null
    echo -e "33[32;1m[OK]33[0m"
    echo -en "wait ... Copy KVM xml		"
    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 "33[32;1m[OK]33[0m"
    echo  "done"
    }
    while :
    do
            menu
            KVM_CLONE        
            exit 0
    done
  • 相关阅读:
    【区间覆盖问题】uva 10020
    【Fibonacci】BestCoder #28B Fibonacci
    Struts2 用过滤器代替了 servlet ,???? 且不需要tomcat就可以直接做功能测试
    血的教训 password写成passward,教训应该从首页赋值 参数名
    为什么这个地方用重定向会报错.只能用 服务器跳转?? 为什么我加了过滤器,还是能直接登陆 servlet
    //可以不保存在session中, 并且前面我保存在request,这里session也可以获取 chain.doFilter(request, response); //只有登录名不为空时放行,防止直接登录 成功的页面
    request.setAttribute("username", username);//一定要保存,OGNL才能获取${username}
    form表单的提交地址一定要是完整的绝对地址
    登录页面jsp跳转到另一个jsp 与jsp-Servlet-jsp
    在Windows下MyEclipse运行JAVA程序连接HBASE读取数据出错
  • 原文地址:https://www.cnblogs.com/zhongguiyao/p/8075788.html
Copyright © 2011-2022 走看看