hey, this confused me as well, at first.
First, an image lives in the image datastore when not in use or when downloaded from the marketplace.
When you instantiate a VM from it, a snapshot is created and linked to the system datastore. So now opennebula knows the image is in use and has a VM attached to it. So for a persistent disk attached to a VM you’ll see the symlink being created to the image in the image datastore.
For non-persistent VM’s it works a bit different; the VM will start with the disk from the image datastore and an extra disk is created containing the changes that the VM’s makes. So when the VM is stopped, the original image has not changed it contents, all changes are stored in the second disk image.
When you undeploy that VM, the second disk gets thrown away, and the original non-persistent image stays the same. So a default Ubuntu image will stay the default ubuntu image, if you install something, for example apache, that gets added to the second image, so the original ubuntu image is not changed at all.
Hope this makes sense - and to the rest of the forum - please correct me if I’m wrong