Learning KVM - part4 创建虚拟机VM

使用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>
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,475评论 4 372
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,744评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,101评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,732评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,141评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,049评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,188评论 2 320
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,965评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,716评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,867评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,341评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,663评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,376评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,200评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,990评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,179评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,979评论 2 279

推荐阅读更多精彩内容