> On March 27, 2014, 11:41 p.m., Marcus Sorensen wrote:
> > I'm also seeing some strange behavior on normal qcow2 (local) storage. When 
> > it is installing the template to primary storage, in the past it has 
> > detected we are going from qcow2 to qcow2 and simply copies the image 
> > rather than going the costly route of 'qemu-img convert'. It still does 
> > that, but prior to the cp it is creating a new qcow2, then copying over it 
> > with the template. So if I had to guess, the LVM might actually work if it 
> > didn't try to qemu-img create before doing the regular template copy that 
> > is appropriate for the storage type. I think we can skip the "qemu-img 
> > create" in this template install code path.
> > 
> > 2014-03-27 17:37:35,949 DEBUG [kvm.storage.KVMStorageProcessor] 
> > (agentRequest-Handler-3:null) Copying template to primary storage, template 
> > format is qcow2
> > 2014-03-27 17:37:35,969 DEBUG [kvm.storage.LibvirtStorageAdaptor] 
> > (agentRequest-Handler-3:null) copyPhysicalDisk: disk size:194240512, 
> > virtualsize:1073741824 format:qcow2
> > 2014-03-27 17:37:35,969 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Executing: qemu-img create -o 
> > preallocation=off, -f qcow2 
> > /var/lib/libvirt/images/11b71cf8-382f-4b38-a2b0-45e148a010e7 1073741824
> > 2014-03-27 17:37:36,019 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Execution is successful.
> > 2014-03-27 17:37:36,019 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Formatting 
> > '/var/lib/libvirt/images/11b71cf8-382f-4b38-a2b0-45e148a010e7', fmt=qcow2 
> > size=1073741824 encryption=off cluster_size=65536 preallocation='off'
> > 
> > 2014-03-27 17:37:36,020 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Executing: qemu-img info --output json 
> > /var/lib/libvirt/images/11b71cf8-382f-4b38-a2b0-45e148a010e7
> > 2014-03-27 17:37:36,031 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Execution is successful.
> > 2014-03-27 17:37:36,032 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Executing: qemu-img info --output json 
> > /mnt/939559aa-1bac-310a-a2ce-205336bdb136/2d7d88a8-6233-3ce1-9292-bc805d2e92e5.qcow2
> > 2014-03-27 17:37:36,040 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Execution is successful.
> > 2014-03-27 17:37:36,041 DEBUG [utils.script.Script] 
> > (agentRequest-Handler-3:null) Executing: /bin/bash -c cp -f 
> > /mnt/939559aa-1bac-310a-a2ce-205336bdb136/2d7d88a8-6233-3ce1-9292-bc805d2e92e5.qcow2
> >  /var/lib/libvirt/images/11b71cf8-382f-4b38-a2b0-45e148a010e7

I think qcow2 image is created prior to the cp even without this patch, but 
without this patch, createPhysicalDisk calls libvirt and it doesn't output 
output the creation to a log.
I'm not sure why current implementation create a volume and override it, but it 
it is not necessary, I will erase it.


- Yoshikazu


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38845
-----------------------------------------------------------


