服务器 频道

Xen的工作原理

  在安装Xen虚拟机时,需要决定选用何种块设备(block devices)。你有三种可能的选择:直接在专用分区中安装;使用磁盘镜像文件;使用dd创建磁盘镜像文件。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将概括地介绍最重要的几种选择。

  使用物理磁盘

  如果要获得最好的性能,物理磁盘设备是最好的选择。使用物理磁盘设备安装时,你可以安装到一个分区中或逻辑卷中(如果使用了逻辑卷),既可以使用EVMS也可以使用LVM。使用逻辑卷有这样几个好处:

  逻辑卷可以改变大小

  可以使用快照进行备份

  使用物理磁盘设备的最大好处是它提供的性能可能是最好的。然而,物理存储设备不便于移动。要拷贝磁盘镜像文件很容易,但要拷贝逻辑卷或物理分区就会困难得多。不过,困难得多并不表示不可能。例如,如果要将整个逻辑卷/dev/xen/vm1拷贝到一个预建的逻辑卷/dev/xen/vm1-backup中,只需使用dd if=/dev/xen/vm1 of=/dev/xen/vm1-backup即可。

  要通过虚拟机配置文件处理物理磁盘设备,需要使用如下语句:

  phy:,,[r|w]

  例如:disk=[ ’phy:/dev/system/mainserver,xvda,w’, ’phy:/dev/cdrom,xvdb,r’, ]

  使用Xen磁盘镜像文件

  在SUSE或Red Hat上安装虚拟机时,默认使用的是Xen磁盘镜像文件。该镜像文件是通过dd工具(dd utility)创建的,所以基本没有任何特殊之处。dd磁盘镜像文件与虚拟硬盘(VHD)格式的文件不一样。dd磁盘镜像文件没有相关的元数据(metadata),只有0和1。

  要创建磁盘镜像文件,你需要通过dd工具把/dev/zero设备中的0复制到你的磁盘镜像文件中。例如,如果要创建一个4GB的文件(文件名为/var/lib/xen/images/disk1),可以使用如下命令:

  dd if=/dev/zero of=/var/lib/xen/images/disk1 bs=1M count=4096

  除了使用dd工具创建空镜像文件以外,你还可以使用ISO文件替代物理光驱创建,用法和用dd一样。如果你甚至没有ISO文件,不要紧,ISO文件很好创建。如果你要创建ISO文件的cd-rom在光驱中,使用如下命令将其复制到cdrom.iso文件:

  dd if=/dev/cdrom of=/isos/cdrom.iso

  创建好一个磁盘镜像文件或ISO文件后,你需要在虚拟机配置文件中包含该磁盘镜像文件,使用文件选项:

  disk=[ ’file:/var/lib/xen/images/disk1,hda,w’, ’file:/isos/cdrom.iso,hdc,r’, ]

  其它环境的镜像文件的使用

  有时,你想从创建镜像文件开始创建一个新的虚拟机。而有些情况下,你要使用的磁盘镜像文件是来自另一种虚拟化环境,可能是VMware环境下的一个vmdk-file,也可能是Qemu环境下的一个qcow文件或者其它文件。要使用这些文件,你必须 “tap” 磁盘镜像。如下命令行是使用VMware环境下的vmdk-file的语句:

  disk=[ ’tap:vmdk:/var/lib/xen/server1.vmdk,hda,w’, ]

  Xen磁盘镜像文件是一种特殊的tap设备,它使用的是xen blktap内核模块。这个模块允许在完全虚拟化环境下作为准虚拟设备处理磁盘镜像文件。要使用这个模块,你需要有aio类型的设备。磁盘镜像文件本身可能是一个由dd命令创建的普通磁盘镜像文件。要在配置文件中使用那种设备类型,可以使用如下语句:

  disk=[ ’tap:aio:/var/lib/xen/server2.img,xvda,w’, ]

  使用tap磁盘镜像有个好处,就是可以使用任何类型的磁盘镜像。然而,它有个缺点:目前的管理工具并不支持tap设备,如virtual manager。这就意味着你不得不利用这个设备手动配置虚拟机。

  网络块设备

  最后,还有一种在虚拟机中可以使用的磁盘类型是网络磁盘类型。它既可以是一个网络块设备(network block devices),如DRBD设备,也可以是iSCSI设备。这使得在iSCSI SAN中直接处理LUN成为可能,不过要记得先在domain0中启动iSCSI启动程序。

  这个磁盘镜像类型是不可移动的,这就意味着你必须在SAN中做一些预防措施,以保护该类型的磁盘镜像文件。例如,在SAN级进行快照备份以保护这些文件。要连接一个iSCSI LUN,你需要在Xen虚拟机的配置文件中包含完整的iSCSI Qualifying Name(iqn)。例如,如果你要使用的iqn为iqn.2007-08.nl.example:xendata,则需要用如下配置行:

  disk=[ ’iscsi:2007-08.nl.example:xendata,xvda,w’, ]

  在本文中,我们了解到了处理虚拟机磁盘设备的各种不同方法。在多数情况下,即使使用了文件设备和物理设备,其它设备类型也是很有用的。尤其是tap设备类型,它能允许你处理任何类型的磁盘镜像文件。

 

0
相关文章