Conversation
d478e1f to
0f94923
Compare
|
@AshleyCliff This is now in a state where it could use a preliminary review. Biggest question IMO is how we reconcile the "Deploy Lustre" and "Deploy a shared filesystem" pages. Re-titling the latter may make sense since it actually describes integrating with an externally managed shared filesystem rather than deploying your own. |
AshleyCliff
left a comment
There was a problem hiding this comment.
Looking good, thanks for all the effort! I've left a few suggested updates and a variety of open-ended questions.
| The `lustre-server` charm is in an experimental state and is not ready for production use. | ||
| ::: | ||
|
|
||
| ## Prerequisites |
There was a problem hiding this comment.
Are there any weird order-of-operations issues that could crop up if the Lustre server is deployed before Slurm? The deploy a shared filesystem lists 'A Slurm cluster' as a prereq. If not an explicit prereq, would it be advised?
There was a problem hiding this comment.
Shouldn't be any issues with order-of-operations. Slurm or Lustre could come up first. You could even use Lustre without a Slurm cluster if you just wanted a standalone parallel filesystem so I've not included it as a prereq
| (howto-deploy-deploy-lustre-server)= | ||
| ## Deploy the `lustre-server` charm | ||
|
|
||
| To deploy a default configuration, where the initial leader unit is a combined MGS+MDS and all remaining units are OSSes, run the following: |
There was a problem hiding this comment.
How well known are MGS, MDS, and OSS acronyms? Especially for those who may not be highly familiar with filesystems/Lustre? I'd suggest spelling them out with the acronym in parentheses the first time they're used on the page and then just acronyms after that.
There was a problem hiding this comment.
Oh I see they're described on the explanation page. My other comments stands but maybe also a "Visit the Lustre explanation page for more details.." somewhere near this sentence.
There was a problem hiding this comment.
I've spelled out the acronyms and added a "For an explanation of Lustre and related terminology, see the {ref}`Lustre explanation page `" to the top of the page
| (howto-deploy-deploy-lustre-server)= | ||
| ## Deploy the `lustre-server` charm | ||
|
|
||
| To deploy a default configuration, where the initial leader unit is a combined MGS+MDS and all remaining units are OSSes, run the following: |
There was a problem hiding this comment.
initial leader
I'm not sure why but something about 'initial' keeps catching me here. Is there an expectation that the leader unit will change?
There was a problem hiding this comment.
Yes, the leader unit can change at any time. When that happens, we don't want the MGS+MDS node to change with it so the service is fixed to the unit that happened to be leader as lustre-server was deploying
| -n <number of units> | ||
| ::: | ||
|
|
||
| A minimum of two units is required; a single unit deployment is not supported. |
There was a problem hiding this comment.
Two total - one leader and one OSS, or two OSS? (I'm assuming one leader one OSS but might be worth spelling it out).
|
|
||
| LNet is Lustre's network layer, responsible for communication between clients and server components. The `lustre-server` charm can automatically detect network interfaces and configure LNet or a custom configuration can be provided using the `lnet-networks` option. | ||
|
|
||
| Both the `lustre-server` and `filesystem-client` charms perform network auto-detection by default, during the charm `install` hook. LNet is automatically configured with a network name of `tcp` using the default route Ethernet interface and, if RDMA hardware such as InfiniBand is detected, another network name of `o2ib` using every RDMA device, in a multi-rail setup if multiple devices are detected. |
There was a problem hiding this comment.
I believe this is the first mention of the filesystem-client charm on this page. Should there be a very brief statement added somewhere prior to this that describes how it fits into this process?
There was a problem hiding this comment.
Agreed, I've moved the paragraph explaining filesystem-client from "Integrating with clients" to further up the page, as you suggested in another comment
|
|
||
| LNet is Lustre's network layer, responsible for communication between clients and server components. The `lustre-server` charm can automatically detect network interfaces and configure LNet or a custom configuration can be provided using the `lnet-networks` option. | ||
|
|
||
| Both the `lustre-server` and `filesystem-client` charms perform network auto-detection by default, during the charm `install` hook. LNet is automatically configured with a network name of `tcp` using the default route Ethernet interface and, if RDMA hardware such as InfiniBand is detected, another network name of `o2ib` using every RDMA device, in a multi-rail setup if multiple devices are detected. |
There was a problem hiding this comment.
| Both the `lustre-server` and `filesystem-client` charms perform network auto-detection by default, during the charm `install` hook. LNet is automatically configured with a network name of `tcp` using the default route Ethernet interface and, if RDMA hardware such as InfiniBand is detected, another network name of `o2ib` using every RDMA device, in a multi-rail setup if multiple devices are detected. | |
| Both the `lustre-server` and `filesystem-client` charms perform network auto-detection by default, during the charm `install` hook. LNet is automatically configured with a network name of `tcp` using the default route Ethernet interface. If RDMA hardware such as InfiniBand is detected, another network name of `o2ib` is also configured, which uses every RDMA device in a multi-rail setup if multiple devices are detected. |
There was a problem hiding this comment.
Not sure that edit works but something needs to be tweaked, that sentence had way too much going and was hard to parse. The 'if multiple devices are detected' part still isn't fitting well.
There was a problem hiding this comment.
I went with:
"If RDMA hardware such as InfiniBand is detected, an o2ib network is also configured. When multiple RDMA devices are present, all of them are configured in a multi-rail setup in the o2ib network"
which feels slightly blunt but more precise
|
|
||
| ### Service placement | ||
|
|
||
| The charm automatically places the MGS and MDS on the initial leader unit, with all subsequent units becoming OSSes. A minimum of two units is required in a deployment. |
There was a problem hiding this comment.
Same as the how-to question - two units total or two OSS units?
|
|
||
| A **ZFS dataset** is a subdivision of a zpool that can be configured like an independent filesystem. Datasets inherit properties from their parent pool but ZFS features can be individually tailored per dataset. For example, a particular dataset can be configured for more frequent snapshots than another dataset in the same zpool. | ||
|
|
||
| TODO: how Lustre charm uses ZFS |
There was a problem hiding this comment.
Plans for updating this soon?
There was a problem hiding this comment.
Yes, once we have disk detection and we've finalized exactly how we're using ZFS
|
|
||
| If all health checks pass while the unit is in a `BlockedStatus`, the unit is restored to `ActiveStatus`. | ||
|
|
||
| ### Integrating with clients |
There was a problem hiding this comment.
Putting this section earlier would resolve my prior comment about filesystem-client needed some description/context.
Co-authored-by: Ashley Cliff <ashley.cliff@canonical.com>
* remove admonitions * add additional explanation around LNet * provided additional context for why a user may want to override LNet auto-detection * clarify minimum unit counts
* add LNDs to wordlist * add "## Architecture" header to Explanation * move the "Integration with clients" section * reword LNet autodetection and minimum unit count descriptions * add sample `juju status` * add test to verify Lustre is functioning
|
Thanks for the comments @AshleyCliff. That should be all of them addressed and the docs ready for another review. Getting disk detection functionality in the charm should be all that's needed to fix "TODO: how Lustre charm uses ZFS" and get this PR out of draft |
Rewrite sections that reference the initial leader being set as the MGS+MDS as service placement is now done based on storage. Reword various sections for greater clarity. Signed-off-by: Dominic Sloan-Murphy <dominic.sloanmurphy@canonical.com> Assisted-by: opencode:gpt-5.6
|
Now out of draft! |
benschwaller
left a comment
There was a problem hiding this comment.
Looks great! Left a few thoughts. A couple of the refs and code blocks loaded incorrectly on my github preview, affirm they are all correct.
| :::{code-block} shell | ||
| juju add-storage lustre-server/1 ost=loop,4,1G | ||
| ::: |
There was a problem hiding this comment.
Might want to consider adding the 4 device minimum for OST here.
| --config lnet-networks="tcp=eth0; o2ib0=ib0,ib1" | ||
| ``` | ||
|
|
||
| configures LNet with a net name of `tcp` using the `eth0` interface, and a net name of `o2ib0` using the `ib0` and `ib1` interfaces. |
There was a problem hiding this comment.
Do we support RoCE interfaces? If not, should call that out here given it was discussed earlier.
|
|
||
| - Peer relation data is present and consistent. | ||
| - Required kernel modules are loaded. | ||
| - Lustre service mounts are active. |
There was a problem hiding this comment.
More info on "active" mount definition and how you test for it might be useful to properly set expectations.
Pre-submission checklist
Summary of Changes
Adds documentation for the Charmed HPC Lustre offering. Includes an Explanation page detailing the Lustre filesystem and charm.
Related Issues, PRs, and Discussions
Code PR for the initial Lustre charm: canonical/filesystem-charms#36