Add support for Cinder File IO

This blue print outlines the work to add support for File I/O based
cinder drivers to the PowerVM driver.  A File I/O based cinder driver is
one that presents a file to the hypervisor via some mounted file system.

blueprint file-io-cinder-connector

Change-Id: I4b6f258726de8ed095f284386308134200ffbf2a
This commit is contained in:
Drew Thorstensen 2017-01-18 08:38:44 -05:00
parent eedae5b0d4
commit 2d00bc80ac
1 changed files with 142 additions and 0 deletions

View File

@ -0,0 +1,142 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=========================
File I/O Cinder Connector
=========================
https://blueprints.launchpad.net/nova-powervm/+spec/file-io-cinder-connector
There are several Cinder drivers that support having the file system mounted
locally and then connecting in to the VM as a volume (ex. GPFS, NFS, etc...).
There is the ability to support this type of volume in PowerVM, if the user
has mounted the file system to the NovaLink. This blueprint adds support to
the PowerVM driver to support such Cinder volumes.
Problem description
===================
The PowerVM driver supports Fibre Channel and iSCSI based volumes. It does not
currently support volumes that are presented on a file system as files.
The recent release of PowerVM NovaLink has added support for this in the REST
API. This blueprint looks to take advantage of that support.
Use Cases
---------
* As a user, I want to attach a volume that is backed by a file based Cinder
volume (ex. NFS or GPFS).
* As a user, I want to detach a volume that is backed by a file based Cinder
volume (ex. NFS or GPFS).
Proposed change
===============
Add nova_powervm/virt/powervm/volume/fileio.py. This would extend the existing
volume drivers. It would store the LUN ID on the scsi bus.
This does not support traditional VIOS. Like the iSCSI change, it would
require running through the NovaLink partition.
Alternatives
------------
None
Security impact
---------------
None.
One may consider the permission of the file presented by Cinder. The Cinder
driver's BDM will provide a path to a file. The hypervisor will map that file
as the root user. So file permissions of the volume should not be a concern.
This seems consistent with the other hypervisors utilizing these types of
Cinder drivers.
End user impact
---------------
None
Performance Impact
------------------
None
Deployer impact
---------------
Deployer must set up the backing Cinder driver and connect the file systems to
the NovaLink partition in their environment.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
thorst
Other contributors:
shyama
Work Items
----------
* Create a nova-powervm fileio cinder volume connector. Create associated UT.
* Validate with the GPFS cinder backend.
Dependencies
============
* pypowervm 1.0.0.4 or higher
Testing
=======
Unit Testing is obvious.
Manual testing will be driven via connecting to a GPFS back-end.
CI environments will be evaluated to determine if there is a way to add this
to the current CI infrastructure.
Documentation Impact
====================
None. Will update the nova-powervm dev-ref to reflect that 'file I/O drivers'
are supported, but the support matrix doesn't go into the detail of what cinder
drivers work with nova drivers.
References
==========
* pypowervm add storage element to scsi mapping: https://github.com/powervm/pypowervm/blob/release/1.0.0.4/pypowervm/tasks/scsi_mapper.py#L49
* pypowervm file storage element: https://github.com/powervm/pypowervm/blob/release/1.0.0.4/pypowervm/wrappers/storage.py#L689