Hi,

I'm working to provide a way in Nova to pass configurable boot
parameters to XenServer instances based on the os type of the image.
We (Rackspace) have been doing this in our older code base for some
time.  Linux instances are provided certain parameters and Windows
instances get others.  I'd like to get some input from people at
Citrix about which combinations of vm-params we should be using in
Nova.  The latter part of this email details the differences I've
found between Rackspace's vm-params and Nova's.

First, Nova already has code for switching based on whether a kernel
image is available, or if the guest is PV or HVM, but not yet by os
type.  In nova:nova/virt/xenapi/vm_utils.py

  if instance.kernel_id:
      rec['PV_args'] = 'root=/dev/xvda1'
      rec['PV_kernel'] = kernel
      rec['PV_ramdisk'] = ramdisk
  else:
      if pv_kernel:
          rec['PV_args'] = 'noninteractive'
          rec['PV_bootloader'] = 'pygrub'
      else:
          rec['HVM_boot_policy'] = 'BIOS order'
          rec['HVM_boot_params'] = {'order': 'dc'}
          rec['platform'] = {'acpi': 'true', 'apic': 'true',
                             'pae': 'true', 'viridian': 'true'}

All of Rackspace's images, including Linux ones, will include a kernel
inside the image.  Thus we will always fall inside the first 'else'
block in the above code.

However, based on what is already in Nova I'm not entirely sure which
combination of vm-params should be used as there are some
discrepancies.  Below are the vm-params we have been using in our
current infrastructure:

Rackspace:
  Linux:
    PV_bootloader: "pygrub"
    PV_args: "clocksource=jiffies"
    platform: {"viridian": "true", "pae": "true",
                 "apic": "true", "acpi": "true",
                 "nx" : "false", "timeoffset": "0"}
    HVM_boot_policy: ""
    HVM_boot_params: {}
    HVM_shadow_multiplier: ""

  Windows:
    PV_bootloader: ""
    PV_args: ""
    platform: {"viridian": "true", "pae": "true",
               "apic": "true", "acpi": "true",
               "nx" : "true"}
    HVM_boot_policy: "BIOS order"
    HVM_boot_params: {order: "dc"}
    HVM_shadow_multiplier: "1.000"

  Both:
    other_config: {"allowvssprovider": "false"}
    user_version: "1"

Some of these were chosen because they were used in the Linux and
Windows templates.

Below are the vm-params from Nova that are different from what we
(Rackspace) currently use:

Nova:
  Linux:
    platform: {}
    PV_args: 'noninteractive'

  Windows:
    platform: {'acpi': 'true', 'apic': 'true',
               'pae': 'true', 'viridian': 'true'}

  Both:
    other_config: {}
    user_version: '0'

Also, we supply the following vm-params to all instances when booting
but they are not currently used in Nova.

  blocked_operations: {}
  ha_always_run: true,
  ha_restart_priority: ""
  tags: []
  xenstore_data: {},


Questions for the Citrix folks:

  1) Do you see any problems with our existing vm-params? Are any
     unnecessary?
  2) Do you have any suggestions for resolving the differences found in Nova?
     (PV_args, platform, other_config, user_version)
  3) Should our five extra vm-params be added to Nova?

Thanks,

Cory

--
Cory Wright
Software Developer
cory.wri...@rackspace.com

_______________________________________________
Mailing list: https://launchpad.net/~openstack-xenapi
Post to     : openstack-xenapi@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack-xenapi
More help   : https://help.launchpad.net/ListHelp

Reply via email to