Replies: 5 comments 8 replies
-
My team originally tended to share a VG with a K8s cluster and a local host. Just expanding lvmd will be very intrusive change. To minimize the effect of this feature, it's better to add an additional layer to TopoLVM. The current brief software stack is as follows.
The new software stack might be as follows.
|
Beta Was this translation helpful? Give feedback.
-
Understood, this would be an intrusive architecture change. I assume the following implications:
A modification of the design diagram for the node might look like the attached image. Perhaps "rawd" is just part of topolvm-node, or perhaps it is a new container, not sure yet. We can work through the details later. @liewegas Other thoughts on the scenarios to consider? |
Beta Was this translation helpful? Give feedback.
-
This project has a tight scope that topolvm creates PVs backed by LV from a given VG. This makes topolvm simple and composable. |
Beta Was this translation helpful? Give feedback.
-
There are really two scenarios that we hope to address with a single csi driver but with a separate storage class:
I'm not sure how to implement it yet in the details of topolvm components. Are you saying that with a PV/PVC-like layer in lvmd, then lvmd would decide when to add more raw devices? This means we would need a new csi driver for provisioning raw devices, right? And we would still need a common component that discovers the available raw devices? |
Beta Was this translation helpful? Give feedback.
-
topolvm operator now support dynamic add device to vg by edit TopolvmCluster config. if user edit topolvmcluster CR to expand vg, topolvm-operator will start a job that will add device to vg. |
Beta Was this translation helpful? Give feedback.
-
Current State
TopoLVM today provisions LVs from VGs that have been configured outside of TopoLVM. The configuration to add a device to the VG must be made in advance of using TopoLVM. Adding a device to the VG either requires tools to be run on the host, or a tool such as the TopoLVM operator to provide that configuration.
Design Question
What if the TopoLVM driver could expand its scope for working with local storage to include raw devices as well? Some scenarios prefer to have a whole dedicated disk, instead of using an LV. For example, a Ceph OSD prefers a raw disk, while most applications may work perfectly fine with an LV.
If the support for raw devices is added to topolvm, the big advantage is that the decision to provision raw devices or LVs can be delayed until an application requests the storage. No advance decision about raw devices and VGs would be needed.
Without adding support for raw devices to topolvm, this would imply:
Design Suggestion
We are imagining a topolvm design such as the following:
Each storage class would specify a list of raw devices to be considered for provisioning. The list could be based on a device name filter, or device type (ssd/hdd), or some other selection criteria.
Conclusion
This would be a very big design change for topolvm to support raw devices. We would like to confirm if this could fit into the roadmap, if we were to contribute the feature.
Do you see any blockers for implementing this design change? Thanks!
Beta Was this translation helpful? Give feedback.
All reactions