-
Notifications
You must be signed in to change notification settings - Fork 931
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
Storage: Add Dell PowerFlex SDC operation mode #13660
Conversation
dcc664a
to
be51cf0
Compare
Heads up @ru-fu - the "Documentation" label was applied to this issue. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just some small nitpicks.
be51cf0
to
d1ae66b
Compare
1950d23
to
d7928b1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, the docs look good now!
@roosterfish shall we mark as ready for review? |
Ready now, I did some rebasing as one of the earlier commits contained stuff that I have removed later on. I am just rerunning the test suites for both nvme and sdc and will report here if both are done. |
@tomponline test suites ran successful for both PowerFlex NVMe/TCP (using default Additionally I have tested SDC in LXD cluster mode, performing live migrations and having both NVMe/TCP and SDC backed LXD storage pools in parallel on the same cluster. All stable and ready for final review now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few nits. But overall looks great, thanks!
needs a rebase too now |
d7928b1
to
cfd8c38
Compare
Prepare the function to support both the PowerFlex NVMe/TCP and SDC modes. This removes the getNVMeMappedDevPath func. Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
cfd8c38
to
2ae444a
Compare
I am just rerunning the test suite to double check everything. |
Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
This allows using some already existing helper functions for the PowerFlex SDC mode. Signed-off-by: Julian Pelizäus <[email protected]>
This allows using the Dell PowerFlex SDC approach to consume volumes from a PowerFlex storage cluster. Signed-off-by: Julian Pelizäus <[email protected]>
The entire process of creating and deleting NVMe hosts in PowerFlex is already covered by the the nvme lock that is held as part of mapVolume/unmapVolume. Signed-off-by: Julian Pelizäus <[email protected]>
The subsystem's NQN contains the PowerFlex system ID not protection domain ID. This lead the driver to always rerun the nvme-cli connect statement. As this action is idempotent no error was observed. But it yields a reverter including a hook to disconnect every time which can lead to problems if the caller is running the disconnect hook (in this case getMappedDiskPath() during volume imports). Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
Signed-off-by: Julian Pelizäus <[email protected]>
2ae444a
to
044e88b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM thanks
@roosterfish is there any snap packaging component to this change I need to merge? |
No change required, all SDC is on the host and LXD is using the |
Overview
This adds the SDC operation mode to the Dell PowerFlex storage driver.
To discover the presence of the SDC and to request further information from it, Dell's
goscaleio
library is added to LXD in order to able to import already existing utility functions. It's license is Apache-2.0.Using this library we don't have to perform any actions against the SDC ourselves. The library is making use of the SDC's
/dev/scini
device using syscalls.In addition it refactors the map/unmap functions to be generic so that both the
nvme
andsdc
operation modes are supported.Furthermore constants are used to identify either
nvme
orsdc
operation mode.An extension to the test suite is added with canonical/lxd-ci#212.
Limitation
Using the
sdc
mode currently is limited to images with only three partitions (e.g.ubuntu:jammy
). Launching images with more than 3 partitions (e.g.ubuntu:noble
) is causing the kernel errorsysfs: cannot create duplicate filename '/dev/block/*:*'
(triggered by SDC) which breaks the underlying volume for consumption by LXD.