Skip to content

Commit bf2f441

Browse files
committed
Merge pull request #1913 from nvazquez/createVolumeOptimization
CLOUDSTACK-9752: [Vmware] Optimization of volume attachness to vm## Description This optimization aims to reduce volume attach slowness due to vmdk files search on datastore before creating the volume (search for `.vmdk`, `-flat.vmdk` and `-delta.vmdk` files to delete them if they exist). This search is not necessary when attaching a volume in Allocated state, due to volume files don't exist on datastore. On large datastores, this search can cause volume attachness to be really slow, as we can see in this log lines: ```` 13-mgmt.log:2016-11-02 10:16:33,136 INFO [vmware.mo.DatastoreMO] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Searching file 9ce7731fd38b4045afbb7ce9754abbc1.vmdk in [b5ebda046d613e079b5874b169cd848f] 13-mgmt.log:2016-11-02 10:19:42,567 WARN [storage.resource.VmwareStorageLayoutHelper] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Unable to locate VMDK file: 9ce7731fd38b4045afbb7ce9754abbc1.vmdk 13-mgmt.log:2016-11-02 10:19:42,719 INFO [vmware.mo.DatastoreMO] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Search file 9ce7731fd38b4045afbb7ce9754abbc1-flat.vmdk on [b5ebda046d613e079b5874b169cd848f] 13-mgmt.log:2016-11-02 10:19:44,399 INFO [vmware.mo.DatastoreMO] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Searching file 9ce7731fd38b4045afbb7ce9754abbc1-flat.vmdk in [b5ebda046d613e079b5874b169cd848f] 13-mgmt.log:2016-11-02 10:22:07,581 WARN [storage.resource.VmwareStorageLayoutHelper] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Unable to locate VMDK file: 9ce7731fd38b4045afbb7ce9754abbc1-flat.vmdk 13-mgmt.log:2016-11-02 10:22:07,731 INFO [vmware.mo.DatastoreMO] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Search file 9ce7731fd38b4045afbb7ce9754abbc1-delta.vmdk on [b5ebda046d613e079b5874b169cd848f] 13-mgmt.log:2016-11-02 10:22:09,745 INFO [vmware.mo.DatastoreMO] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Searching file 9ce7731fd38b4045afbb7ce9754abbc1-delta.vmdk in [b5ebda046d613e079b5874b169cd848f] 13-mgmt.log:2016-11-02 10:25:06,362 WARN [storage.resource.VmwareStorageLayoutHelper] (DirectAgent-931:ctx-5687d68e uscrlpdcsesx240.ads.autodesk.com, job-8675314/job-8675315, cmd: CreateObjectCommand) Unable to locate VMDK file: 9ce7731fd38b4045afbb7ce9754abbc1-delta.vmdk ```` * pr/1913: CLOUDSTACK-9752: [Vmware] Optimization of volume attachness to vm Signed-off-by: Rajani Karuturi <rajani.karuturi@accelerite.com>
2 parents 12497d0 + 49dadc5 commit bf2f441

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,11 +1577,15 @@ public Answer createVolume(CreateObjectCommand cmd) {
15771577
}
15781578

15791579
synchronized (this) {
1580-
// s_logger.info("Delete file if exists in datastore to clear the way for creating the volume. file: " + volumeDatastorePath);
1581-
VmwareStorageLayoutHelper.deleteVolumeVmdkFiles(dsMo, volumeUuid.toString(), dcMo);
1582-
1583-
vmMo.createDisk(volumeDatastorePath, (int)(volume.getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
1584-
vmMo.detachDisk(volumeDatastorePath, false);
1580+
try {
1581+
vmMo.createDisk(volumeDatastorePath, (int)(volume.getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
1582+
vmMo.detachDisk(volumeDatastorePath, false);
1583+
}
1584+
catch (Exception e) {
1585+
s_logger.error("Deleting file " + volumeDatastorePath + " due to error: " + e.getMessage());
1586+
VmwareStorageLayoutHelper.deleteVolumeVmdkFiles(dsMo, volumeUuid.toString(), dcMo);
1587+
throw new CloudRuntimeException("Unable to create volume due to: " + e.getMessage());
1588+
}
15851589
}
15861590

15871591
VolumeObjectTO newVol = new VolumeObjectTO();

0 commit comments

Comments
 (0)