On March 26, 2014, 11:24 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated March 26, 2014, 11:24 p.m.)
> 
> 
> Review request for cloudstack, Mike Tutkowski, Marcus Sorensen, and Wido den 
> Hollander.
> 
> 
> Bugs: CLOUDSTACK-6191
>     https://issues.apache.org/jira/browse/CLOUDSTACK-6191
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> purpose:
> Thin provisioning of a volume saves consumption of a storage, and fat 
> provisioning minimizes IOPS performance overhead.
> This feature adds a disk offering parameter to provide users an option to 
> select how to provision volumes.
> Especially, qcow2 format is known that its performance can be improved by 
> deploying a volume as a sparse file.[1] This feature also supports sparse 
> provisioning.
> 
>     
> http://itscblog.tamu.edu/improve-disk-io-performance-in-kvm/#.232---preallocation
> 
> Scope:
> First, start with KVM+NFS installation.
> Leave rooms to support other hypervisors.
> 
> For more details please refer fs: 
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Volume+provisioning+type+option
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/offering/DiskOffering.java 4641b9a 
>   api/src/com/cloud/storage/Storage.java 8ab2463 
>   api/src/com/cloud/storage/Volume.java 304dbcf 
>   api/src/com/cloud/vm/DiskProfile.java 5fdacf2 
>   api/src/org/apache/cloudstack/api/ApiConstants.java 87fa8ee 
>   
> api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
>  67c9792 
>   
> api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
>  6cd5d84 
>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 
> 91bd441 
>   api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java 
> 764ade5 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
>   client/WEB-INF/classes/resources/messages.properties 8abe874 
>   core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java 11a3324 
>   
> engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
>  4ebde04 
>   engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java 
> 49b2fc5 
>   engine/schema/src/com/cloud/service/ServiceOfferingVO.java 3be0aaa 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java 99214b2 
>   engine/schema/src/com/cloud/storage/VolumeVO.java 9f27c23 
>   
> engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
>  385f8e6 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
>  1d7d1b2 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtStorageVolumeDef.java
>  35777cf 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStorageAdaptor.java
>  761bb37 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/IscsiAdmStoragePool.java
>  2cecfa3 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePool.java
>  ca3d32f 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStoragePoolManager.java
>  583d48a 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
>  9813389 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
>  c1a5043 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java
>  550bd01 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/StorageAdaptor.java
>  c751aab 
>   plugins/hypervisors/kvm/src/org/apache/cloudstack/utils/qemu/QemuImg.java 
> 4bec375 
>   
> plugins/hypervisors/kvm/test/org/apache/cloudstack/utils/qemu/QemuImgTest.java
>  8bdff4d 
>   
> plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
>  2a7bcac 
>   
> plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
>  aa763d5 
>   
> plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMManagerTest.java
>  f418586 
>   
> plugins/network-elements/internal-loadbalancer/test/org/apache/cloudstack/internallbvmmgr/InternalLBVMServiceTest.java
>  62ca09b 
>   server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java bf28c03 
>   server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java 7fcc5c6 
>   server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java 8a0431b 
>   server/src/com/cloud/api/query/vo/DiskOfferingJoinVO.java e3e0a9e 
>   server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java dbeb530 
>   server/src/com/cloud/api/query/vo/VolumeJoinVO.java 8165d68 
>   server/src/com/cloud/configuration/ConfigurationManagerImpl.java bdceed7 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 
> c692491 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java 5ffa99b 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java b67c164 
>   server/test/org/apache/cloudstack/service/ServiceOfferingVOTest.java 
> a3f8afb 
>   
> services/secondary-storage/controller/src/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
>  f8edefa 
>   setup/db/db/schema-440to450.sql 2bd5386 
>   test/integration/smoke/test_deploy_vm_provisioningtype_sparse.py 
> PRE-CREATION 
>   test/integration/smoke/test_disk_offerings.py 4c8a34c 
>   test/integration/smoke/test_volumes.py 411ecf1 
>   ui/dictionary.jsp ebe71b6 
>   ui/scripts/configuration.js 7b2f4e9 
>   ui/scripts/docs.js 32237f3 
>   ui/scripts/storage.js e69a07e 
> 
> Diff: https://reviews.apache.org/r/19446/diff/
> 
> 
> Testing
> -------
> 
> Compute offering creation
> - create a compute offering with "provisioningtype="thin"
> - create a compute offering with "provisioningtype="sparse"
> - create a compute offering with "provisioningtype="fat"
> Disk offering creation
> - create a disk offering with "provisioningtype=thin"
> - create a disk offering with "provisioningtype=sparse"
> - create a disk offering with "provisioningtype=fat"
> New VM deployment
> - deploy a VM with a "thin" type compute offering, and check the root volume 
> is provisioned as s thin disk
> - deploy a VM with a "sparse" type compute offering, and check the root 
> volume is provisioned as s sparse disk
> - deploy a VM with a "fat" type compute offering, and check the root volume 
> is provisioned as s fat disk
> New data disk creation and attachment
> - create and attach "thin" type volume to a VM, and check the data volume is 
> provisioned as s thin disk
> - create and attach "sparse" type volume to a VM, and check the data volume 
> is provisioned as s sparse disk
> - create and attach "fat" type volume to a VM, and check the data volume is 
> provisioned as s fat disk
> 
> 
> Thanks,
> 
> Yoshikazu Nojima
> 
>

Reply via email to