canonical / lxd

Powerful system container and virtual machine manager
https://canonical.com/lxd
GNU Affero General Public License v3.0
4.27k stars 910 forks source link

Storage: Add Dell PowerFlex SDC operation mode #13660

Closed roosterfish closed 2 minutes ago

roosterfish commented 6 days ago

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 and sdc operation modes are supported. Furthermore constants are used to identify either nvme or sdc operation mode.

An extension to the test suite is added with https://github.com/canonical/lxd-ci/pull/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 error sysfs: cannot create duplicate filename '/dev/block/*:*' (triggered by SDC) which breaks the underlying volume for consumption by LXD.

github-actions[bot] commented 6 days ago

Heads up @ru-fu - the "Documentation" label was applied to this issue.

tomponline commented 4 days ago

@roosterfish shall we mark as ready for review?

roosterfish commented 4 days ago

@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.

roosterfish commented 3 days ago

@tomponline test suites ran successful for both PowerFlex NVMe/TCP (using default noble image) and SDC (using jammy).

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.

tomponline commented 8 hours ago

needs a rebase too now

roosterfish commented 6 hours ago

I am just rerunning the test suite to double check everything.

tomponline commented 2 minutes ago

@roosterfish is there any snap packaging component to this change I need to merge?