• kvm链接克隆虚拟机迁移到openstack机器的实验


     


     

    总结

    如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话。

     

    因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件

     

    创建空盘:qemu-img create -f qcow2 mcwlink1-new.qcow2 50G

    将链接克隆镜像数据导入到空盘,此时会将依赖的基础镜像数据一同导入:qemu-img convert -f qcow2 -O qcow2 mcwlink1.qcow2 mcwlink1-new.qcow2 

    迁移部分信息

    基础镜像:mcwtemplate.qcow2

    链接克隆镜像,依赖上面基础镜像:mcwlink1.qcow2

    链接克隆镜像,依赖上面基础镜像:mcwlink2.qcow2

    根据链接克隆镜像mcwlink1.qcow2,创建的可以在openstack正常使用的镜像: mcwlink1-new.qcow2

     

    可正常在openstack使用的链接克隆迁移镜像制作过程

    创建两个链接克隆磁盘
    [root@kvm008.bj.mcw.com img]# ls
    mcwtemplate.qcow2 v012-c73-st1-extend.qcow2 vm1-c73-history001.qcow2 vq25-cloudservice020.qcow2 vq42-cloudservice38.qcow2
    mcwtestbase.qcow2
    [root@kvm008.bj.mcw.com img]# qemu-img create -f qcow2 -b mcwtemplate.qcow2 mcwlink1.qcow2
    Formatting 'mcwlink1.qcow2', fmt=qcow2 size=53687091200 backing_file='mcwtemplate.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
    [root@kvm008.bj.mcw.com img]# qemu-img create -f qcow2 -b mcwtemplate.qcow2 mcwlink2.qcow2
    Formatting 'mcwlink2.qcow2', fmt=qcow2 size=53687091200 backing_file='mcwtemplate.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
    [root@kvm008.bj.mcw.com img]# pwd
    /data/kvm/img
    [root@kvm008.bj.mcw.com img]#

    定义两个实例的配置
    [root@kvm008.bj.mcw.com ares]# ls
    mcwlink1.xml mcwlink2.xml mcwtest.xml
    [root@kvm008.bj.mcw.com ares]# virsh define mcwlink2.xml
    Domain mcwlink2 defined from mcwlink2.xml

    [root@kvm008.bj.mcw.com ares]# virsh start mcwlink2
    Domain mcwlink2 started

    [root@kvm008.bj.mcw.com ares]#

    两个虚拟机都做点改动
    [root@kvm008.bj.mcw.com ares]# virsh console mcwlink1
    Connected to domain mcwlink1
    Escape character is ^]

    [root@mcwlink1 ~]# ls
    anaconda-ks.cfg ks-post.log ks-pre.log original-ks.cfg
    cobbler.ks ks-post-nochroot.log mcw.txt
    [root@mcwlink1 ~]# cat mcw.txt
    mcwlink1
    [root@mcwlink1 ~]#
    [root@kvm008.bj.mcw.com ares]# virsh console mcwlink2
    Connected to domain mcwlink2
    Escape character is ^]

    [root@mcwlink2 ~]# cat mcw.txt
    mcwlink2
    [root@mcwlink2 ~]#
    [root@kvm008.bj.mcw.com ares]#


    查看两个链接克隆的磁盘,是依赖基础镜像磁盘的

    [root@kvm008.bj.mcw.com img]# qemu-img info mcwlink1.qcow2
    image: mcwlink1.qcow2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 8.1M
    cluster_size: 65536
    backing file: mcwtemplate.qcow2
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    [root@kvm008.bj.mcw.com img]# qemu-img info mcwlink2.qcow2
    image: mcwlink2.qcow2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 14M
    cluster_size: 65536
    backing file: mcwtemplate.qcow2
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    [root@kvm008.bj.mcw.com img]#

     

    mcwlink1-new.qcow2

    创建空磁盘,然后使用转换格式的命令将磁盘数据写入到新磁盘,这样做,是会将依赖的基础磁盘backing file一同写入到新磁盘的,这样这个新磁盘就可以在openstack上用了,不然用它创建实例会报错无法创建openstack实例,会去找依赖的基础镜像backing file,
    我们也可以看到,下面的磁盘也不是几十m的链接克隆的磁盘了
    [root@kvm008.bj.mcw.com img]# qemu-img convert -f qcow2 -O qcow2 mcwlink1.qcow2 mcwlink1-new.qcow2
    [root@kvm008.bj.mcw.com img]# qemu-img info mcwlink1-new.qcow2
    image: mcwlink1-new.qcow2
    file format: qcow2
    virtual size: 50G (53687091200 bytes)
    disk size: 3.5G
    cluster_size: 65536
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    [root@kvm008.bj.mcw.com img]#


    使用新的磁盘创建虚拟机,可以看到,原本的数据mcw.txt还在
    [root@kvm008.bj.mcw.com ares]# virsh define mcwlink1-new.xml
    Domain mcwlink1-new defined from mcwlink1-new.xml

    [root@kvm008.bj.mcw.com ares]# virsh start mcwlink1-new
    Domain mcwlink1-new started

    [root@kvm008.bj.mcw.com ares]# virsh console mcwlink1-new
    Connected to domain mcwlink1-new
    Escape character is ^]

    CentOS Linux 7 (Core)
    Kernel 4.14.15-1.el7.elrepo.x86_64 on an x86_64

    mcwlink1 login: root
    Password:
    Last login: Fri Jun 7 02:09:14 on ttyS0
    [root@mcwlink1 ~]# cat mcw.txt
    mcwlink1
    [root@mcwlink1 ~]#
    [root@kvm008.bj.mcw.com ares]# ls
    mcwlink1-new.xml mcwlink1.xml mcwlink2.xml mcwtest.xml
    [root@kvm008.bj.mcw.com ares]# cd /data/kvm/img/
    [root@kvm008.bj.mcw.com img]# ls
    mcwlink1-new.qcow2 v009-servicetest012.qcow2 v024-infotest001.qcow2 vq22-cloudservice017.qcow2 vq39-cloudservice35.qcow2
    mcwlink1.qcow2 v010-servicetest013.qcow2 v030-c73-bitest001.qcow2 vq23-cloudservice018.qcow2 vq40-cloudservice36.qcow2
    mcwlink2.qcow2


    然后用这个镜像,上传到openstack,启动实例,不过这里需要再配置下它的IP,我是设置的自动获取,然后重启网络,就有了openstack给它分配的IP了。

     

  • 相关阅读:
    JavaScript游戏开发(3)(笔记)
    史上最全的mysql数据类型汇总(下)
    初学者入门编程最开始要学什么?
    Python——错误和异常
    The 2022 ICPC Asia Regionals Online Contest (II) G
    alsa pcm接口之阻塞和非阻塞打开和异步通知模式
    HCIA -- 动态路由协议之RIP
    P4317 花神的数论题
    解决js添加元素后onclick无效问题,解决onclick无效问题
    架构演进,阿里资深Java工程师带你手撕之架构大全(性能优化+分布式+框架+微服务)
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/18238918