一、简介
libvirt是Linux上的虚拟化库,是长期稳定的C语言API,支持KVM/QEMU、Xen、LXC等主流虚拟化方案。链接:
virsh是libvirt对应的shell命令。
二、环境介绍
OS:Ubuntu
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
libvirt:0.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
5、vnc虚拟机查看工具
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.xml的xml文件,其中定义了一个名为demo的kvm虚拟机。
'kvm'> //虚拟机类型,kvm
demo
//虚拟机名称
1048576
//分配内存,单位kb
1
//分配vcpu,单位个数
'pc'>hvm
'cdrom'/> //cd 启动
//硬盘启动
'localtime'/>
destroy
restart
destroy
/usr/bin/kvm
'disk'>
//对应的镜像,就是之前使用qemu-img命令新建的img文件,注意路径要正确
'qemu'type = 'raw'/>
'/var/lib/lynn/img/template.img'/>
'hda'bus = 'ide'/>
'cdrom'> //可选项,iso通常是操作系统的安装光盘
'/var/lib/lynn/img/template.iso'/>
'hdb'bus = 'ide'/>
'bridge'> //libvirt默认虚拟机的网络配置是NAT模式,就是虚拟机与宿主机的网络拓扑是NAT形式。实际中,许多开发者更希望使用网桥模式。
= 'br0'/>
='tablet'bus='usb'/>
'ps2'/>
'-1'listen = '0.0.0.0'keymap =
'en-us'/> //vnc端口系统自动配置
六、查看虚拟机列表
查看本机默认(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。