使用libvirt管理kvm(virsh篇)

一、简介

libvirtLinux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMUXenLXC等主流虚拟化方案。链接:http://libvirt.org/

virshlibvirt对应的shell命令。

二、环境介绍

OSUbuntu 12.04.1 LTS

内核:Linux 3.2.0-33-generic-pae #52-Ubuntu SMP Thu Oct 18 16:39:21 UTC 2012 i686 i686 i386 GNU/Linux

libvirt0.9.8

三、准备工作

ubuntu安装,直接apt-get install

1、安装kvm/qemu

sudo apt-get install kvm qemu

2、安装libvirt

sudo apt-get install libvirt-bin libvirt-dev

3、网桥管理工具

sudo apt-get install bridge-utils

4、统一建模语言

sudo apt-get install uml-utilities

5vnc 虚拟机查看工具

sudo apt-get install vncviewer vnc4server

四、创建镜像

在指定目录下

执行  qemu-img create -f raw template.img 3G

这样就创建了一个大小为3G的镜像(img

有人可能问镜像是什么东西。简单的说,我们在镜像上启动一个虚拟机,这个3G的镜像就相当于这个虚拟机对应的磁盘空间。

也有人执行 qemu-img create -f qcow2 template.img 3G,(备注:qcow2支持动态扩张)来获得一个动态扩张的镜像。我没有用这个,不同情景下可能这种模式更好,有兴趣的朋友自己试一下。

五、libvirt xml配置文件

libvirt(包括virsh)使用xml文件对虚拟机进行配置,其中包括虚拟机名称、分配内存、vcpu等多种信息。定义、创建虚拟机等操作都需要xml配置文件的参与,因此这里先介绍xml配置文件。我编辑了一个名为template.xmlxml文件,其中定义了一个名为demokvm 虚拟机。

 

<domain type = 'kvm'>        //虚拟机类型,kvm

  <name>demo</name>        //虚拟机名称

  <memory>1048576</memory> //分配内存,单位kb

  <vcpu>1</vcpu>           //分配vcpu,单位个数

  <os>

    <type arch = 'x86_64'machine = 'pc'>hvm</type>

    <bootdev = 'cdrom'/> //cd 启动

    <bootdev = 'hd'/>    //硬盘启动

  </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/bin/kvm</emulator>

    <disk type = 'file'device = 'disk'>  //对应的镜像,就是之前使用qemu-img命令新建的img文件,注意路径要正确

      <driver name = 'qemu'type = 'raw'/>

      <sourcefile = '/var/lib/lynn/img/template.img'/>

      <target dev = 'hda'bus = 'ide'/>

    </disk>

    <disk type = 'file'device = 'cdrom'> //可选项,iso通常是操作系统的安装光盘

      <source file = '/var/lib/lynn/img/template.iso'/>

      <target dev = 'hdb'bus = 'ide'/>

    </disk>

    <interface type = 'bridge'>           //libvirt默认虚拟机的网络配置是NAT模式,就是虚拟机与宿主机的网络拓扑是NAT形式。实际中,许多开发者更希望使用网桥模式。

      <source bridge = 'br0'/>

    </interface>

    <input type ='tablet'bus='usb'/>

    <input type = 'mouse'bus = 'ps2'/>

    <graphics type = 'vnc'port = '-1'listen = '0.0.0.0'keymap = 'en-us'/> //vnc端口系统自动配置

  </devices>

</domain>

六、查看虚拟机列表

查看本机默认(kvm)连接的虚拟机:virsh list 。出现如下列信息:

$ virsh list

Id 名称               状态

----------------------------------


$ virsh list

Id 名称               状态

----------------------------------

1 demo                 running


七、定义、启动、创建虚拟机

这里以上述template.xml配置文件为例

1、定义虚拟机

virsh define template.xml

备注:此时虚拟机只被定义了,并没有真正启动。因此此时执行virsh list没有任何虚拟机信息

$ virsh list

Id 名称               状态

----------------------------------

2、启动虚拟机

virsh start  demo

启动了由template.xml定义的、名为demo的虚拟机。此时执行virsh list出现如下信息:

$ virsh list

Id 名称               状态

----------------------------------

1 demo                 running

3、创建虚拟机

创建虚拟机的作用相当于定义虚拟机+启动虚拟机

virsh create template.xml

此时执行virsh list,结果如下:

$ virsh list

Id 名称               状态

----------------------------------

1 demo                 running

八、通过vnc查看虚拟机

前面都没有直观感受,我们可能需要进入虚拟机内部进行操作。

1、查看vnc端口

$ virsh vncdisplay demo

:0


2、通过vnc查看虚拟机内部

$ vncviewer 127.0.0.1:0

效果如下:(由于新浪博客容量有限,这里就不贴图了)

备注:这个镜像是我之前创建好的镜像,所以已经安装好了操作系统。如果你从头建了一个新的镜像,就需要在虚拟机内安装操作系统(操作就像在物理机上安装os一样)。

九、关闭、销毁、取消定义虚拟机

1、关闭虚拟机

virsh shutdown demo

虚拟机将慢慢关闭,就像平时我们关闭计算机那样。此步骤与virsh start demo对应

2、取消定义虚拟机

virsh undefine demo

libvirt取消demo的定义,系统无法在辨识demo。此步骤与virsh define template.xml对应。

2、销毁虚拟机

virsh destroy demo

libvirt直接销毁demo,取消demo的定义。此步骤之后无法在执行virsh undefine demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值