On Wed, May 8, 2019 at 1:51 PM <francisco.garcia@wbsgo.com> wrote:
Description of the problem:
I am not able to restore (upload) a VM when its disk (Either Thin provisioning or Thick provisioned) is located in an iSCSI storage and this VM has at least one snapshot larger than 1Gb.

You need to set the disk initial_size to the size of the file you upload.

For example, see how upload_disk.py example:

image_size = os.path.getsize(args.filename)

disks_service = connection.system_service().disks_service()
disk = disks_service.add(
    disk=types.Disk(
        name=os.path.basename(args.filename),
        content_type=image_info["content_type"],
        description='Uploaded disk',
        format=new_disk_format,
        initial_size=image_size,
        provisioned_size=image_info["virtual-size"],
        sparse=new_disk_format == types.DiskFormat.COW,
        storage_domains=[
            types.StorageDomain(
                name=args.sd_name
            )
        ]
    )
)
 
I am using REST API through Java SDK.
I am using the same upload procedure described here: https://ovirt.org/develop/release-management/features/storage/backup-restore-disk-snapshots.html, of course, making little adjustments to disk format (COW, Sparse.. Depending on the type of the VM to be restored).
When I try restore any VM with this conditions, all snapshot disks with a size smaller than 1Gb are uploaded correctly. But when I am uploading a snapshot disk with a size bigger than 1Gb, the following error ocurrs:

The error triggered from Java SDK is: "The server response was 403 in the range request {bytes 1073741824-1207959551/4831838208}"
In the host's imageio log: "2019-05-07 14:26:30,253 WARNING (Thread-71960) [web] ERROR [172.19.33.146] PUT /images/8d353735-0a29-463c-b772-ec37f451e2e9 [403] Requested range out of allowed range [request=0.000488]"


For example (real scenario), I have these snapshot disks from a vm:
2.1G    DiskSnap_47c4e157-edd8-4bfc-b838-4d57ac8396bd_33b3e74a-cc6b-474a-97cc-960891716110_0.img -> First snap chain -> OK upload
1.1G    DiskSnap_47c4e157-edd8-4bfc-b838-4d57ac8396bd_9349e4dd-85b3-4145-8674-bb3f39546020_1.img -> Ok upload
1.1G    DiskSnap_47c4e157-edd8-4bfc-b838-4d57ac8396bd_4d10cb58-9f52-4d64-b6e9-ead4bed4c6a6_2.img -> Ok upload
4.6G    DiskSnap_47c4e157-edd8-4bfc-b838-4d57ac8396bd_429cbe6d-1148-4a84-861a-56ad6902859e_3.img -> Last snap chain -> Fail upload with previous error
[Qemu-img info in attached file: qemu-imgs-iSCSI.txt]

In the restore process, when I create the disk(In this case), I put the following values:
Disk: {
        Name:T_iSCSI_Thin_Disk1_restore,
        Id:null,
        Interface:VIRTIO_SCSI,
        Format:COW,
        WipeAfterDelete: false,
        Shareable: false,
        Sparse: true,
        Boot:true,
        Activo:true,
        Sizes:{
                Initial:4294967296,
                Actual:null,
                Total:null,
                Provisioned: 4294967296
        }
}

And the disk created is:
Disk: {
        Name:T_iSCSI_Thin_Disk1_restore,
        Id:aac28ff3-abdb-4bf9-beed-c08e7e19b0ba,
        Image:c8654d05-a18c-47bd-ab0b-f4d746e23efb,
        Format:COW,
        WipeAfterDelete: false,
        Shareable: false,
        Sparse: true,
        Sizes:{
                Initial:null,
                Actual:0,
                Total:0,
                Provisioned: 4294967296
        }
}

