[Spec] NFS related improvement for filesystem driver

Change-Id: Ic9b316a284641f4c5f33fe4238e08cf1d0faf2a1
This commit is contained in:
Abhishek Kekane 2024-04-29 06:39:47 +00:00
parent 3bdda0e98f
commit 158ac62736
2 changed files with 153 additions and 1 deletions

View File

@ -0,0 +1,146 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===========================================================
Improve filesystem store driver to utilize NFS capabilities
===========================================================
https://blueprints.launchpad.net/glance/+spec/improve-filesystem-driver
Problem description
===================
The filesystem backend of glance can be used to mount NFS share as local
filesystem, so it does not required to store any special configs at
glance side. Glance does not care about NFS server address or NFS share
path at all, it just assumes that each image is stored in the local
filesystem. The downside of this assumption is that glance does not
aware whether NFS server is connected/available or not, NFS share
is mounted or not and just keeps performing add/delete operations
on local filesystem directory which later might causes problem
in synchronization when NFS is back online.
Proposed change
===============
Introduce few configuration options for filesystem driver which will help to
detect if the NFS share is unmounted from underneath the Glance service. We
proposed to introduce below new configuration options for the same:
* 'filesystem_is_nfs_configured' - boolean, verify if NFS is configured or not
* 'filesystem_nfs_host' - IP address of NFS server
* 'filesystem_nfs_share_path' - Mount path of NFS mapped with local filesystem
* 'filesystem_nfs_mount_options' - Mount options to be passed to NFS client
* 'rootwrap_config' - To run commands as root user
If 'filesystem_is_nfs_configured' is set, i.e. if NFS is configured then
deployer must specify 'filesystem_nfs_host' and 'filesystem_nfs_share_path'
config options in glance-api.conf otherwise the respective glance store will
be disabled and will not be used for any operation.
We are planning to use existing os-brick library (already used by cinder driver
of glance_store) to create the NFS client with the help of above configuration
options and check if NFS share is available or not during service
initialization as well as before each image upload/import/delete operation. If
NFS share is not available during service initialization then add and delete
operations will be disabled but if NFS goes down afterwards we will raise
HTTP 410 (HTTP GONE) response to the user.
Glance still doesn't have capability to check whether particular NFS store has
storage capability to store any particular image beforehand. Also it does not
have capability to verify if network failure occurs during upload/import
operation.
Alternatives
------------
None
Data model impact
-----------------
None
REST API impact
---------------
We need to include these new configuration options in /v2/info/stores response.
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
Performance will have little impact since each add/delete operation now query
NFS server to check whether it is reachable or not.
Other deployer impact
---------------------
Deployer need to ensure that newly introduced configuration options are set
in glance-api.conf file for filesystem store driver if NFS is used.
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
abhishekk
Other contributors:
None
Work Items
----------
* Introduce new configuration options
* Use os-brick library to detect if the NFS share is available
* Unit/Functional tests for coverage
Dependencies
============
None
Testing
=======
* Unit Tests
* Functional Tests
* Tempest Tests
Documentation Impact
====================
Need to document new behavior of filesystem driver if NFS is configured
References
==========
* PoC - https://review.opendev.org/c/openstack/glance_store/+/917283

View File

@ -6,7 +6,13 @@
:glob:
:maxdepth: 1
TODO: fill this in once a new approved spec is added.
2024.2 approved specs for glance:
.. toctree::
:glob:
:maxdepth: 1
glance_store/*