Skip to content

Support for LV types (RAID0/1/5/10) #164

Open
@t3hmrman

Description

@t3hmrman

Describe the problem/challenge you have
I'd like to be able to use lvm-localpv with lvmraid (LVM native RAID) to take advantage of RAID on a VolumeGroup with multiple drives.

Unfortunately LVM does not allow setting default Logical Volume types on VolumeGroups (this is probably for the best, complexity wise), so when lvm-localpv the only way to enforce a non-default type currently is via thinProvision.

Describe the solution you'd like
Support for mirroring and other RAID configurations in StorageClass parameters for lvm-localpv.

Along with support for RAID configurations I'd like support for the --raidIntegrity option to allow for some checksums of data on disk.

Anything else you would like to add:
I'd like to work on this, and have a few questions/comments:

  • Should I write a design doc? (I'd probably mirror the one for thin provisioning)
  • Initially I'm only planning on supporting raid0/stripe,raid/raid1/mirror, raid5, raid6, and raid10
  • VolumeInfo (which maybe should be named VolumeParams) seems to put it's own spin on the settings, so I have a few style-related questions:
    • Which is better --Mirror (mirror in YAML) or LvType (lvType in YAML) ? Mirror is a bit closer to ThinProvision in spirit, LvType is a bit more explicit about the passing down of settings
    • Some of the modes require additional configuration (ex. --stripes, --mirrors, --stripesize), would that be best as something like MirrorCount (mirrorCount in YAML)?

Currently I'm using a quite well-known workaround -- running mdraid (via mdadm, with dm-integrity configured) on the two disks below LVM and giving lvm-localpv a volume group based on /dev/mdX. I'd like to test LVM-native RAID against mdraid itself as well ultimately so some support would be great.

Environment:

  • LVM Driver version
  • Kubernetes version (use kubectl version):
  • Kubernetes installer & version:
  • Cloud provider or hardware configuration:
  • OS (e.g. from /etc/os-release):

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions