• (OK) kvm虚拟机克隆—KVM本机虚拟机直接克隆—通过复制xml文件与磁盘文件复制克隆



    http://www.codesec.net/view/200831.html


    在使用ucloud云主机的时候,发现他们制作镜像只能克隆系统盘数据制作,这是为什么,为什么不能连数据盘一起克隆呢,然后就问了一下他们的技术人员,他们底层用的是kvm技术,因为kvm镜像制作会按照你主机空间大小块来克隆,意思就是说,比如我/ 分区大小为20G,数据盘/data分区大小为200G,然后你连着数据盘一起制作镜像的话,存在两个问题:

    克隆镜像使用时间较长 克隆出来的镜像大小较大,如上面所说的主机,那克隆出来的镜像大小为220G

    所以基于这种情况,ucloud的上面的云主机默认创建的主机系统磁盘大小为20G,创建镜像的时候只会克隆系统盘!所以你要做基准镜像,就需要先创建一个基准系统,安装好服务,然后做镜像,最后挂载数据盘!

    同样我们公司内网也使用了一些kvm虚拟机作为内网的测试环境和一些服务。下面简单的记录自己的笔记,总结还是看自己的笔记比较有思路,回头看思路比较清晰!

    查阅资料和书籍,


    kvm虚拟机克隆有如下两种方式:

    KVM本机虚拟机直接克隆
    通过复制xml文件与磁盘文件复制克隆 (适用于异机的静态迁移和状态保存便于以后使用)。


    下面逐一介绍:


    一、本机直接克隆


    1、查看虚拟机配置文件获取磁盘文件路径

    [root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6101_101.xml |grep 'source file'|grep img
    <source file='/data1/vmdisk/hysen_6101_101.img'/>
    [root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6101_101.xml |grep '^.*/name>$'
    <name>hysen_6101_101</name>
    [root@kvmsuzhu2 ~]#

    克隆前确认主机已经关闭:

    [root@kvmsuzhu ~]# virsh list --all
    Id 名称 状态
    ----------------------------------------------------
    3 dev_5974_74 running
    14 dev_5954_54 running
    - hysen_6101_101 关闭
    - openstack_5978_78 关闭 不关闭则克隆会报ERROR Domain with devices to clone must be paused or shutoff.

    2、开始克隆

    [root@kvmsuzhu2 ~]# virt-clone -o hysen_6101_101 -n hysen_6103_103 -f /data1/vmdisk/hysen_6103_103.img
    正在克隆 hysen_6101_101.img | 30 GB 13:55
    Clone 'hysen_6103_103' created successfully.
    克隆已经完成30G的大小!

    3、修改vnc端口号,启动主机

    [root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6103_103.xml |grep 'vnc'
    <graphics type='vnc' port='6101' autoport='no' listen='0.0.0.0'>
    [root@kvmsuzhu2 ~]# virsh edit hysen_6103_103 //这里你必须用virsh edit命令编辑配置文件,用vim编辑是不会生效的!
    编辑了域 hysen_6103_103 XML 配置。
    [root@kvmsuzhu2 ~]# cat /etc/libvirt/qemu/hysen_6103_103.xml |grep 'vnc'
    <graphics type='vnc' port='6103' autoport='no' listen='0.0.0.0'>
    [root@kvmsuzhu2 ~]# virsh start hysen_6103_103.xml
    域 hysen_6103_103 已开始
    [root@kvmsuzhu2 ~]# netstat -anltp |grep 6103
    tcp 0 0 0.0.0.0:6103 0.0.0.0:* LISTEN 13740/qemu-kvm
    [root@kvmsuzhu2 ~]#

    4、修改主机名、ip地址

    修改主机名
    [root@hysen_6101_101 ~]# vi /etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=hysen_6103_103
    GATEWAY=10.0.1.1
    [root@hysen_6101_101 ~]# hostname hysen_6103_103
    修改IP地址
    [root@hysen_6103_103 ~]# vi /etc/sysconfig/network-script/ifcfg-eth0
    # Virtio Network Device
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    HWADDR=52:54:00:ae:1d:7b
    IPADDR=10.0.1.117
    NETMASK=255.255.255.0
    重启网卡服务
    [root@hysen_6103_103 ~]# service network start
    Bringing up loopback interface: [ OK ]
    Bringing up interface eth0: [ OK ]
    [root@hysen_6103_103 ~]#

    二、通过复制xml文件与磁盘文件复制克隆


    我们这里还是拿hysen_6101_101虚拟机作为模板机器克隆。同样这种方法也需要模板机器已经关机!

    1、复制xml配置文件

    [root@kvmsuzhu2 ~]# virsh dumpxml hysen_6101_101 > /etc/libvirt/qemu/hysen_6105_105.xml
    [root@kvmsuzhu2 ~]# ls -l /etc/libvirt/qemu/hysen_6105_105.xml
    -rw-r--r-- 1 root root 2748 10月 17 17:50 /etc/libvirt/qemu/hysen_6105_105.xml
    [root@kvmsuzhu2 ~]#

    2、复制hysen_6101_101虚拟机磁盘文件

    [root@kvmsuzhu2 ~]# cp /data1/vmdisk/hysen_6101_101.img /data1/vmdisk/hysen_6105_105.img
    [root@kvmsuzhu2 ~]# ls /data1/vmdisk/hysen_6105_105.img
    /data1/vmdisk/hysen_6105_105.img
    [root@kvmsuzhu2 ~]#

    3、修改拷贝的配置文件

    修改虚拟机的名称:<name>hysen_6105_105</name> 修改uuid编号:<uuid>13178d42-1055-8b94-1411-3c2bdd0e6e7a<</uuid> 修改mac地址:<mac address='54:52:01:11:12:1f'/> 修改disk位置:<source file='/data1/vmdisk/hysen_6105_105.img'/> 修改vnc端口:<graphics type='vnc' port='6105' autoport='no' listen='0.0.0.0'> 此时还是将该配置文件注册进来,无法通过virshedit进行编辑。 [root@kvmsuzhu2 ~]# vim /etc/libvirt/qemu/hysen_6105_105.xml
    <name>hysen_6101_101</name>
    <uuid>13178d42-1055-8b94-1411-3c2bdd0e6e7a</uuid>
    <mac address='54:52:01:11:12:1f’/>
    <source file='/data/kvmdisk/cache-server.qcow2'/>
    <graphics type='vnc' port='6105' autoport='no' listen='0.0.0.0'>

    4、定义新虚拟机配置文件

    [root@kvmsuzhu2 ~]# virsh define /etc/libvirt/qemu/hysen_6105_105.xml
    定义域 hysen_6105_105(从 /etc/libvirt/qemu/hysen_6105_105.xml)
    [root@kvmsuzhu2 ~]#

    5、启动虚拟机并设置开机自启

    [root@kvmsuzhu2 ~]# virsh start hysen_6105_105
    域 hysen_6105_105 已开始
    [root@kvmsuzhu2 ~]# virsh autostart hysen_6105_105
    域 hysen_6105_105标记为自动开始
    [root@kvmsuzhu2 ~]# virsh list --all |grep hysen_6105_105
    237 hysen_6105_105 running
    [root@kvmsuzhu2 ~]#

    6、vnc连接修改主机名、ip地址

    4、修改主机名、ip地址
    修改主机名
    [root@hysen_6101_101 ~]# vi /etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=hysen_6105_105
    GATEWAY=10.0.1.1
    [root@hysen_6101_101 ~]# hostname hysen_6105_105
    修改IP地址
    [root@hysen_6105_105 ~]# vi /etc/sysconfig/network-script/ifcfg-eth0
    # Virtio Network Device
    DEVICE=eth0
    BOOTPROTO=static
    ONBOOT=yes
    HWADDR=54:52:01:11:12:1f
    IPADDR=10.0.1.118
    NETMASK=255.255.255.0
    重启网卡服务
    [root@hysen_6105_105 ~]# service network start
    重启报错:device eth0 does not seem to be present, delaying initialization
    如下操作解决:
    [root@hysen_6105_105 ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules 有说修改文件把eth0和eth1互换的也可以!
    [root@hysen_6105_105 ~]# reboot
    重启之后再次登陆重启动网卡:
    [root@hysen_6105_105 ~]# service network start
    Bringing up loopback interface: [ OK ]
    Bringing up interface eth0: [ OK ]

    两种不同的方式有各有特点,你可以针对特点选择性使用!


  • 相关阅读:
    nios sgdma(Scatter-Gather dma)示例
    关于nios 中printf 的问题
    Nios II 系统时钟timestamp的应用
    DMA在FPGA的应用之我见
    PIO Core
    VGA接口时序约束
    时序分析,重中之重,柳暗花明又一村 搞定美女了问题
    深入浅出VGA和DVI接口
    基于FPGA的VGA可移植模块终极设计
    理解FPGA中的RAM、ROM和CAM;ROM、RAM、DRAM、SRAM、FLASH
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646162.html
Copyright © 2020-2023  润新知