New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable nfs mgr module configuration of CephNFS #9021
Comments
To migrate to
I verified with the dashboard that I can still see the existing 2 exports, and I was able to create a third into the
I'm still having problems actually using the NFS exports. I haven't been able to get them to work from Rook in any state, and I'm not sure how to debug what's actually going wrong. The Ganesha server has the right access to see the right rados pool/namespace and objects. [Update] I tried below based on this comment: #6636 (comment) # mount -t nfs -o nfsvers=4,proto=tcp <pod-ip>:/ /mnt/nfs
# # above is successful w/ no output
# ls /mnt/nfs
# # no output :/ |
This comment has been minimized.
This comment has been minimized.
After upgrading to v16.2.6, the dashboard no longer works for NFS management. In Pacific v16.2.6, I am no longer able to add NFS exports via dashboard. It seems to me that dashboard management of NFS exports is no longer allowed in Pacific in favor of the orchestrator interface. It is necessary to change Additionally, it seems that the dashboard interface never added URLs to the Ganesha config object, so the exports were not working. I manually added exports in v16.2.6 to fix this, and the exports now work. # cat exports.conf
%url rados://.nfs/my-nfs/export-1
%url rados://.nfs/my-nfs/export-2
%url rados://.nfs/my-nfs/export-3
# rados -p .nfs -N my-nfs put conf-nfs.my-nfs exports.conf
# rados -p .nfs -N my-nfs get conf-nfs.my-nfs -
%url rados://.nfs/my-nfs/export-1
%url rados://.nfs/my-nfs/export-2
%url rados://.nfs/my-nfs/export-3 The problem with my approach for Pacific v16.2.6 seems to be that the orchestrator interface does not "see" any of the migrated exports, even after the URLs have been added as above. This version is using pool # ceph nfs export ls my-nfs
[]
# rados -p .nfs -N my-nfs ls
conf-nfs.my-nfs
export-1
export-3
grace
rec-0000000000000004:my-nfs.a
export-2 From this, I can gather that we cannot force users to use pool |
Still in Ceph v16.2.6, I can't get the nfs mgr module to read exports that were migrated from a dashboard-created export. A dashboard export looks like below:
A similar nfs mgr module export looks like below:
I don't see where exactly the mgr module is failing to read the export. The mgr reports a log like below that doesn't include very much helpful info:
Given that I have been unsuccessful in migrating Ceph Octopus dashboard-created exports to Ceph v16.2.6, I think we may have to consider v16.2.0-v16.2.6 unable to be migrated for CephNFS purposes. For v16.2.7, we can use the new |
Giving a summary of my findings so far:
|
Thanks for the thorough summary, @BlaineEXE ! Ceph-Dashboard team plans to deliver the mgr/nfs - Dashboard integration by Pacific 16.2.7 (it's currently merged in master). |
Thanks @epuertat ! I think that is the last thing needed for users to have a good process migrating NFS to Pacific with Rook. :) |
Even with This is from Ceph build |
@BlaineEXE Somehow the container must be outdated (or at least the dashboard pkg) as that is the old exports list (i.e. in master the |
Everything looks to be working with the latest Pacific devel image (soon v16.2.7) and Rook v1.8 beta. Thanks everyone for your help. :) |
Is this a bug report or feature request?
The new nfs mgr module in Ceph makes managing NFS exports much easier from the CLI. We would like to allow users to manage NFS exports using this interface.
Current state
In Octopus, users could create NFS exports from the dashboard only. They could do this via CLI using curl commands in what is frankly a pretty hacky experience as noted in the Octopus docs: https://docs.ceph.com/en/octopus/cephfs/nfs/#configure-nfs-ganesha-exports. Notably, the line below:
Configuring the dashboard to "see" a manually-created CephNFS involves running the command found here (assuming multiple CephNFSes): https://rook.github.io/docs/rook/v1.7/ceph-nfs-crd.html#samples
The dashboard interface continues to work when upgrading to Pacific v16.2.6. This also causes the
nfs-ganesha
pool to be created with with an empty conf for the NFS cluster, but no exports are migrated. (Update:nfs-ganesha
pool might be created by Rook, not Ceph)As of 21 Oct. 2021, the dashboard interface also continues to work when upgrading to latest-pacific-devel (will become v16.2.7), and still continues to work when upgrading to latest-master-devel (will become Quincy). This also causes the
.nfs
pool to be created with an empty conf for the NFS cluster, and again with no exports migrated. (Update:.nfs
pool might be created by Rook, not Ceph)As of Ceph v16.2.6, the
ceph nfs export apply <cluster>
command does not exist. It is added in the upcoming v16.2.7. The similarceph nfs export update
command exists, but it lacks the<cluster>
argument, and I couldn't get it to work in my testing. This effectively means that currently, users cannot migrate existing exports to new pools until v16.2.7.Desired state
Ideally, we want to get into a state where the dashboard and nfs mgr module can observe and create the same NFS exports. Ceph seems to have made some efforts to align these in the Pacific release, and Rook is lagging behind on the effort.
Firstly, I am not certain that the Ceph dashboard and nfs mgr module are able to operate on NFS exports in the same way, even in Pacific/Quincy releases. Some of my investigation suggests that the nfs mgr module modifies the config object to add a URL for each export whereas the dashboard does not. This remains to be investigated.
In order to get to the desired state in Rook, Rook needs to be able to either (1) migrate NFS exports and config to the new pool layout automatically or (2) give users good documentation about how to migrate NFS exports and config to the new pool layout for themselves manually.
So far, we have been planning on option 2 given that we believe the NFS user base is small. There are some issues reported to Rook that indicate there are users of CephNFS. I linked some issues below and skipped issues reported by the same username.
Technical proposal
CAVEAT: I still need to prove out that the below will actually work. The testing I have done so far suggests it will.
In order to keep the NFS code legible around pool names/namespaces, when releasing Rook v1.8, I would like to be able to force all users to use the new
.nfs
pool if possible regardless of the Ceph version. I think this will be the best experience for users. They will ideally only have to migrate their pools ONCE. It will be a poor experience for users if they have to migrate tonfs-ganesha
for v16.2.[0-6] and migrate again to.nfs
for v16.2.7+. The migration will only be required when they upgrade to Rook v1.8 where they will have the Rook upgrade guide to help them. If we require the migration to happen only on changes to the Ceph version, users are more likely to miss the updates.Given the state of the nfs mgr module in Pacific before v16.2.7, I believe we must instruct users that the dashboard method is the only usable method for NFS management until v16.2.7.
For users on v16.2.6 and below (including Octopus), this will mean copying
export-N
items to pool.nfs
in namespace<name-of-CephNFS>
and usingceph dashboard set-ganesha-clusters-rados-pool-namespace
to change the pool configuration.For users on v16.2.7, the
ceph nfs export apply
command is working, and users can use that to migrate pools. Even if users have previously migrated exports to.nfs
before this using the method above, it may be necessary for the user to useceph nfs export apply
to re-consume the export configurations if the nfs mgr module still expects URL lines to be present in the NFS config.Ideally, users should have to do nothing if they upgrade from an already-migrated v16.2.6- to v16.2.7+.
Still to do
.nfs
in Pacific 16.2.6 and below (including Octopus) and have the dashboard management continue working.nfs
in Pacific 16.2.7 and up usingceph nfs export apply
Alternatives
We could allow users to migrate only if they actually want to use the nfs mgr module. This would inconvenience fewer users, but this would also mean we need to keep and maintain the migration docs for much longer in Rook for the eventuality that users want to migrate later. That comes with risks that docs might get outdated, and we would have to spend more time maintaining them. It seems better overall to prove out the migration steps for v1.8 and not have to worry about it after v1.9 is released.
The text was updated successfully, but these errors were encountered: