diff --git a/lxd/storage_lvm.go b/lxd/storage_lvm.go
index <HASH>..<HASH> 100644
--- a/lxd/storage_lvm.go
+++ b/lxd/storage_lvm.go
@@ -1583,15 +1583,21 @@ func (s *storageLvm) ImageDelete(fingerprint string) error {
 	logger.Debugf("Deleting LVM storage volume for image \"%s\" on storage pool \"%s\".", fingerprint, s.pool.Name)
 
 	if s.useThinpool {
-		_, err := s.ImageUmount(fingerprint)
-		if err != nil {
-			return err
-		}
-
 		poolName := s.getOnDiskPoolName()
-		err = s.removeLV(poolName, storagePoolVolumeAPIEndpointImages, fingerprint)
-		if err != nil {
-			return err
+		imageLvmDevPath := getLvmDevPath(poolName,
+			storagePoolVolumeAPIEndpointImages, fingerprint)
+		lvExists, _ := storageLVExists(imageLvmDevPath)
+
+		if lvExists {
+			_, err := s.ImageUmount(fingerprint)
+			if err != nil {
+				return err
+			}
+
+			err = s.removeLV(poolName, storagePoolVolumeAPIEndpointImages, fingerprint)
+			if err != nil {
+				return err
+			}
 		}
 	}
lvm: existence check before image delete

Closes #<I>.