您所在的位置:虚拟化频道 > 服务器虚拟化 > 在Ubuntu 12.04 LTS服务器上借助KVM实现虚拟化(4)

在Ubuntu 12.04 LTS服务器上借助KVM实现虚拟化(4)

2012-06-12 10:56 布加迪编译 51CTO.com 字号:T | T
一键收藏,随时查看,分享好友!

本文解释了如何安装和使用KVM,以便在Ubuntu 12.04 LTS服务器上创建和运行虚拟机。我会介绍如何创建基于镜像的虚拟机,还会介绍如何创建使用逻辑卷(LVM)的虚拟机。KVM的全称是基于内核的虚拟机,它充分利用了硬件虚拟化技术,也就是说你需要支持硬件虚拟化的处理器,比如英特尔VT或AMD-V。

AD:

 

6. 创建基于LVM的虚拟机

 

基于LVM的虚拟机与基于镜像的虚拟机相比有一些优点。它们的硬盘输入/输出不大频繁,而且更容易备份(使用LVM快照)。

想使用基于LVM的虚拟机,你就需要一个卷组,它要有未分配给任何逻辑卷的一些闲置空间。在本例中,我使用了大小约为465GB的卷组/dev/vg0……

vgdisplay

root@server1:~# vgdisplay

  --- Volume group ---

  VG Name               vg0

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  3

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                2

  Open LV               2

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               465.29 GiB

  PE Size               4.00 MiB

  Total PE              119115

  Alloc PE / Size       24079 / 94.06 GiB

  Free  PE / Size       95036 / 371.23 GiB

  VG UUID               PRenhH-0MvN-wXCL-nl4i-IfsQ-J6fc-2raYLD

root@server1:~#

该卷组包含大小约为100GB的逻辑卷/dev/vg0/root和大小约为1GB的逻辑卷/dev/vg0/swap_1,其余空间未分配,可供虚拟机使用:

lvdisplay

root@server1:~# lvdisplay

  --- Logical volume ---

  LV Name                /dev/vg0/root

  VG Name                vg0

  LV UUID                dwnORf-yG3U-x1ZC-Bet1-TOoc-q1Dd-KZnbtw

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                93.13 GiB

  Current LE             23841

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           252:0

  --- Logical volume ---

  LV Name                /dev/vg0/swap_1

  VG Name                vg0

  LV UUID                ZdPKO6-sZrr-tIRb-PPcl-aWBj-QAUU-fnYUuP

  LV Write Access        read/write

  LV Status              available

  # open                 2

  LV Size                952.00 MiB

  Current LE             238

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           252:1

root@server1:~#

现在我将创建虚拟机vm5,作为基于LVM的虚拟机。我们可以再度使用vmbuilder命令。vmbuilder知道--raw选项,该选项允许将虚拟机写入到块设备(如/dev/vg0/vm5)——我试用了该选项;不过它没有返回错误,我也启动不了虚拟机(start vm5也没有显示任何错误,但是我根本无法访问该虚拟机。)因此,我将先创建vm5,作为基于镜像的虚拟机,然后转换成基于LVM的虚拟机。

mkdir -p /var/lib/libvirt/images/vm5/mytemplates/libvirt

cp /etc/vmbuilder/libvirt/* /var/lib/libvirt/images/vm5/mytemplates/libvirt/

确保你在仅仅一个镜像文件中创建所有分区,所以在vmbuilder.partition文件中不要使用---

vi /var/lib/libvirt/images/vm5/vmbuilder.partition

root 8000

swap 2000

/var 10000

vi /var/lib/libvirt/images/vm5/boot.sh

# 虚拟机第一次启动时,该脚本将运行。

# 它以根用户来运行。

# 到期终止用户帐户

passwd -e administrator

# 安装openssh-server

apt-get update

apt-get install -qqy --force-yes openssh-server

cd /var/lib/libvirt/images/vm5/

vmbuilder kvm ubuntu --suite=precise --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --

libvirt=qemu:///system --ip=192.168.0.105 --gw=192.168.0.1 --part=vmbuilder.partition --templates=mytemplates --user=administrator --

name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --

firstboot=/var/lib/libvirt/images/vm5/boot.sh --mem=256 --hostname=vm5 --bridge=br0

你可以从vmbuilder.partition文件看到,虚拟机将使用最多20GB的空间,于是我们现在创建一个大小为20GB的逻辑卷,名为/dev/vg0/vm5

lvcreate -L20G -n vm5 vg0

别在新的逻辑卷中创建文件系统!

我们将使用qemu-img命令,把镜像转换成基于LVM的虚拟机。

现在我们进入到虚拟机的ubuntu-kvm/目录……

cd /var/lib/libvirt/images/vm5/ubuntu-kvm/

即可发现我们的镜像是如何命名的:

ls -l

root@server1:/var/lib/libvirt/images/vm5/ubuntu-kvm# ls -l

total 592140

-rw-r--r-- 1 root root 606470144 May 21 14:06 tmpesHsUI.qcow2

root@server1:/var/lib/libvirt/images/vm5/ubuntu-kvm#

由于我们已知道了镜像的名称(tmpN27tbO.qcow2),可按如下方式来转换它:

qemu-img convert tmpesHsUI.qcow2 -O raw /dev/vg0/vm5

之后,你可以删除磁盘镜像:

rm -f tmpesHsUI.qcow2

 

现在,我们必须改动虚拟机的配置……

virsh edit vm5

并改变下列部分……

[...]

   

     

     

     

     

   

[...]

以便看起来像下面这样:

[...]

   

     

     

     

     

   

[...]

现在,你可以使用virsh来管理虚拟机:

virsh --connect qemu:///system

由于我们已改动了虚拟机的XML文件,必须先运行define命令……

define /etc/libvirt/qemu/vm5.xml

然后启动虚拟机:

start vm5

 

7. 相关链接

KVMUbuntu社区说明文档):https://help.ubuntu.com/community/KVM

vmbuilderhttps://help.ubuntu.com/community/JeOSVMBuilder

JeOSvmbuilderhttp://doc.ubuntu.com/ubuntu/serverguide/C/jeos-and-vmbuilder.html

Ubuntuhttp://www.ubuntu.com/ 

 

来源:http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-12.04-lts

【责任编辑:小明 TEL:(010)68476606】

 

 

内容导航



分享到:

  1. Linux 系统虚拟化模型及障碍
  2. 偷天换日,用JavaAgent欺骗你的JVM

热点职位

更多>>

热点专题

更多>>

读书

Fedora Core 5 Linux系统安装与管理
以Linux为代表的自由软件及其稳定性,逐渐在全世界崭露头角且备受重视。由于可以支持多种网络环境,因此在采用Linux系统之前,必

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学堂