From 562b8e225064c9332612f09d11cbaacc5154c249 Mon Sep 17 00:00:00 2001 From: digvijay2016 Date: Wed, 31 May 2017 17:49:28 +0530 Subject: [PATCH] Update Spectrum Scale (GPFS) share driver doc This patch updates the Spectrum Scale (GPFS) share driver documentation with all the deployment modes and share creation options. Change-Id: I0b83ea9e508d6c660914bd2fefebe6a21046f910 --- .../figures/openstack-spectrumscale-setup.JPG | Bin 0 -> 77400 bytes .../source/shared-file-systems/drivers.rst | 2 +- .../drivers/ibm-gpfs-driver.rst | 108 ----------- .../drivers/ibm-spectrumscale-driver.rst | 177 ++++++++++++++++++ .../tables/manila-spectrumscale_ces.rst | 57 ++++++ ...gpfs.rst => manila-spectrumscale_knfs.rst} | 33 +++- .../manila.flagmappings | 21 +-- .../manila.headers | 3 +- 8 files changed, 273 insertions(+), 128 deletions(-) create mode 100644 doc/config-reference/source/figures/openstack-spectrumscale-setup.JPG delete mode 100644 doc/config-reference/source/shared-file-systems/drivers/ibm-gpfs-driver.rst create mode 100644 doc/config-reference/source/shared-file-systems/drivers/ibm-spectrumscale-driver.rst create mode 100644 doc/config-reference/source/tables/manila-spectrumscale_ces.rst rename doc/config-reference/source/tables/{manila-gpfs.rst => manila-spectrumscale_knfs.rst} (71%) diff --git a/doc/config-reference/source/figures/openstack-spectrumscale-setup.JPG b/doc/config-reference/source/figures/openstack-spectrumscale-setup.JPG new file mode 100644 index 0000000000000000000000000000000000000000..500b38c0fa5de891827abf6987eebddb70593a3a GIT binary patch literal 77400 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
<~XOXC&q|_>l$+^ot*gg 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 literal 0 HcmV?d00001 diff --git a/doc/config-reference/source/shared-file-systems/drivers.rst b/doc/config-reference/source/shared-file-systems/drivers.rst index 7b049280b1..f4c29fd93a 100644 --- a/doc/config-reference/source/shared-file-systems/drivers.rst +++ b/doc/config-reference/source/shared-file-systems/drivers.rst @@ -24,7 +24,7 @@ Share drivers drivers/hitachi-hsp-driver.rst drivers/hpe-3par-share-driver.rst drivers/huawei-nas-driver.rst - drivers/ibm-gpfs-driver.rst + drivers/ibm-spectrumscale-driver.rst drivers/maprfs-native-driver.rst drivers/netapp-cluster-mode-driver.rst drivers/quobyte-driver.rst diff --git a/doc/config-reference/source/shared-file-systems/drivers/ibm-gpfs-driver.rst b/doc/config-reference/source/shared-file-systems/drivers/ibm-gpfs-driver.rst deleted file mode 100644 index 4d905f29b7..0000000000 --- a/doc/config-reference/source/shared-file-systems/drivers/ibm-gpfs-driver.rst +++ /dev/null @@ -1,108 +0,0 @@ -=============== -IBM GPFS driver -=============== - -The GPFS driver uses IBM General Parallel File System (GPFS), a -high-performance, clustered file system, developed by IBM, as the -storage back end for serving file shares to the Shared File Systems -service clients. - -Supported shared filesystems and operations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The driver supports NFS shares. - -The following operations are supported: - -- Create a share. - -- Delete a share. - -- Allow share access. - - Note the following limitations: - - - Only IP access type is supported. - - - Only read-write access level is supported. - -- Deny share access. - -- Create a snapshot. - -- Delete a snapshot. - -- Create a share from a snapshot. - -Requirements -~~~~~~~~~~~~ - -- Install GPFS with server license, version >= 2.0, on the storage back - end. - -- Install Kernel NFS or Ganesha NFS server on the storage back-end - servers. - -- If using Ganesha NFS, currently NFS Ganesha v1.5 and v2.0 are - supported. - -- Create a GPFS cluster and create a filesystem on the cluster, that - will be used to create the Shared File Systems service shares. - -- Enable quotas for the GPFS file system, use :command:`mmchfs -Q yes`. - -- Establish network connection between the Shared File Systems service - host and the storage back end. - -Shared File Systems service driver configuration setting -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The following parameters in the Shared File Systems service -configuration file need to be set: - -.. code-block:: ini - - share_driver = manila.share.drivers.ibm.gpfs.GPFSShareDriver - gpfs_share_export_ip = - -If the back-end GPFS server is not running on the Shared File Systems -service host machine, the following options are required to SSH to -the remote GPFS back-end server: - -.. code-block:: ini - - gpfs_ssh_login = - -Also one of the following settings is required to execute commands -over SSH: - -.. code-block:: ini - - gpfs_ssh_private_key = - -or: - -.. code-block:: ini - - gpfs_ssh_password = - - -Known restrictions -~~~~~~~~~~~~~~~~~~ - -- The driver does not support a segmented-network multi-tenancy model - but instead works over a flat network where the tenants share a - network. - -- While using remote GPFS node, with Ganesha NFS, - ``gpfs_ssh_private_key`` for remote login to the GPFS node must be - specified and there must be a passwordless authentication already - setup between the ``manila-share`` service and the remote GPFS node. - -Driver options -~~~~~~~~~~~~~~ - -The following table contains the configuration options specific to the -share driver. - -.. include:: ../../tables/manila-gpfs.rst diff --git a/doc/config-reference/source/shared-file-systems/drivers/ibm-spectrumscale-driver.rst b/doc/config-reference/source/shared-file-systems/drivers/ibm-spectrumscale-driver.rst new file mode 100644 index 0000000000..14d55fbad3 --- /dev/null +++ b/doc/config-reference/source/shared-file-systems/drivers/ibm-spectrumscale-driver.rst @@ -0,0 +1,177 @@ +=============================== +IBM Spectrum Scale share driver +=============================== + +IBM Spectrum Scale is a flexible software-defined storage product that can be +deployed as high-performance file storage or a cost optimized +large-scale content repository. IBM Spectrum Scale, previously known as +IBM General Parallel File System (GPFS), is designed to scale performance +and capacity with no bottlenecks. IBM Spectrum Scale is a cluster file system +that provides concurrent access to file systems from multiple nodes. The +storage provided by these nodes can be direct attached, network attached, SAN +attached, or a combination of these methods. Spectrum Scale provides many +features beyond common data access, including data replication, policy based +storage management, and space efficient file snapshot and clone operations. + +Supported shared filesystems and operations (NFS shares only) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Spectrum Scale share driver supports NFS shares. + +The following operations are supported: + +- Create a share. + +- Delete a share. + +- Allow share access. + + - Only IP access type is supported. + + - Both RW & RO access level is supported. + +- Deny share access. + +- Create a share snapshot. + +- Delete a share snapshot. + +- Create a share from a snapshot. + +- Extend a share. + +- Manage a share. + +- Unmanage a share. + +Requirements +~~~~~~~~~~~~ + +Spectrum Scale must be installed and a cluster must be created that includes +one or more storage nodes and protocol server nodes. The NFS server +running on these nodes is used to export shares to storage consumers in +OpenStack virtual machines or even to bare metal storage consumers in the +OpenStack environment. A file system must also be created and +mounted on these nodes before configuring the manila service to use Spectrum +Scale storage. For more details, refer to `Spectrum Scale product +documentation `_. + +Spectrum Scale supports two ways of exporting data through NFS with high +availability. + +#. CES (which uses Ganesha NFS) + + * This is provided inherently by the protocol support in Spectrum Scale + and is a recommended method for NFS access. + +#. CNFS (which uses kernel NFS) + +For more information on NFS support in Spectrum Scale, refer to +`Protocol support in Spectrum Scale `_ and +`NFS Support overview in Spectrum Scale `_. + +The following figure is an example of Spectrum Scale architecture +with OpenStack services: + +.. figure:: ../../figures/openstack-spectrumscale-setup.JPG + :width: 90% + :align: center + :alt: OpenStack with Spectrum Scale Setup + +Quotas should be enabled for the Spectrum Scale filesystem to be exported +through NFS using Spectrum Scale share driver. +Use the following command to enable quota for a filesystem: + +.. code-block:: console + + $ mmchfs -Q yes + +Limitation +~~~~~~~~~~ + +Spectrum Scale share driver currently supports creation of NFS shares in the +flat network space only. For example, the Spectrum Scale storage node exporting +the data should be in the same network as that of the Compute VMs which mount +the shares acting as NFS clients. + +Driver configuration +~~~~~~~~~~~~~~~~~~~~ + +Spectrum Scale share driver supports creation of shares using both NFS servers +(Ganesha using Spectrum Scale CES/Kernel NFS). + +For both the NFS server types, you need to set the ``share_driver`` in the +``manila.conf`` as: + +.. code-block:: ini + + share_driver = manila.share.drivers.ibm.gpfs.GPFSShareDriver + +Spectrum Scale CES (NFS Ganesha server) +--------------------------------------- + +To use Spectrum Scale share driver in this mode, set the ``gpfs_share_helpers`` +in the ``manila.conf`` as: + +.. code-block:: ini + + gpfs_share_helpers = CES=manila.share.drivers.ibm.gpfs.CESHelper + +Following table lists the additional configuration options which are used with +this driver configuration. + +.. include:: ../../tables/manila-spectrumscale_ces.rst + +.. note:: + + Configuration options related to ssh are required only if ``is_gpfs_node`` + is set to ``False``. + +Spectrum Scale Clustered NFS (Kernel NFS server) +------------------------------------------------ + +To use Spectrum Scale share driver in this mode, set the ``gpfs_share_helpers`` +in the ``manila.conf`` as: + +.. code-block:: ini + + gpfs_share_helpers = KNFS=manila.share.drivers.ibm.gpfs.KNFSHelper + +Following table lists the additional configuration options which are used with +this driver configuration. + +.. include:: ../../tables/manila-spectrumscale_knfs.rst + +.. note:: + + Configuration options related to ssh are required only if ``is_gpfs_node`` + is set to ``False``. + +Share creation steps +~~~~~~~~~~~~~~~~~~~~ + +Sample configuration +-------------------- + +.. code-block:: ini + + [gpfs] + share_driver = manila.share.drivers.ibm.gpfs.GPFSShareDriver + gpfs_share_export_ip = x.x.x.x + gpfs_mount_point_base = /ibm/gpfs0 + gpfs_nfs_server_type = CES + is_gpfs_node = True + gpfs_share_helpers = CES=manila.share.drivers.ibm.gpfs.CESHelper + share_backend_name = GPFS + driver_handles_share_servers = False + + +Create GPFS share type and set extra spec +----------------------------------------- + +.. code-block:: ini + + $ manila type-create --snapshot_support True \ + --create_share_from_snapshot_support True gpfs False + + $ manila type-key gpfs set share_backend_name=GPFS diff --git a/doc/config-reference/source/tables/manila-spectrumscale_ces.rst b/doc/config-reference/source/tables/manila-spectrumscale_ces.rst new file mode 100644 index 0000000000..3cc13a940d --- /dev/null +++ b/doc/config-reference/source/tables/manila-spectrumscale_ces.rst @@ -0,0 +1,57 @@ +.. + Warning: Do not edit this file. It is automatically generated from the + software project's code and your changes will be overwritten. + + The tool to generate this file lives in openstack-doc-tools repository. + + Please make any changes needed in the code, then run the + autogenerate-config-doc tool from the openstack-doc-tools repository, or + ask for help on the documentation mailing list, IRC channel or meeting. + +.. _manila-spectrumscale_ces: + +.. list-table:: Description of IBM Spectrum Scale CES share driver configuration options + :header-rows: 1 + :class: config-ref-table + + * - Configuration option = Default value + - Description + + * - **[DEFAULT]** + - + + * - ``gpfs_mount_point_base`` = ``$state_path/mnt`` + + - (String) Base folder where exported shares are located. + + * - ``gpfs_nfs_server_type`` = ``CES`` + + - (String) NFS Server type. Valid choices are "CES" (Ganesha NFS) or "KNFS" (Kernel NFS). + + * - ``gpfs_share_export_ip`` = ``None`` + + - (Host address) IP to be added to GPFS export string. + + * - ``gpfs_share_helpers`` = ``KNFS=manila.share.drivers.ibm.gpfs.KNFSHelper, CES=manila.share.drivers.ibm.gpfs.CESHelper`` + + - (List) Specify list of share export helpers. + + * - ``gpfs_ssh_login`` = ``None`` + + - (String) GPFS server SSH login name. + + * - ``gpfs_ssh_password`` = ``None`` + + - (String) GPFS server SSH login password. The password is not needed, if 'gpfs_ssh_private_key' is configured. + + * - ``gpfs_ssh_port`` = ``22`` + + - (Port number) GPFS server SSH port. + + * - ``gpfs_ssh_private_key`` = ``None`` + + - (String) Path to GPFS server SSH private key for login. + + * - ``is_gpfs_node`` = ``False`` + + - (Boolean) True:when Manila services are running on one of the Spectrum Scale node. False:when Manila services are not running on any of the Spectrum Scale node. diff --git a/doc/config-reference/source/tables/manila-gpfs.rst b/doc/config-reference/source/tables/manila-spectrumscale_knfs.rst similarity index 71% rename from doc/config-reference/source/tables/manila-gpfs.rst rename to doc/config-reference/source/tables/manila-spectrumscale_knfs.rst index 4588cf5702..6db218e90b 100644 --- a/doc/config-reference/source/tables/manila-gpfs.rst +++ b/doc/config-reference/source/tables/manila-spectrumscale_knfs.rst @@ -8,35 +8,54 @@ autogenerate-config-doc tool from the openstack-doc-tools repository, or ask for help on the documentation mailing list, IRC channel or meeting. -.. _manila-gpfs: +.. _manila-spectrumscale_knfs: -.. list-table:: Description of IBM GPFS share driver configuration options +.. list-table:: Description of IBM Spectrum Scale KNFS share driver configuration options :header-rows: 1 :class: config-ref-table * - Configuration option = Default value - Description + * - **[DEFAULT]** - + * - ``gpfs_mount_point_base`` = ``$state_path/mnt`` + - (String) Base folder where exported shares are located. + * - ``gpfs_nfs_server_list`` = ``None`` + - (List) A list of the fully qualified NFS server names that make up the OpenStack Manila configuration. - * - ``gpfs_nfs_server_type`` = ``KNFS`` - - (String) NFS Server type. Valid choices are "KNFS" (kernel NFS) or "CES" (Ganesha NFS). + + * - ``gpfs_nfs_server_type`` = ``CES`` + + - (String) NFS Server type. Valid choices are "CES" (Ganesha NFS) or "KNFS" (Kernel NFS). + * - ``gpfs_share_export_ip`` = ``None`` - - (String) IP to be added to GPFS export string. + + - (Host address) IP to be added to GPFS export string. + * - ``gpfs_share_helpers`` = ``KNFS=manila.share.drivers.ibm.gpfs.KNFSHelper, CES=manila.share.drivers.ibm.gpfs.CESHelper`` + - (List) Specify list of share export helpers. + * - ``gpfs_ssh_login`` = ``None`` + - (String) GPFS server SSH login name. + * - ``gpfs_ssh_password`` = ``None`` + - (String) GPFS server SSH login password. The password is not needed, if 'gpfs_ssh_private_key' is configured. + * - ``gpfs_ssh_port`` = ``22`` + - (Port number) GPFS server SSH port. + * - ``gpfs_ssh_private_key`` = ``None`` + - (String) Path to GPFS server SSH private key for login. + * - ``is_gpfs_node`` = ``False`` + - (Boolean) True:when Manila services are running on one of the Spectrum Scale node. False:when Manila services are not running on any of the Spectrum Scale node. - * - ``knfs_export_options`` = ``rw,sync,no_root_squash,insecure,no_wdelay,no_subtree_check`` - - (String) DEPRECATED: Options to use when exporting a share using kernel NFS server. Note that these defaults can be overridden when a share is created by passing metadata with key name export_options. This option isn't used any longer. Please use share-type extra specs for export options. diff --git a/tools/autogenerate-config-flagmappings/manila.flagmappings b/tools/autogenerate-config-flagmappings/manila.flagmappings index 8e09e9cfd4..c3751352ab 100644 --- a/tools/autogenerate-config-flagmappings/manila.flagmappings +++ b/tools/autogenerate-config-flagmappings/manila.flagmappings @@ -77,15 +77,15 @@ glusterfs_share_layout glusterfs glusterfs_target glusterfs glusterfs_volume_pattern glusterfs goodness_function generic -gpfs_mount_point_base gpfs -gpfs_nfs_server_list gpfs -gpfs_nfs_server_type gpfs -gpfs_share_export_ip gpfs -gpfs_share_helpers gpfs -gpfs_ssh_login gpfs -gpfs_ssh_password gpfs -gpfs_ssh_port gpfs -gpfs_ssh_private_key gpfs +gpfs_mount_point_base spectrumscale_ces spectrumscale_knfs +gpfs_nfs_server_list spectrumscale_knfs +gpfs_nfs_server_type spectrumscale_ces spectrumscale_knfs +gpfs_share_export_ip spectrumscale_ces spectrumscale_knfs +gpfs_share_helpers spectrumscale_ces spectrumscale_knfs +gpfs_ssh_login spectrumscale_ces spectrumscale_knfs +gpfs_ssh_password spectrumscale_ces spectrumscale_knfs +gpfs_ssh_port spectrumscale_ces spectrumscale_knfs +gpfs_ssh_private_key spectrumscale_ces spectrumscale_knfs hdfs_namenode_ip hdfs hdfs_namenode_port hdfs hdfs_ssh_name hdfs @@ -124,8 +124,7 @@ hpe3par_username hpe3par instance_format disable instance_uuid_format disable interface_driver generic -is_gpfs_node gpfs -knfs_export_options gpfs +is_gpfs_node spectrumscale_ces spectrumscale_knfs log_config_append disable log_date_format disable log_dir disable diff --git a/tools/autogenerate-config-flagmappings/manila.headers b/tools/autogenerate-config-flagmappings/manila.headers index 3865b4ba1e..7e18b14d28 100644 --- a/tools/autogenerate-config-flagmappings/manila.headers +++ b/tools/autogenerate-config-flagmappings/manila.headers @@ -10,7 +10,6 @@ emc EMC share driver ganesha Ganesha generic Generic share driver glusterfs GlusterFS share driver -gpfs IBM GPFS share driver hdfs HDFS share driver hds_hnas HDS NAS share driver hds_hsp HDS HSP share driver @@ -28,6 +27,8 @@ redis Redis san SAN scheduler Scheduler share Share +spectrumscale_ces IBM Spectrum Scale CES share driver +spectrumscale_knfs IBM Spectrum Scale KNFS share driver unity Dell EMC Unity share driver tegile Tegile share driver vmax Dell EMC VMAX share driver