• [zz]kvm环境使用libvirt创建虚拟机


    使用libvirt的xml配置文件创建虚拟机

      kvm支持的镜像很多,常用的是原始镜像(*.img),还有支持动态大小扩张的qocw2格式(首选)。

    更优的选择是系统盘如C盘用img格式,数据盘用qcow2格式以减少服务器磁盘闲置空间。

    本文仅记录如何用ubuntu.iso制作系统镜像ubuntu.qcow2并创建启动虚拟机

    一、制作虚拟机镜像

    1、创建qcow2镜像,但是其实际占有磁盘大小仅为193K左右,而虚拟机内部显示磁盘大小为10G,也就是磁盘空间使用时才分配,即所谓动态扩张。

          qemu-img create -f qcow2 ubuntu.qcow2 10G     

    2、下载并复制ubuntu的iso镜像到指定目录,本文将所有镜像及配置文件放到 /home/createvm 目录下

         2.1  创建配置文件setup.xml,内容如下

    <domain type='kvm'>
        <name>test_ubuntu</name>                     //虚拟机名称
        <memory>1048576</memory>                  //最大内存
        <currentMemory>1048576</currentMemory>    //可用内存
        <vcpu>1</vcpu>                                                      //虚拟cpu个数
        <os>
          <type arch='x86_64' machine='pc'>hvm</type>
          <boot dev='cdrom'/>                                           //光盘启动
       </os>
       <features>
         <acpi/>
         <apic/>
         <pae/>
       </features>
       <clock offset='localtime'/>
       <on_poweroff>destroy</on_poweroff>
       <on_reboot>restart</on_reboot>  
       <on_crash>destroy</on_crash>
       <devices>
         <emulator>/usr/libexec/qemu-kvm</emulator>
         <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>            //此处关键,要求libvirt版本至少应该在0.9以上才能支持,libvirt版本升级http://blog.csdn.net/gg296231363/article/details/6891460
           <source file='/home/createvm/ubuntu.qcow2'/>         //目的镜像路径
           <target dev='hda' bus='ide'/>
         </disk>
         <disk type='file' device='cdrom'>
           <source file='/home/createvm/ubuntu.iso'/>              //光盘镜像路径
           <target dev='hdb' bus='ide'/>
         </disk>
        <interface type='bridge'>                                               //虚拟机网络连接方式
          <source bridge='br0'/>
          <mac address="00:16:3e:5d:aa:a8"/>    //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
        </interface>
        <input type='mouse' bus='ps2'/>
         <graphics type='vnc' port='-1' autoport='yes' listen = '0.0.0.0' keymap='en-us'/>//vnc方式登录,端口号自动分配,自动加1
       </devices>
     </domain>

        2.2 virsh define setup.xml       //创建虚拟机 查看当前系统所有的虚拟机信息:virsh list --all

        2.3 virsh start  test_ubuntu    //启动虚拟机

        2.4 virsh vncdisplay test_ubuntu   //查看虚拟机的vnc端口

        2.5 使用vnc登录虚拟机,vnc安装配置http://blog.csdn.net/gg296231363/article/details/6899655

               登录后能看到操作系统安装的初始界面,开始安装系统,安装完成即表示镜像制作完成(ubuntu.qcow2)。

    二、使用制作好的虚拟机镜像启动虚拟机

    1 创建文件start.xml,内容如下:

    <domain type='kvm'>
    <name>test_ubuntu</name>
    <memory>1048576</memory>
    <currentMemory>1048576</currentMemory>
    <vcpu>1</vcpu>
    <os>
    <type arch='x86_64' machine='pc'>hvm</type>
    <boot dev='hd'/>     //即harddisk,从磁盘启动 
    </os>
    <features>
    <acpi/>
    <apic/>
    <pae/>
    </features>
    <clock offset='localtime'/>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>restart</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/home/createvm/ubuntu.qcow2'/> //目的镜像路径
    <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='cdrom'>
    <source file='/home/createvm/ubuntu.iso'/> //光盘镜像路径
    <target dev='hdb' bus='ide'/>
    </disk>
    <interface type='bridge'>
    <source bridge='br0'/>
    <mac address="00:16:3e:5d:aa:a8"/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>

    </devices>
    </domain>

    2 同一台服务器上当然不能有两台同名的虚拟机,第一步创建的虚拟机为制作镜像使用,可以功成身退。

    virsh shutdown test_ubuntu //关闭虚拟机,如果关闭不了,可以查看http://blog.csdn.net/gg296231363/article/details/6891380

    virsh destory test_ubuntu  //强制关闭虚拟机

    virsh undefine test_ubuntu //删除虚拟机

    3 使用制作好的镜像和start.xml配置文件来创建并启动虚拟机。

    virsh define start.xml

    virsh start test_ubuntu

  • 相关阅读:
    AJAX 类似电子表格的功能实现(续采购授权系统)
    Asp.net 程序优化
    Sql server 性能优化
    LinqToSql查询
    LInqToSql 增删改
    LinqToXml(删除某节点)
    LinqTo数组和cast,typeof的用法
    ThreadPool
    C# 定时器定时更新
    linqToXml查询
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2350510.html
Copyright © 2020-2023  润新知