[libvirt-users] ESX - How to create a new domain

Matthias Bolte matthias.bolte at googlemail.com
Sun Jul 18 22:59:28 UTC 2010


2010/7/16 George Goh <georgegoh at spodon.com>:
> Hi,
> I've been trying to figure out how to create a new domain(create a new
> virtual machine) using the ESX driver.
> The documentation at http://libvirt.org/drvesx.html says:
> To define a new domain the driver converts the domain XML into a VMware VMX
> file and uploads it to a datastore known to the ESX server. Because multiple
> datastores may be known to an ESX server the driver needs to decide to which
> datastores the VMX file should be uploaded. The driver deduces this
> information from the path of the source of the first file-based harddisk
> listed in the domain XML.
> But I can't find a way to do this in virsh. Any ideas?
> -George

You quoted a paragraph that describes what the driver does internally
while defining a new domain. This paragraph is there because the way
it works internally has implications on how you have to specify disk
devices in the domain XML. It has nothing to do with the way you
define a new domain in general.

Defining a new domain using virsh works as with any other backend
supported by libvirt.

1) Create a domain XML config file test1.xml containing this example
config (assuming the default local datastore named 'Storage1' and the
default virtual port group named 'VM Network'):

<domain type='vmware'>
  <name>test1</name>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='i686'>hvm</type>
  </os>
  <devices>
    <disk type='file' device='disk'>
      <source file='[Storage1] test1/test1.vmdk'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <source file='[Storage1] iso/Fedora-13-i686-Live.iso'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='scsi' index='0'/>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <source bridge='VM Network'/>
    </interface>
  </devices>
</domain>

2) Start virsh:

  virsh -c esx://example-esx-server.com/?no_verify=1

3) At the virsh prompt execute a define command:

  define /path/to/test1.xml

Currently this requires that you manually created the .vmdk file
'[Storage1] test1/test1.vmdk' before.

I'm currently working on the libvirt storage management for ESX. I
expect that libvirt 0.8.3 will be able to create new .vmdk files in an
ESX datastore.

Matthias




More information about the libvirt-users mailing list