mirror of https://github.com/apache/cloudstack.git
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>
This commit is contained in:
commit
bf2f441211
|
|
@ -1577,11 +1577,15 @@ public class VmwareStorageProcessor implements StorageProcessor {
|
|||
}
|
||||
|
||||
synchronized (this) {
|
||||
// s_logger.info("Delete file if exists in datastore to clear the way for creating the volume. file: " + volumeDatastorePath);
|
||||
VmwareStorageLayoutHelper.deleteVolumeVmdkFiles(dsMo, volumeUuid.toString(), dcMo);
|
||||
|
||||
vmMo.createDisk(volumeDatastorePath, (int)(volume.getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
|
||||
vmMo.detachDisk(volumeDatastorePath, false);
|
||||
try {
|
||||
vmMo.createDisk(volumeDatastorePath, (int)(volume.getSize() / (1024L * 1024L)), morDatastore, vmMo.getScsiDeviceControllerKey());
|
||||
vmMo.detachDisk(volumeDatastorePath, false);
|
||||
}
|
||||
catch (Exception e) {
|
||||
s_logger.error("Deleting file " + volumeDatastorePath + " due to error: " + e.getMessage());
|
||||
VmwareStorageLayoutHelper.deleteVolumeVmdkFiles(dsMo, volumeUuid.toString(), dcMo);
|
||||
throw new CloudRuntimeException("Unable to create volume due to: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
VolumeObjectTO newVol = new VolumeObjectTO();
|
||||
|
|
|
|||
Loading…
Reference in New Issue