Project

General

Profile

Feature #47490

Integration of dashboard with volume/nfs module

Added by Varsha Rao about 1 year ago. Updated about 2 months ago.

Status:
Pending Backport
Priority:
Normal
Assignee:
Category:
-
Target version:
% Done:

0%

Source:
Development
Tags:
Backport:
Reviewed:
Affected Versions:
Component(FS):
mgr/nfs
Labels (FS):
NFS-cluster
Pull request ID:

Description

Currently, there are two ways to create exports with mgr/volume/nfs module and
dashboard. Both use the same code1[2] with modification to create exports.
Recently, there was a meeting3 to discuss integration of dashboard with
volume/nfs module. A number of todo items were identified.

Below provides a brief description of export creation workflow:

1) mgr/volume/nfs module [4]
  • It was introduced in octopus.
  • It automates the pool and cluster creation with "ceph nfs cluster create" command.
  • Currently using 'cephadm' as backend. In future 'rook' will also be supported.
  • Default exports can be created with
    'ceph nfs export create cephfs <fsname> <clusterid> <binding> [--readonly] [--path=/path/in/cephfs]'.
    Otherwise `ceph nfs cluster config set <clusterid> -i <config_file>` command
    can be used to create user defined exports. Even modify ganesha configuration.
  • RGW exports are not supported [5]. We need someone to help with it.
  • Exports can be listed, fetched and deleted. But cannot be modified currently [6].
  • Only NFSv4 is supported. It provides better cache management, parallelism,
    compound operations, and lease based locks than previous versions.
2) Dashboard7
  • The pool and nfs cluster needs to be created explicitly.
  • Also requires the
    "ceph dashboard set-ganesha-clusters-rados-pool-namespace <pool_name>[/<namespace>]"
    command to be used before exports can be created. And following options need to
    be specified: cluster id, daemons, path, pseudo path, access type, squash,
    security label, protocols [3, 4], transport [udp, tcp], cephfs user id, cephfs name.
  • It supports both cephfs and rgw exports.
  • Exports can be modified, listed, fetched and deleted.
  • Available from nautilus.

We would like to create a common code base for it and eventually go in a
direction where the dashboard may use the volumes/nfs plugin for configuring
NFS clusters.

These are the issues we identified in our meeting:

  • Difference in user workflow between volume/nfs and dashboard.
  • rgw exports need to be supported in volume/nfs module.
  • Dashboard does not want to depend on the orchestrator in future for fetching
    cluster pool and namespace.
  • Dashboard creates config object per daemon containing export object rados url.
  • In cephadm all daemons within the cluster watch a single config object. This
    config object contains rados url for export objects.

                           rados://$pool/$namespace/export-$i       rados://$pool/$namespace/userconf-nfs.$svc
                                 (export config)                    (user defined config)         
                 +----------+    +----------+    +----------+       +---------+
                 |          |    |          |    |          |       |         |
                 | export-1 |    | export-2 |    | export-3 |       |  export |
                 |          |    |          |    |          |       |         |
                 +----+-----+    +----+-----+    +-----+----+       +----+----+
                      ^               ^                ^                 ^
                      |               |                |                 |
                      +---------------+----------------+-----------------+
                                 %url | 
                                      | 
                             +--------+--------+ 
                             |                 |  rados://$pool/$namespace/conf-nfs.$svc 
                             |  conf+nfs.$svc  |  (common config) 
                             |                 | 
                             +--------+--------+ 
                                      ^ 
                                      | 
                            watch_url | 
              +----------------------------------------------+ 
              |                       |                      | 
              |                       |                      |            RADOS 
+----------------------------------------------------------------------------------+ 
              |                       |                      |            CONTAINER 
    watch_url |             watch_url |            watch_url | 
              |                       |                      | 
     +--------+-------+      +--------+-------+      +-------+--------+ 
     |                |      |                |      |                |  /etc/ganesha/ganesha.conf 
     |   nfs.$svc.a   |      |   nfs.$svc.b   |      |   nfs.$svc.c   |  (bootstrap config) 
     |                |      |                |      |                | 
     +----------------+      +----------------+      +----------------+ 

[1] https://github.com/ceph/ceph/blob/master/src/pybind/mgr/volumes/fs/nfs.py
[2] https://github.com/ceph/ceph/blob/master/src/pybind/mgr/dashboard/services/ganesha.py
[3] https://pad.ceph.com/p/dashboard-nfs
[4] https://docs.ceph.com/docs/master/cephfs/fs-nfs-exports
[5] https://tracker.ceph.com/issues/47172
[6] https://tracker.ceph.com/issues/45746
[7] https://docs.ceph.com/docs/master/mgr/dashboard/#nfs-ganesha-management


Subtasks

Bug #48706: mgr/nfs: Does not detect exports created by dashboardNewVarsha Rao


Related issues

