Support opening disks (qcow, vmdk, vdi, etc...)
Context
Boxes was designed to have full ownership of its virtual-machines. It creates VMs from installation sources (ISOs), or it copies VMs from other brokers into its own local broker instance, or it copies installed VMs (disks) into Boxes internal storage.
This design decision has the objective of avoiding issues with supporting multiple disk formats (all VM disks in Boxes are converted to qcow2), avoiding issues with VMs that have disks in locations which require extra/additional permissions for Boxes to access/manage, etc...
The problem
VM disks are usually big files. It contains the resulting files of installing a complete operating system. These files tend to have the size in the magnitudes of Gigabytes.
Whenever Boxes is importing a VM from another broker or importing a disk (opening a qcow2, vdi, vmdk, ova file provided by the user), Boxes is copying AND converting to qcow2. This is slow and generates a copy of the file. Any work that the user performs after this is work done in the Boxes internal copy of the original disk. Not in the original disk.
The Cloud VM workflow
Some cloud platforms such as OpenStack support the deployment of VMs.
In their guidelines, they describe a development workflow that basically consists of:
- Obtaining/Creating a virtual machine.
- Modifying this virtual machine.
- [Optionally] send this virtual machine to other developers to modify it.
- Upload the resulting virtual machine into an "Image service" for deployment.
For more details: https://docs.openstack.org/image-guide/introduction.html
Appendix / References
The Amazon public clould offers a similar deployment workflow for VMs https://aws.amazon.com/ec2/vm-import/
The official Fedora Cloud website points at images that are VM disks https://alt.fedoraproject.org/cloud/
Creating a custom Virtual Machine for deployment on Azure https://blogs.msdn.microsoft.com/uk_faculty_connection/2016/09/22/creating-a-custom-virtual-machine-for-deployment-on-azure/
Importing Virtual Disks (Google Cloud) https://cloud.google.com/compute/docs/images/importing-virtual-disks