mgr/nvmeof: add nvmeof module which will create .nvmeof rbd pool#67167
mgr/nvmeof: add nvmeof module which will create .nvmeof rbd pool#67167
Conversation
0902775 to
96e2f7a
Compare
src/pybind/mgr/nvmeof/module.py
Outdated
| Option( | ||
| name='metadata_pool_pg_num', | ||
| type='int', | ||
| default=128, |
There was a problem hiding this comment.
Why so many PGs? I'm assuming that you are only going to have a couple of objects/omaps per gateway and that the total amount of metadata is probably going to be less than 1MB in all but the very largest configurations. For that type of storage requirement 1 PG should be more than sufficient
There was a problem hiding this comment.
you are right I will change that :)
src/mon/MgrMonitor.cc
Outdated
| #endif | ||
| "pg_autoscaler", | ||
| "telemetry", | ||
| "nvmeof", |
There was a problem hiding this comment.
See the map always_on_modules_map below which determines which modules should always be on for each ceph release. Assuming you are back porting this to tentacle (not sure how that works if you have a release of tentacle that supports nvmeof and earlier tentacle releases that don't) I think you need to make a copy of the octopus_modules, call this tentacle_modules and add nvmeof to that and then adjust the map below so that the tentacle release uses tentacle_modules.
There was a problem hiding this comment.
I think the purpose of the release in always_on_modules_map is primarily to determine whether health check errors are generated if an always on module is missing. So if you add it to tentacle_modules this means if the Mons are upgraded and Mgr is running < tentacle no health check warnings are generated, if Mgr is running old tentacle a warning will be generated (nvmeof will be missing), if Mgr is running new tentacle the nvmeof module will be running. There isn't a way of avoiding the health check warning during upgrade if you add a module mid release but it will just be a transient warning until the upgrade completes.
There was a problem hiding this comment.
Thanks for the explanation, that makes sense. I’ll create a tentacle_modules list, add nvmeof to it, and update the map accordingly. I understand there may be a transient health warning during upgrades, which is expected.
I’ll proceed with that approach, and if I run into any issues or misunderstand something, I’ll follow up. Thanks!
6220366 to
2d748a1
Compare
99ec5e9 to
45c5b9d
Compare
batrick
left a comment
There was a problem hiding this comment.
I expect a commit message that explains the purpose of the new module and the new pool.
Please update docs indicating what this module is. Add a release note.
Aviv mentioned that the current implementation asks users to create this pool, where is that code/doc?
src/pybind/mgr/nvmeof/module.py
Outdated
| logger.info(f"pool {pool_name} doesnt exist") | ||
| return pool_exists | ||
|
|
||
| def _create_pool(self, pool_name: str, pg_num: int): |
There was a problem hiding this comment.
There are methods in mgr_module.py for these common operations. Use them please. (Add options if necessary.)
There was a problem hiding this comment.
Is it a good idea to use other modules functions? I didn't see other usages for the create_pool function in mgr_module.py, and thought that if this is the case, it might be easily broken when someone rename or change it (as it will be called with self.remote right?). Are there examples for such usages I missed?
45c5b9d to
1d9fb79
Compare
Thanks a lot! 🎊 |
1d9fb79 to
995f375
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 10 changed files in this pull request and generated 10 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
995f375 to
5bab2d4
Compare
|
jenkins test make check arm64 |
1c7628c to
d7a8de2
Compare
Introduce a new NVMe-oF mgr module and which create the pool used for storing NVMe-related metadata ceph orch nvmeof apply command. This removes the need for users to manually create and configure the metadata pool before using the NVMe-oF functionality, simplifying setup and reducing the chance of misconfiguration. Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
Added a call to create_pool_if_not_exists during the execution of ceph orch apply nvmeof command. Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
d7a8de2 to
cb6792d
Compare
cb6792d to
0da34e7
Compare
|
/config check ok |
Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
0da34e7 to
166fb04
Compare
|
jenkins test make check arm64 |
1 similar comment
|
jenkins test make check arm64 |
|
jenkins test rook e2e |
Who ran this through QA? |
|
This PR seems to be causing crash of mgr : I've raised a fix for this: #67607. Please feel free to open tracker for the same if required , I'll attach in PR |
This PR broke the ceph-mgr [1] and was not QA'd more broadly. [1] ceph#67167 (comment) This reverts commit 884bbcf, reversing changes made to 472e267. Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
@Hezko this broke the ceph-mgr. I am reverting in #67608. Please do not merge your PRs without QA and review from a component lead. |
This reverts commit df0028f.
This reverts commit df0028f. Fixes: https://tracker.ceph.com/issues/74702 Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
This PR broke the ceph-mgr [1] and was not QA'd more broadly. [1] ceph#67167 (comment) This reverts commit 884bbcf, reversing changes made to 472e267. Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
This PR broke the ceph-mgr [1] and was not QA'd more broadly. [1] ceph#67167 (comment) This reverts commit 884bbcf, reversing changes made to 472e267. Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
this PR introduce a new always on module. the module will ensure the creation of a pool called
.nvmeofwhich will be used for saving the metadata pool. This will eliminate the current requirement of creating such pool manually by the user.fixes: https://tracker.ceph.com/issues/74702
Signed-off-by: Tomer Haskalovitch tomer.haska@ibm.com
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job DefinitionYou must only issue one Jenkins command per-comment. Jenkins does not understand
comments with more than one command.