On https://cloud-images.ubuntu.com/groovy/current/ there is (among many others) both a groovy-server-cloudimg-amd64-disk-kvm.img and a groovy-server-cloudimg-amd64.img. What's the difference?
You can look at the
.manifest files available on the same page. You will see that the difference is the kernel being used. The
disk-kvm.img variant has
linux-image-kvm 184.108.40.2068.20 while the other image has
The former is a reduced kernel for use in virtual environments, it might miss some modules/configs but is a bit lighter.
The second is the generic kernel that works everywhere. You'd use those images e.g. to deploy a new bare-metal system with them or in any other place where the linux-kvm represents a limitation you do not want.
If in doubt and you only have to select only one, then the non-kvm image is the one that should work everywhere.
Here you can read more about Ubuntu kernel variants