OpenNebula可以管理众多虚拟资源,包括镜像库(datastore)、镜像(image)、虚拟网(vnet)、主机(host)、虚拟机(vm)。
我们先对各虚拟资源进行简单介绍。
镜像库:镜像库是用来存放镜像的一个文件夹,我们会把这个文件夹注册到OpenNebula中,以作后用。
镜像:一个文件,类似于压缩包一样的容器。镜像中可能是一个操作系统,也可能是一些数据。
虚拟网:为虚拟机准备的网络资源池,用于分配虚拟机网络资源。
主机:云中的物理主机,上面运行着虚拟化软件,用来部署虚拟机。
虚拟机:就是虚拟机了,没啥好说的。
现在,我们先确立一个目标,那就是在host上运行起一个虚拟机。要达到这个目标,我们需要做下面几步。
2.1 OpenNebula基本配置
为了让OpenNebula管理和利用这些虚拟资源,我们需要对OpenNebula进行一些配置。
OpenNebula的配置文件位于/srv/cloud/one/etc/oned.conf中。
下面,我们就该文件中几个关键配置说明一下。
(1)DATASTORE_LOCATION
DATASTORE_LOCATION = /srv/cloud/one/var/datastores
该选项配置了镜像库的基础路径。
(2)IM_MAD
IM_MAD = [
name = "im_kvm",
executable = "one_im_ssh",
arguments = "-r 0 -t 15 kvm" ]
IM_MAD = [
name = "im_xen",
executable = "one_im_ssh",
arguments = "xen" ]
IM_MAD配置了OpenNebula的Information Driver,Information Driver是用来对物理主机上的虚拟化进行监控的一些驱动(其实是一些脚本)。IM_MAD中有以下几个了选项:name表示了驱动的名字,executable指定了驱动对应的脚本文件的位置,而arguments则是脚本文件所需要的参数。
oned.conf中预定义了很多IM_MAD,分别对应了不同的监控方式:kvm,xen,vmware,ec2,ganglia等等。因为我们的物理主机上运行的是xen虚拟化,我们就直接用xen的监控方式。oned.conf中默认开户的是KVM的IM_MAD,xen的IM_MAD是被注释掉的。开启xen的IM_MAD的方法,就是把前面的注释去掉。
(3)VM_MAD
VM_MAD = [
name = "vmm_kvm",
executable = "one_vmm_exec",
arguments = "-t 15 -r 0 kvm",
default = "vmm_exec/vmm_exec_kvm.conf",
type = "kvm" ]
VM_MAD = [
name = "vmm_xen",
executable = "one_vmm_exec",
arguments = "-t 15 -r 0 xen",
default = "vmm_exec/vmm_exec_xen.conf",
type = "xen" ]
VM_MAD定义了OpenNebula的Virtualization Driver,Virtualization Driver是对物理机上的虚拟机进行管理(创建、删除、迁移等等)的驱动(其实就是些脚本)。VM_MAD中有以下几个了选项:name表示了驱动的名字,executable指定了驱动对应的脚本文件的位置,而arguments则是脚本文件所需要的参数。
针对不同的虚拟化环境,OpenNebula同样定义了多种VM_MAD:kvm,xen,vmware,ec2。我们要用到xen对应的VM_MAD,开启的方式就是把注释去掉。
(4)TM_MAD
TM_MAD = [
executable = "one_tm",
arguments = "-t 15 -d dummy,lvm,shared,qcow2,ssh,vmfs,iscsi" ]
TM_MAD定义了Transfer Manager,即OpenNebula与物理主机之间传输镜像的方式,有lvm,shared,qcow2,ssh,vmfs,iscsi等等。这里我们不用改。
(5)DATASTORE_MAD
DATASTORE_MAD = [
executable = "one_datastore",
arguments = "-t 15 -d fs,vmware,vmfs,iscsi,lvm"
]
DATASTORE_MAD定义了管理datastore的方式。这里同样不用改。
根据以上的配置说明,修改完oned.conf后,使用以下命令重启一下opennebula,使配置生效。
$ one stop
$ one start
2.2 管理镜像库(datastore)
Datastore是用来存放镜像的一个存储仓库,它有以下几种类型,参考2.1(5)。
System:比较特殊的一种类型,只用来存放正在运行的虚拟机(running vm)的镜像。
File-system:以普通文件的方式存放镜像。
iSCSI/LVM:以块设备的方式存放镜像。
VMware:以vmdk的格式存放镜像,对为了支持VMware。
vmfs:以VMFS的格式存放镜像,也是为了支持VMware。
简单起见,我们就使用File-system的方式。
因为host只有获取了镜像才能部署虚拟机,所以,我们要用一定的机制将镜像传送到Host。这个机制就是datastore的另一个属性,即Transfer Manager,它定义了OpenNebula与物理主机之间传输镜像的方式,参考2.2(5),即:
shared:将datastore里的镜像以文件共享的方式挂载到host上,这样host就可以像访问本地文件一样访问datastore里的镜像。常见的文件共享方式有NFS。
ssh:这个方法比较笨重,就是将镜像通过scp传送到host上。
iscsi:通过iSCSI的方式分享镜像,与shared方式有点像。
vmfs:通过VMware的工具vmkfstools去传输镜像(具体不详)。
qcow:通过qemu-qcow的形式传输