That is correct, the root device for all instances must come from one of LXD’s storage pools.
What are you trying to do here exactly? Create a VM which boots from a physical disk?
If so, you’d want something like this:
lxc init --empty --vm foo
lxc config device add foo my-nvme disk source=/dev/nvme0n1 boot.priority=10
lxc start foo --console=vga
That will still allocate a root disk from the storage pool, but simply not use it, instead adding the nvme as a secondary disk with the top boot priority so the VM boots from it.
I just need to run this single (windows) VM and all my pools are btrfs and that’s no good for VMs so I figured a single VM on its own nvme drive would do fine but …
So I guess I’ll have to create a seperate pool with the dir driver and have the VM/VM(s) run off that pool yeah?
yeah, you can do that. The 10GB dangling disk isn’t necessarily a huge issue though.
You could make it much smaller too with: lxc init --empty --vm foo -d root,size=1MiB
@stgraber
Is the root device really necessary at all?
I mean if there’s no deep dependency on it perhaps it would make sense to allow dropping it or at least defining a source for it?
It’s pretty deeply integrated in LXD that all instances get a root disk.
LXD assumes one exists for a lot of operations, from resizes, to migrations, to exports (backups), snapshots, …