[libvirt] Create VMWare ESXi domain via virsh error(error: this function is not supported by the connection driver: virDomainCreateXML)

Matthias Bolte matthias.bolte at googlemail.com
Mon Dec 6 21:07:37 UTC 2010


2010/12/2 mop amg <amghostman at gmail.com>:
> Hi, Dear.
> I have two questions ask for help:
> my virt-manager and libvirt version is :
> linux-vaan:~ # rpm -q libvirt
> libvirt-0.8.5-1.2.i586
> linux-vaan:~ # uname -a
> Linux linux-vaan 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200
> i686 i386 GNU/Linux
> linux-vaan:~ # rpm -q virt-manager
> virt-manager-0.8.5-3.1.i586
> linux-vaan:~ # cat /etc/SuSE-release
> openSUSE 11.3 (i586)
> VERSION = 11.3
>
> virsh # version
> Compiled against library: libvir 0.8.5
> Using library: libvir 0.8.5
> Using API: ESX 0.8.5
> Running hypervisor: ESX 4.1.0
>
>
> question 1 :
> When I try to create a vmware esxi domain from virsh like this :
>        create --file /work/dom1.x
>  there is a  error message :
>        error: Failed to create domain from /work/dom1.xml
>        error: this function is not supported by the connection driver:
> virDomainCreateXML
> it seems dosen't support create esxi domain, but the
> http://libvirt.org/hvsupport.html show that is supported after ≥ 0.7.0

virDomainCreateXML and virDomainCreate are different.
virDomainCreateXML creates a new transient domain and starts it,
virDomainCreate starts a persistent domain that has been created using
virDomainDefineXML before.

A transient domain will automatically go away when it is stopped. A
persistent domain won't and has a persistent config stored to disk.

ESX(i) doesn't have this transient semantic for it's domains,
therefore libvirt can't support virDomainCreateXML for it.

In order to create a new ESX(i) domain you need to define it using
virDomainDefineXML. In virsh use 'define /work/dom1.x' instead of
'create --file /work/dom1.x' to create a new domain, then use 'start
dom1' to start it.

> or create via virt-install
>
>           linux-vaan:~ # virt-install
> --connect=esx://root@192.168.8.162/?no_verify=1 -n rhel5 -r 512 --vcpus=1
> --nodisks bridge=vmk0 --network bridge=vmk0 --pxe
>
>           Enter root's password for 192.168.8.162:
>
>
>
>           Starting install...
>
>           ERROR    this function is not supported by the connection driver:
> virDomainCreateXML
>
> how to  fix it ?

Unfortunately virt-install doesn't work for ESX(i) yet. One reason is
that it uses virDomainCreateXML, but there are some other things that
need to be implemented or solved before virt-install will be able to
install an ESX(i) guest.

> dom1.xml
> <domain type='vmware'>
>   <name>dom1</name>
>   <memory>524288</memory>
>   <currentMemory>524288</currentMemory>
>   <vcpu>1</vcpu>
>   <os>
>     <type arch='i686'>hvm</type>
>   </os>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>destroy</on_crash>
>   <devices>
>     <disk type='file' device='disk'>
>       <source file='[datastore1] rhel5/rhel5_2.vmdk'/>
>       <target dev='sda' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' unit='0'/>
>     </disk>
>     <controller type='scsi' index='0' model='lsilogic'/>
>     <interface type='bridge'>
>       <mac address='00:0c:29:51:f1:1c'/>
>       <source bridge='VM Network'/>
>     </interface>
>   </devices>
> </domain>

This domain config looks good and should work assuming '[datastore1]
rhel5/rhel5_2.vmdk' exists. You can use virsh vol-create to create it
if it doesn't.

> question 2:
> vol-clone failed
>
> virsh # vol-clone --pool datastore1 rhel5/rhel5.vmdk rhel5/rhel5_2.vmdk
>
> error: Failed to clone vol from rhel5/rhel5.vmdk
>
> error: this function is not supported by the connection driver:
> virStorageVolCreateXMLFrom
>

virStorageVolCreateXMLFrom wasn't implemented for ESX(i) until now :)

I just implemented it and it'll probably be part of libvirt 0.8.7.

Matthias




More information about the libvir-list mailing list