Virtual machine support is a pretty cool new feature that was introduced with LXD 4.0, although it also leads to a simple question: why?
The question is purely one of curiosity, to learn about the advantages of having the feature and possible disadvantages to not having it.
One of the more immediate thoughts about an advantage is that it allows for the use of LXD features - lxc client, API, speed, snapshots, migrations, efficiency, network & storage configurations, etc. - within the context of a VM, without losing the benefits of LXD containers due to the additional overhead and wastefulness of resources that at least have traditionally been associated with VMs.
Now that we can launch either a system container or a VM with LXD, some questions come to mind:
Why would someone want to use LXD to launch a VM instead of a container?
Why would someone want to use LXD to launch a container instead of a VM?
Is a LXD VM the same as any other VM?
Is the main advantage to using LXD VMs to allow for LXD to serve as a replacement for hypervisors?
Will it be possible to create nested VMs or even alternating nesting between containers and VMs?
What are some of the current limitations to LXD’s VM support?
What are some considerations for possible future features to incorporate into LXD’s VM support?
Thanks for reading! Looking forward to seeing more LXD developments!