Marcus Sorensen created CLOUDSTACK-4618:
-------------------------------------------
Summary: storage refactor has broken CLVM
Key: CLOUDSTACK-4618
URL: https://issues.apache.org/jira/browse/CLOUDSTACK-4618
Project: CloudStack
Issue Type: Bug
Security Level: Public (Anyone can view this level - this is the default.)
Components: Storage Controller
Affects Versions: 4.2.0
Reporter: Marcus Sorensen
Assignee: edison su
Priority: Blocker
Fix For: 4.2.0
I see the storage refactor has broken CLVM. It looks like the process is doing
something like:
copy template from secondary to primary storage, then create copy of primary
storage template as new volume
This breaks CLVM, because it used to just do:
copy template from secondary to primary storage as new volume
Since we can't efficiently clone in CLVM, it expects to always copy the
template from secondary storage, rather than copying to primary first and then
copying the whole template from the primary back to the same disks. 1) because
it thrashes the disks, and 2) copying the template is usually much faster
because the template is sparse, and the logical volume is not, so copying a 10G
template with a real size of 500M is much faster than copying a 10G logical
volume to another 10G logical volume.
in KVMStorageProcessor.java cloneVolumeFromBaseTemplate:
if (primaryPool.getType() == StoragePoolType.CLVM) {
vol = templateToPrimaryDownload(templatePath, primaryPool);
}
This will never work, because templateToPrimaryDownload expects secondary
storage, and we have copied the template to primary storage and are passing
that. e.g.:
{
"org.apache.cloudstack.storage.command.CopyCommand": {
"destTO": {
"org.apache.cloudstack.storage.to.VolumeObjectTO": {
"accountId": 2,
"dataStore": {
"org.apache.cloudstack.storage.to.PrimaryDataStoreTO": {
"host": "localhost",
"id": 2,
"path": "/vg0",
"poolType": "CLVM",
"port": 0,
"uuid": "4e00fe65-c47e-4b85-afe8-4f97fb8689d0"
}
},
"format": "QCOW2",
"hypervisorType": "KVM",
"id": 9,
"name": "ROOT-9",
"size": 1073741824,
"uuid": "d73f3a2b-9e63-4faf-a45b-d6fcf7633793",
"vmName": "i-2-9-VM",
"volumeId": 9,
"volumeType": "ROOT"
}
},
"executeInSequence": true,
"srcTO": {
"org.apache.cloudstack.storage.to.TemplateObjectTO": {
"accountId": 2,
"checksum": "44cd0e6330a59f031460bc18a40c95a2",
"displayText": "tiny",
"format": "QCOW2",
"hvm": true,
"hypervisorType": "KVM",
"id": 201,
"imageDataStore": {
"org.apache.cloudstack.storage.to.PrimaryDataStoreTO": {
"host": "localhost",
"id": 2,
"path": "/vg0",
"poolType": "CLVM",
"port": 0,
"uuid": "4e00fe65-c47e-4b85-afe8-4f97fb8689d0"
}
},
"name": "201-2-a04f958e-0aed-3642-960f-a675a2ee1c44",
"origUrl":
"http://mirrors.betterservers.com/template/tiny-centos-63.qcow2",
"path": "c8da0364-6f94-4c71-9c1d-74078e55bbb8",
"uuid": "7dcdb1fb-e7e3-4de0-bf93-13d3e6c4ade5"
}
},
"wait": 0
}
}
Also, format should be 'RAW', I believe, not 'QCOW2'.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira