美文网首页诗翔的Linux学习之路
Learning KVM - part4 创建虚拟机VM

Learning KVM - part4 创建虚拟机VM

作者: drfung | 来源:发表于2017-06-09 22:26 被阅读193次

    使用virt-install命令来创建vm(guests)显然是一种最为直接的,“virt-install”支持交互式和非交互式两种模式。另外使用“virt-manger”图形界面创建vm也是一个不错的选择。
    下面我们通过实验来了解virt-install的使用;

    使用virt-install创建VM

    1. 使用xshell登录到KVM的宿主机并且连接会话已经配置好X11转发(参考part1);

    2. 使用下列命令创建一个vm(guests);

      # 下载一个CentOS7的iso镜像
      wget https://mirrors.aliyun.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
      # 执行命令创建kvm
      virt-install --connect qemu:///system --virt-type kvm \
      --network bridge:br0 \
      --name test --description "first vm" \
      --os-variant rhel7 \
      --ram=1024 \
      --vcpus=1 \
      --disk size=4 \
      --os-type=linux \
      --graphics vnc,password=123456 \
      --cdrom /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-1611.iso
      
    3. 如果您的回话已经配置好X11转发,将会自动弹出“virt-viewer”的界面,这时就可以在图形界面上按照传统的方式安装您的操作系统了;

      image.png
    4. 下面我我们来详细分析下virt-install命令参数;

    参数 描述
    --connect 指定连接的hosts,如果是本机该选项可以省略
    --virt-type 指定虚拟化类型,kvm or Xen
    --network 指定网络连接的网桥
    --description VM的描述备注
    os-variant OS的系统版本,指定后KVM会按照指定的系统版本对性能进行优化
    --ram 指定虚拟机的内存大小(mb)
    --vcpus 指定虚拟机cpu数量
    --disk 指定虚拟机的硬盘大小
    --os-type 指定虚拟机的系统类型
    --graphics 指定虚拟机的图形显示
    --cdrom 设定系统的引导镜像
    1. 当系统安装完成之后,我们可以使用virsh list命令来列出活动的虚拟机;

      [root@kvm-node1 images]# virsh list
       Id    Name                           State
      ----------------------------------------------------
       13    generic                        running
       14    cirros                         running
       16    test                           runnin
      
    2. 使用命令`virt-top来监控虚拟机的性能状态;


      image.png
    1. 使用virsh destroy命令来终止VM虚拟机,这时可以通过命令virsh list --all来列
      出已经关闭的VM;

      [root@kvm-node1 /]# virsh list
       Id    Name                           State
      ----------------------------------------------------
       13    generic                        running
       14    cirros                         running
       16    test                           running
      
      [root@kvm-node1 /]# virsh destroy test
      Domain test destroyed
      
      [root@kvm-node1 /]# virsh list
       Id    Name                           State
      ----------------------------------------------------
       13    generic                        running
       14    cirros                         running
      
      [root@kvm-node1 /]# virsh list --all
       Id    Name                           State
      ----------------------------------------------------
       13    generic                        running
       14    cirros                         running
       -     test                           shut off
      
    2. 使用virsh start命令来启动终止的VM;

      [root@kvm-node1 /]# virsh start test
      Domain test started
      
      [root@kvm-node1 /]# virsh list
       Id    Name                           State
      ----------------------------------------------------
       13    generic                        running
       14    cirros                         running
       17    test                           running
      

    深入探讨VM配置文件

    1. 首先我们来了解一下KVM的VM(guests)的配置文件保存来自哪里;

      [root@kvm-node1 /]# ls /etc/libvirt/qemu/
      cirros.xml  generic.xml  networks  test.xml
      
    2. KVM的xml配置文件分为几个重要的部分,我们来看整体结构;

      <domain type='kvm'>
      虚拟机整体信息
      系统信息
      硬件资源特性
      突发事件处理
      虚拟磁盘(单个或者多个)
      虚拟光驱(可选)
      虚拟网络(单个或者多个)
      vnc/spice 配置
      </domain>
      
      1. 虚拟机整体信息:
        从整体上描述虚拟机所需资源

        <name>test</name>
        <uuid>d4f875b0-7706-4047-87cb-3b58324bf323</uuid>
        <description>first vm</description>
        <memory unit='KiB'>1048576</memory>
        <currentMemory unit='KiB'>1048576</currentMemory>
        <vcpu placement='static'>1</vcpu>
        
        • uuid是虚拟机的唯一标示,用户可以自行定义,也可以使用命令uuidgen自动生成
        • 内存配置一般以KB为单位
        • cpu数量支持超配,即允许虚拟机的cpu数量总和大于宿主机的cpu总数
      2. 系统信息
        接下来是对OS的描述,主要是定义类型和启动信息

        <os>
        <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
        <boot dev='hd'/>
        </os>
        
      3. 硬件资源特性
        主要包括两个方面:电源管理及内存扩展

         <features>
         <acpi/>
         <apic/>
         </features>
         <cpu mode='custom' match='exact'>
           <model fallback='allow'>Broadwell-noTSX</model>
         </cpu>
         <clock offset='utc'>
           <timer name='rtc' tickpolicy='catchup'/>
           <timer name='pit' tickpolicy='delay'/>
           <timer name='hpet' present='no'/>
         </clock>
        
      4. 突发事件处理
        针对三种突发事件定义了不同的处理方式,用户也可以根据自己需要定制操作

        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>restart</on_crash>
        <pm>
            <suspend-to-mem enabled='no'/>
            <suspend-to-disk enabled='no'/>
        </pm>
        
      5. 虚拟磁盘
        所有的虚拟外设都保存在<device></device>中的<disk></disk>

        <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source file='/var/lib/libvirt/images/test.qcow2'/>
        <target dev='vda' bus='virtio'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
        </disk>
        
        • 第2行指定了驱动为qume,image格式为qcow2
        • 第3行指定了image的存放位置
        • 第4行指定了image做为vm的第几块磁盘,bus代表了所使用的的驱动类型,这里使用
          了virtio。这是一种高效的image数据传输方式
        • 第5行指定了image所使用的PCI地址,该行可以省略。如果要添加的话注意slot的编
          号不要与其他设备相同
      6. 虚拟网络
        虚拟网路有很多种,不同的Hypervisor提供了不同的虚拟网络类型,我们这里采用的是
        静态网桥的方式。

        <interface type='bridge'>
        <mac address='52:54:00:61:21:c8'/>
        <source bridge='br0'/>
        <model type='virtio'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
        
      7. vnc配置
        一般生成的vnc配置都会导致外部无法访问,因为没有配置监听地址,我们可以按照如下
        配置;

        <graphics type='vnc' port='-1' autoport='yes' passwd='123456' listen='0.0.0.0'>
            <listen type='address' address='0.0.0.0'/>
        </graphics>
        

    相关文章

      网友评论

        本文标题:Learning KVM - part4 创建虚拟机VM

        本文链接:https://www.haomeiwen.com/subject/ygjfqxtx.html