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:
committed by
Taylor Jakobson
parent
eedae5b0d4
commit
cafef88dc6
177
specs/ocata/image_cache.rst
Normal file
177
specs/ocata/image_cache.rst
Normal 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
|
||||
Reference in New Issue
Block a user