Related to Dashboard - Bug #46492: mgr/dashboard: adapt NFS-Ganesha design change in Octopus (daemons -> services) Resolved
Related to Dashboard - Bug #49925: mgr/dashboard: adapt Dashboard to work with NFSv4 Resolved
Related to CephFS - Cleanup #50080: mgr/nfs: move nfs code out of volumes plugin Resolved
Related to CephFS - Feature #50449: mgr/nfs: Add unit tests for conf parser and others Fix Under Review
Related to CephFS - Cleanup #50450: mgr/nfs: Simplify the parsing of Ganesha Conf using existing pseudo-parsers New
Blocked by CephFS - Feature #47587: pybind/mgr/nfs: add Rook support In Progress
Blocked by CephFS - Feature #45746: mgr/nfs: Add interface to update export Resolved
Blocked by CephFS - Feature #47172: mgr/nfs: Add support for RGW export Pending Backport
Precedes Dashboard - Feature #46493: mgr/dashboard: integrate Dashboard with mgr/nfs module interface Resolved

History

#1 Updated by Varsha Rao about 1 year ago

  • Related to Feature #47172: mgr/nfs: Add support for RGW export added

#2 Updated by Varsha Rao about 1 year ago

  • Related to Feature #45746: mgr/nfs: Add interface to update export added

#3 Updated by Varsha Rao about 1 year ago

  • Related to Bug #47337: rook: 'ceph orch ls' fails added

#4 Updated by Varsha Rao about 1 year ago

  • Related to Bug #47387: rook: 'ceph orch ps' does not list daemons correctly added

#5 Updated by Varsha Rao about 1 year ago

  • Related to Bug #46492: mgr/dashboard: adapt NFS-Ganesha design change in Octopus (daemons -> services) added

#6 Updated by Varsha Rao about 1 year ago

Exports and nfs clusters cannot be managed by dashboard and volumes/nfs interface at the same time. Xattrs can be used for identification.

#7 Updated by Patrick Donnelly about 1 year ago

#8 Updated by Patrick Donnelly about 1 year ago

  • Related to deleted (Feature #45746: mgr/nfs: Add interface to update export)

#9 Updated by Patrick Donnelly about 1 year ago

  • Blocked by Feature #45746: mgr/nfs: Add interface to update export added

#10 Updated by Patrick Donnelly about 1 year ago

  • Related to deleted (Feature #47172: mgr/nfs: Add support for RGW export )

#11 Updated by Patrick Donnelly about 1 year ago

  • Blocked by Feature #47172: mgr/nfs: Add support for RGW export added

#12 Updated by Patrick Donnelly about 1 year ago

  • Related to deleted (Bug #47337: rook: 'ceph orch ls' fails)

#13 Updated by Patrick Donnelly about 1 year ago

  • Related to deleted (Bug #47387: rook: 'ceph orch ps' does not list daemons correctly)

#14 Updated by Patrick Donnelly about 1 year ago

  • Status changed from New to In Progress
  • Assignee set to Varsha Rao
  • Target version set to v16.0.0
  • Source set to Development

#15 Updated by Varsha Rao about 1 year ago

  • Assignee changed from Varsha Rao to Yehuda Sadeh
  • Target version deleted (v16.0.0)
  • Source deleted (Development)

#16 Updated by Varsha Rao about 1 year ago

  • Assignee changed from Yehuda Sadeh to Varsha Rao
  • Target version set to v16.0.0
  • Source set to Development

#18 Updated by Patrick Donnelly 9 months ago

  • Target version changed from v16.0.0 to v17.0.0

#19 Updated by Alfonso Martínez 8 months ago

  • Related to Bug #49925: mgr/dashboard: adapt Dashboard to work with NFSv4 added

#20 Updated by Varsha Rao 8 months ago

  • Related to Cleanup #50080: mgr/nfs: move nfs code out of volumes plugin added

#21 Updated by Varsha Rao 8 months ago

  • Related to Feature #50449: mgr/nfs: Add unit tests for conf parser and others added

#22 Updated by Varsha Rao 8 months ago

  • Related to Cleanup #50450: mgr/nfs: Simplify the parsing of Ganesha Conf using existing pseudo-parsers added

#23 Updated by Alfonso Martínez 4 months ago

  • Assignee changed from Varsha Rao to Sage Weil
  • Pull request ID set to 47490

#24 Updated by Ernesto Puerta 4 months ago

  • Precedes Feature #46493: mgr/dashboard: integrate Dashboard with mgr/nfs module interface added

#25 Updated by Alfonso Martínez 2 months ago

  • Pull request ID deleted (47490)

#26 Updated by Ernesto Puerta about 2 months ago

  • Pull request ID set to 42526

#27 Updated by Ernesto Puerta about 2 months ago

  • Status changed from In Progress to Pending Backport

#28 Updated by Ernesto Puerta about 2 months ago

Can we close this/mark it as duplicate of https://tracker.ceph.com/issues/46493 (where all pacific backporting will take place)? I don't have permissions to do so. Thanks!

Also available in: Atom PDF