Add image cache to nova-powervm

This is a blue print add for the Ocata release.  It outlines the
inclusion of the image cache to the PowerVM nova driver.

blueprint: image-cache-powervm
Change-Id: Icb2786bb54280f6a864adaf9e8e2071f2f61c0c6
This commit is contained in:
Drew Thorstensen
2016-09-17 12:02:41 -04:00
committed by Taylor Jakobson
parent eedae5b0d4
commit cafef88dc6

177
specs/ocata/image_cache.rst Normal file
View File

@@ -0,0 +1,177 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
========================================
Image Cache Support for localdisk driver
========================================
https://blueprints.launchpad.net/nova-powervm/+spec/image-cache-powervm
The image cache allows for a nova driver to pull an image from glance once,
then use a local copy of that image for future VM creation. This saves
bandwidth between the compute host and glance. It also improves VM
deployment speed and reduces the stress on the overall infrastructure.
Problem description
===================
Deploy times on PowerVM can be high when using the localdisk driver. This is
partially due to not having linked clones. The image cache offers a way to
reduce those deploy times by transferring the image to the host once, and then
subsequent deploys will reuse that image rather than streaming from glance.
There are complexities with this of course. The cached images take up disk space,
but the overall image cache from core Nova takes that into account. The value
of using the nova image cache design is that it has hooks in the code to help solve
these problems.
Use Cases
---------
- As an end user, subsequent deploys of the same image should go faster
Proposed change
===============
Create a subclass of nova.virt.imagecache.ImageManager in the nova-powervm
project. It should implement the necessary methods of the cache:
- _scan_base_images
- _age_and_verify_cached_images
- _get_base
- update
The nova-powervm driver will need to be updated to utilize the cache. This
includes:
- Implementing the manage_image_cache method
- Adding the has_imagecache capability
The localdisk driver within nova-powervm will be updated to have the
following logic. It will check the volume group backing the instance. If the
volume group has a disk with the name 'i_<partial uuid of image>', it will
simply copy that disk into a new disk named after the UUID of the instance.
Otherwise, it will create a disk with the name 'i_<partial uuid of image>'
that contains the image.
The image cache manager's purpose is simply to clean out old images that are
not needed by any instances anymore.
Further extension, not part of this blueprint, can be done to manage overall
disk space in the volume group to make sure that the image cache is not
overwhelming the backing disks.
Alternatives
------------
- Leave as is, all deploys potentially slow
- Implement support for linked clones. This is an eventual goal, but
the image cache is still needed in this case as it will also manage the
root disk image.
Security impact
---------------
None
End user impact
---------------
None
Performance Impact
------------------
Performance of subsequent deploys of the same image should be faster.
The deploys will have improved image copy times and reduced network
bandwith requirements.
Performance of single deploys using different images will be slower.
Deployer impact
---------------
This change will take effect without any deployer impact immediately after
merging. The deployer will not need to take any specific upgrade actions to
make use of it; however the deployer may need to tune the image cache to make
sure it is not using too much disk space.
A conf option may be added to force the image cache off if deemed necessary.
This will be based off of operator feedback in the event that we need a way
to reduce disk usage.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
tjakobs
Other contributors:
None
Work Items
----------
* Implement the image cache code for the PowerVM driver
* Include support for the image cache in the PowerVM driver. Tolerate it
for other disk drivers, such as SSP.
Dependencies
============
None
Testing
=======
* Unit tests for all code
* Deployment tests in local environments to verify speed increases
Documentation Impact
====================
The deployer docs will be updated to reflect this.
References
==========
None
History
=======
Optional section intended to be used each time the spec is updated to describe
new design.
.. list-table:: Revisions
:header-rows: 1
* - Release Name
- Description
* - Newton
- Introduced