Parallels Cloud Server support in nova/libvirt driver¶
https://blueprints.launchpad.net/nova/+spec/pcs-support
This specification is intended to describe process of extending nova/libvirt driver in order to support Parallels Cloud Server [1]
Problem description¶
Parallels Cloud Server (PCS) is a virtualization solution product, which enables service providers to use container and hypervisor virtualization technology via the same management tools and API. Though PCS is supported by libvirt it is absent in OpenStack for now due to not only specific demand related to compute node deployment but also different disk image format implied by usage of Parallels disk loopback block device [2], domains configuration and supported features.
Use Cases¶
This change will allow those service providers that use PCS as their primary virtualization solution to build a cloud upon it using OpenStack. There is no impact on users who aren’t engaged with PCS.
Project Priority¶
No priority defined for this feature yet.
Proposed change¶
To make PCS be supported by OpenStack we need to modify nova/libvirt driver mostly regarding a new type of virtualization processing. The end user will be able to configure nova to use PCS by setting libvirt.virt_type option to “parallels”. Also, as a native disk format for both VMs and containers supported in PCS is ploop [2], to get best performance we will need to change glance-api configuration to support PCS ploop format. Using images of different formats will be provided by in-place convertion. As each host reports supported instances via the resource tracker and the ‘vm_mode’ property of images is used to determine what kind of virtualization to run an a particular host, a decision about it will be made on an image with particular vm_mode property (eg vm_mode=exe to run containers or vm_mode=hvm to run hypervisor based instances). So PCS hosts will support arbitrary mix of machine and container based guests. In case a cloud administrator needs a way to partition hosts into groups so that some hosts exclusively run machine virt, while other hosts exclusively run container virt, host aggregates and flavors extra specs should be used.
nova.conf extract example: [libvirt] … virt_type = parallels images_type = ploop …
glance-api.conf extract example: … disk_formats=ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso,ploop …
Here is a list of of features we plan to support:
VMs |
Containers |
|
---|---|---|
Launch |
yes |
yes |
Reboot |
yes |
yes |
Terminate |
yes |
yes |
Resize |
yes |
yes |
Rescue |
yes |
yes |
Pause |
yes |
|
Un-pause |
yes |
|
Suspend |
yes |
yes |
Resume |
yes |
yes |
Inject Networking |
yes |
yes |
Inject File |
yes |
yes |
Serial Console Output |
yes |
no |
VNC Console |
yes |
yes |
SPICE Console |
no |
no |
RDP Console |
no |
no |
Attach Volume |
yes |
|
Detach Volume |
yes |
|
Live Migration |
yes |
yes |
Snapshot |
yes |
yes |
iSCSI |
yes |
yes |
iSCSI CHAP |
yes |
yes |
Fibre Channel |
yes |
yes |
Set Admin Pass |
yes |
yes |
Get Guest Info |
yes |
yes |
Glance Integration |
yes |
yes |
Service Control |
no |
yes |
VLAN Networking |
yes |
yes |
Flat Networking |
yes |
yes |
Security Groups |
yes |
yes |
Firewall Rules |
yes |
yes |
nova diagnostics |
no |
no |
Config Drive |
yes |
yes |
Auto configure disk |
no |
yes |
Evacuate |
yes |
yes |
Volume swap |
yes |
|
Volume rate limiting |
There are no technical problems with pausing containers it’s not implemented by now.
It’s possible to attach volume to a container either as a block device or as a mount point, giving both types of access simultaneously has a security problem.
We can tune swap size in containers with vswap technology [4], not as a conventional swap disk.
We can tune IO rate only for the whole instance but not for individual volumes.
Alternatives¶
The alternate way is to implement a separate PCS nova driver like this [3], which was implemented in terms of PCS + OpenStack proof of concept.
pros: * There is no middle layer between OpenStack and PCS as pcs-nova-driver uses native PCS’s python API. * Changes in pcs-nova-driver will not affect nova/libvirt’s code.
cons: * Yet another nova driver * It is out-of-tree driver
Data model impact¶
None.
REST API impact¶
None.
Security impact¶
None.
Notifications impact¶
None.
Other end user impact¶
None.
Performance Impact¶
None.
Other deployer impact¶
Compute nodes available for “parallels” type of virtualization have to be deployed in advance. Integrating PCS hosts deployment with OpenStack is out of this spec scope.
Developer impact¶
None.
Implementation¶
Assignee(s)¶
- Primary assignee:
dguryanov
- Other contributors:
burluka mnestratov
Work Items¶
Enhance libvirt driver to support new virt_type value.
Implement all the functionality necessary to support PCS in libvirt driver
Dependencies¶
Add support of new disk image format in glance Bluesprint https://blueprints.launchpad.net/glance/+spec/pcs-support
None
Testing¶
Testing in the gate will be provided by currently being established Parallels CI testing system.
Documentation Impact¶
New type of virtualization provider should be noticed and host deployment pre-requisites such as the need to have PCS installed on compute nodes.