Therefore, the first upload can finish correctly. However, when I create snapshots with this disk, the snapshot disks have these parameters:
DiskSnapshot: {
        Id: 29dd6a18-c17c-4938-be67-d7af6de713ec,
        Disk:aac28ff3-abdb-4bf9-beed-c08e7e19b0ba,
        Snapshot:ceb2f29e-1ae8-441c-a5a7-836308cfeb8d,
        Sizes:{
                Actual:1073741824
                Provisioned:4294967296
                Total: 0
                Initial: null

this allocates 1g, may not be enough for the upload
         }
}
DiskSnapshot: {
        Id: 69620911-d490-4872-b353-ba29a762ea3e,
        Disk:aac28ff3-abdb-4bf9-beed-c08e7e19b0ba,
        Snapshot:c35423d5-ddd6-46f2-a5d7-0080941c3f30,
        Sizes:{
                Actual:1073741824
                Provisioned:4294967296
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: c8654d05-a18c-47bd-ab0b-f4d746e23efb,
        Disk:aac28ff3-abdb-4bf9-beed-c08e7e19b0ba,
        Snapshot:fc135efd-a67b-4eb3-bfdb-9090aa3b267e,
        Sizes:{
                Actual:4831838208
                Provisioned:4294967296
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: e3389916-4e80-4593-a116-3484f295ff7f,
        Disk:aac28ff3-abdb-4bf9-beed-c08e7e19b0ba,
        Snapshot:74aff5e7-e1c1-4f51-ae31-ea44caa180ef,
        Sizes:{
                Actual:1073741824
                Provisioned:4294967296
                Total: 0
                Initial: null
        }
}

As we can observe with these values, the actual size of snapshot disks indicates 1Gb, and when I try upload a snapshot disk (Bigger than 1.1Gb), the system doesn't allow to complete the upload, launching the mentionated previous error.

However, using NFS storage, the previous error doesn't ocurr. The system allows me upload disks bigger than 1 Gb, and when the upload finishes, the system refreshs the actualSize to actual value.

For example (real scenario), I have these snapshot disks from a vm:
3.1G    DiskSnap_985a02a0-0752-420a-a2fb-a3e89d1ac3bc_3dffb5f4-3f9c-410c-8b97-133922721f9a_0.img -> First snap chain -> OK upload
22M       DiskSnap_985a02a0-0752-420a-a2fb-a3e89d1ac3bc_d3307b3c-f930-4faa-90cb-6aedd38bea93_1.img -> Ok upload
31M       DiskSnap_985a02a0-0752-420a-a2fb-a3e89d1ac3bc_aa8648dd-d6c0-4d9d-8373-6764e806359f_2.img -> Ok upload
1.3G    DiskSnap_985a02a0-0752-420a-a2fb-a3e89d1ac3bc_2cf31d95-3b86-4d97-b39b-672d0066f503_3.img -> Last snap chain -> OK upload
[Qemu-img info in attached file: qemu-imgs-NFS.txt]

The restore with NFS storage is the same process but I change the format disk and sparse. With following values:

Disk: {
        Name:985a02a0-0752-420a-a2fb-a3e89d1ac3bc_restore,
        Id:null,
        Interface:VIRTIO_SCSI,
        Format:RAW,
        WipeAfterDelete: false,
        Shareable: false,
        Sparse: true,
        Boot:true,
        Activo:true,
        Sizes:{
                Initial:3221225472,
                Actual:null,
                Total:null,
                Provisioned: 3221225472
        }
}

And the disk created was:
Disk: {
        Name:985a02a0-0752-420a-a2fb-a3e89d1ac3bc_restore,
        Id:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Image:9c80aead-88de-48f9-be7e-0fde917e7f55,
        Format:RAW,
        WipeAfterDelete: false,
        Shareable: false,
        Sparse: true,
        Sizes:{
                Initial:null,
                Actual:0,
                Total:0,
                Provisioned: 3221225472
        }
}


When I create snapshots with this disk, the snapshot disks have these parameters:

DiskSnapshot: {
        Id: 87c4cb08-502a-4937-bbba-6d455395e990,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:dd257190-ef50-4990-a61f-40d84e2b08e9,
        Sizes:{
                Actual:200704
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: e7d6f1fb-ab37-45f8-8e23-5964ed194581,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:b9f3f3d3-710e-4ce2-b05f-563227f5ec04,
        Sizes:{
                Actual:200704
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: 8ef6f502-d00f-4fa5-b407-2cdc0e876045,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:274994de-5c2b-4b38-965f-4cadea3e0db3,
        Sizes:{
                Actual:200704
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: 9c80aead-88de-48f9-be7e-0fde917e7f55,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:f1d7382d-4427-4e21-9544-1b3cd85f23ae,
        Sizes:{
                Actual:0
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}


As we can observe with these values, the actual size of snapshot disks indicates 196Kb, and when I try upload any snapshot disk (Even more 1.1Gb),
the system allows upload all content disk and when it is finalished, it changes actual and total size. When the restore ends, I obtain these values:

Disk: {
        Name:985a02a0-0752-420a-a2fb-a3e89d1ac3bc_restoreBacula,
        Id:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Image:8ef6f502-d00f-4fa5-b407-2cdc0e876045,
        Format:COW,
        WipeAfterDelete: false,
        Shareable: false,
        Status: OK,
        Sparse: true,
        Sizes:{
                Initial:null,
                Actual:1318850560,
                Total:4593303552,
                Provisioned: 3221225472
        }
}

DiskSnapshot: {
        Id: 87c4cb08-502a-4937-bbba-6d455395e990,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:dd257190-ef50-4990-a61f-40d84e2b08e9,
        Sizes:{
                Actual:22282240
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: e7d6f1fb-ab37-45f8-8e23-5964ed194581,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:b9f3f3d3-710e-4ce2-b05f-563227f5ec04,
        Sizes:{
                Actual:32374784
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}
DiskSnapshot: {
        Id: 9c80aead-88de-48f9-be7e-0fde917e7f55,
        Disk:f2a89f5a-d8ac-4ea4-b17c-591cd86855e9,
        Snapshot:f1d7382d-4427-4e21-9544-1b3cd85f23ae,
        Sizes:{
                Actual:3219795968
                Provisioned:3221225472
                Total: 0
                Initial: null
        }
}

There is a disk snapshot less since at the end of the restoration I merge the last snapshot. But the values showed changes in actual Size in the DiskSnapshot.

Could you help me, please? Is there a different procedure to the one described in https://ovirt.org/develop/release-management/features/storage/backup-restore-disk-snapshots.html to work with iSCSI storage or is this simply a bug?



How reproducible:
Backup and restore VM with snapshots in an iSCSI storage, using Java SDK.

Steps to Reproduce:
1.- Follow steps indicated in https://ovirt.org/develop/release-management/features/storage/backup-restore-disk-snapshots.html to backup a VM allocated iSCSI Storage and containing snapshots bigger than 1.1GB
2.- Try to restore it using the instructions of that documment

Actual results:
Upload of images of disk snapshots bigger than 1.1Gb do not suceed ant the restore process fails.

Expected results:
Restored vm
_______________________________________________
Devel mailing list -- devel@ovirt.org
To unsubscribe send an email to devel-leave@ovirt.org
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/
List Archives: https://lists.ovirt.org/archives/list/devel@ovirt.org/message/OZWADBWM2RWJ2DXKPEM2PIQNR2OBIVBJ/