Comment 5 for bug 1893661

Revision history for this message
Ryan Harper (raharper) wrote :

Cool!

The first step is to understand what additional metadata is needed to construct an VROC device (this container).

The existing storage config yaml for raid looks like this:

https://curtin.readthedocs.io/en/latest/topics/storage.html#raid-command

It looks like we need to have a default name for the container,
you use /dev/md/insm0, I see other places use /dev/md/insm. Thoughts?

Maybe this metadata syntax:

- type: raid
  metadata: imsm
  container: /dev/md/ism0
  name: mirror0
  devices:
    - /dev/nvme0n1p1
    - /dev/nvme1n1p1
  level: 1

Which would run two commands:
  mdadm --create /dev/md/ism0 --metadata=imsm --raid-devices=2 /dev/nvme0n1p1 /dev/nvme1n1p1
  mdadm --create /dev/md0 ... /dev/md/ism0 --name=mirror0

Open questions/TODO:

1) does the second mdadm command need --metadata=imsm, --raid-devices=2 ?
2) it appears that the second command does require specifying raid-level, but what about devices?
3) how does one remove imsm containers? Curtin attempts to remove existing storage layers on top of physical disks so they can be re-used in other layered storages
4) can we boot to root on imsm devices? if so, what grub and initrd changes may be needed?
5) once created, we need to adjust mdadm examine/detail output parsing in curtin/block/mdadm.py; I believe the output of imsm device details is broken.

Lastly; it's going to be hard to support this since we cannot emulate such a device in QEMU; curtin heavily relies on virtualization to test for regressions. Typically we'd construct an QEMU vm with storage that looks like an Intel VROC raid and make sure we can create/destroy these things automatically.