You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Yoshikazu Nojima <ma...@ynojima.net> on 2014/03/20 05:56:36 UTC

Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

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

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 97b1cd7 
  api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java 67c9792 
  api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java 78101fb 
  api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
  api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
  api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
  client/WEB-INF/classes/resources/messages.properties 8329325 
  core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java 11a3324 
  engine/orchestration/pom.xml e5250c4 
  engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java a74d79c 
  engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java 49b2fc5 
  engine/schema/src/com/cloud/service/ServiceOfferingVO.java 3873dd2 
  engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
  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 5de8bd2 
  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 9b9bd13 
  server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
  server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java c692491 
  server/src/com/cloud/server/ConfigurationServerImpl.java b8da4c8 
  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 43010a3 
  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 4588a26 
  test/integration/smoke/test_volumes.py 719c824 
  ui/dictionary.jsp 074db7f 
  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


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On March 28, 2014, 12:19 a.m., Mike Tutkowski wrote:
> > api/src/com/cloud/offering/DiskOffering.java, line 20
> > <https://reviews.apache.org/r/19446/diff/3/?file=538047#file538047line20>
> >
> >     I haven't had a chance to look through your code yet, but have some high-level questions.
> >     
> >     Is this parameter intended on being utilized only on the hypervisor side? It looks like you referenced KVM and NFS. Does this mean the hypervisor would thinly, fully, or sparsely create the root or data disk based on this info?
> >     
> >     If so, it looks like it would be up to the storage adaptor in question (in the KVM agent code) to honor this parameter.
> >     
> >     The reason I ask is because the SolidFire (storage) plug-in behaves quite a bit differently from other storage plug-ins and I want to make sure I understand if this impacts me.
> >     
> >     In the SolidFire case, I dynamically create volumes on our SAN in response to VMs needing root disks or a data disk being attached to a VM for the first time (the storage is not pre-allocated).
> >     
> >     For KVM support, I developed a new storage adaptor (a generic iSCSI adaptor...not SolidFire specific) that runs in the KVM agent.
> >     
> >     Thanks for clarifying!

> Is this parameter intended on being utilized only on the hypervisor side? It looks like you referenced KVM and NFS. Does this mean the hypervisor would thinly, fully, or sparsely create the root or data disk based on this info?
Yes, your understanding is correct. This parameter is intened to be used by hypervisors to decide provisioning type(thin/fat/sparse) of volumes.

This paramaeter doesn't relate to the fact that volume creation is delayed to the timing of attach.


- Yoshikazu


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38853
-----------------------------------------------------------



api/src/com/cloud/offering/DiskOffering.java
<https://reviews.apache.org/r/19446/#comment71180>

    I haven't had a chance to look through your code yet, but have some high-level questions.
    
    Is this parameter intended on being utilized only on the hypervisor side? It looks like you referenced KVM and NFS. Does this mean the hypervisor would thinly, fully, or sparsely create the root or data disk based on this info?
    
    If so, it looks like it would be up to the storage adaptor in question (in the KVM agent code) to honor this parameter.
    
    The reason I ask is because the SolidFire (storage) plug-in behaves quite a bit differently from other storage plug-ins and I want to make sure I understand if this impacts me.
    
    In the SolidFire case, I dynamically create volumes on our SAN in response to VMs needing root disks or a data disk being attached to a VM for the first time (the storage is not pre-allocated).
    
    For KVM support, I developed a new storage adaptor (a generic iSCSI adaptor...not SolidFire specific) that runs in the KVM agent.
    
    Thanks for clarifying!


- Mike Tutkowski


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On March 28, 2014, 12:33 a.m., Mike Tutkowski wrote:
> > api/src/com/cloud/offering/DiskOffering.java, line 66
> > <https://reviews.apache.org/r/19446/diff/3/?file=538047#file538047line66>
> >
> >     By the way, it would really benefit CloudStack if we were to come up with a generic way of passing key/value pairs to storage plug-ins instead of adding new parameters to the compute and disk offerings as needed.
> >     
> >     In many cases, the parameters we add are only utilized on certain platforms and the multitude of options can become confusing to users.
> >     
> >     We have plans for such a feature in 4.5, but I'm not sure how far Chris (from NetApp) has made it in development.
> >     
> >     We should consider using his code for this property, if possible.

Sounds nice. If it comes in 4.5, I would like to consider utilizing that mechanism. Is a feature specification already written for it?


- Yoshikazu


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38855
-----------------------------------------------------------



api/src/com/cloud/offering/DiskOffering.java
<https://reviews.apache.org/r/19446/#comment71182>

    By the way, it would really benefit CloudStack if we were to come up with a generic way of passing key/value pairs to storage plug-ins instead of adding new parameters to the compute and disk offerings as needed.
    
    In many cases, the parameters we add are only utilized on certain platforms and the multitude of options can become confusing to users.
    
    We have plans for such a feature in 4.5, but I'm not sure how far Chris (from NetApp) has made it in development.
    
    We should consider using his code for this property, if possible.


- Mike Tutkowski


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> 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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38845
-----------------------------------------------------------


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

- Marcus Sorensen


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On March 27, 2014, 11:27 p.m., Marcus Sorensen wrote:
> > So far I'm getting this. I want to go back and test without the patch, because with LVM it should be 'lvcreate' follwed by 'qemu-img convert', and I want to see if it's due to the patch, or another change:
> > 
> > 2014-03-27 17:23:57,954 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) copyPhysicalDisk: disk size:194240512, virtualsize:1073741824 format:qcow2
> > 2014-03-27 17:23:57,954 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Executing: qemu-img create -o preallocation=off, -f raw /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 1073741824
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Exit value is 1
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Unknown option 'preallocation'Invalid options for file format 'raw'.
> > 2014-03-27 17:23:57,960 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Failed to create /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 due to a failed executing of qemu-img: Unknown option 'preallocation'Invalid options for file format 'raw'.
> 
> Marcus Sorensen wrote:
>     I assume it would break other raw types as well.
> 
> Marcus Sorensen wrote:
>     We may actually be relying on the libvirt volume create now, not the 'lvcreate' command, I'll need to look at that. I believe LVM works in the 4.4 branch, however.

Yes, it seems it is caused by changing the underlying API of createPhysicalDisk from libvirt to qemu-img since libvirt doesn't support preallcation option specification. I will make createPhysicalDisk aware storage type and if it is not NFS, I will make it use libvirt.
Also, I will fix the bug "preallocation option is specified to RAW format", which affects Ceph installation.


- Yoshikazu


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.

> On March 27, 2014, 11:27 p.m., Marcus Sorensen wrote:
> > So far I'm getting this. I want to go back and test without the patch, because with LVM it should be 'lvcreate' follwed by 'qemu-img convert', and I want to see if it's due to the patch, or another change:
> > 
> > 2014-03-27 17:23:57,954 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) copyPhysicalDisk: disk size:194240512, virtualsize:1073741824 format:qcow2
> > 2014-03-27 17:23:57,954 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Executing: qemu-img create -o preallocation=off, -f raw /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 1073741824
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Exit value is 1
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Unknown option 'preallocation'Invalid options for file format 'raw'.
> > 2014-03-27 17:23:57,960 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Failed to create /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 due to a failed executing of qemu-img: Unknown option 'preallocation'Invalid options for file format 'raw'.
> 
> Marcus Sorensen wrote:
>     I assume it would break other raw types as well.

We may actually be relying on the libvirt volume create now, not the 'lvcreate' command, I'll need to look at that. I believe LVM works in the 4.4 branch, however.


- Marcus


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.

> On March 27, 2014, 11:27 p.m., Marcus Sorensen wrote:
> > So far I'm getting this. I want to go back and test without the patch, because with LVM it should be 'lvcreate' follwed by 'qemu-img convert', and I want to see if it's due to the patch, or another change:
> > 
> > 2014-03-27 17:23:57,954 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) copyPhysicalDisk: disk size:194240512, virtualsize:1073741824 format:qcow2
> > 2014-03-27 17:23:57,954 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Executing: qemu-img create -o preallocation=off, -f raw /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 1073741824
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Exit value is 1
> > 2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Unknown option 'preallocation'Invalid options for file format 'raw'.
> > 2014-03-27 17:23:57,960 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Failed to create /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 due to a failed executing of qemu-img: Unknown option 'preallocation'Invalid options for file format 'raw'.

I assume it would break other raw types as well.


- Marcus


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38838
-----------------------------------------------------------


So far I'm getting this. I want to go back and test without the patch, because with LVM it should be 'lvcreate' follwed by 'qemu-img convert', and I want to see if it's due to the patch, or another change:

2014-03-27 17:23:57,954 DEBUG [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) copyPhysicalDisk: disk size:194240512, virtualsize:1073741824 format:qcow2
2014-03-27 17:23:57,954 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Executing: qemu-img create -o preallocation=off, -f raw /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 1073741824
2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Exit value is 1
2014-03-27 17:23:57,960 DEBUG [utils.script.Script] (agentRequest-Handler-1:null) Unknown option 'preallocation'Invalid options for file format 'raw'.
2014-03-27 17:23:57,960 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Failed to create /dev/vg0/5f554197-4993-4f46-8481-701ad482abe7 due to a failed executing of qemu-img: Unknown option 'preallocation'Invalid options for file format 'raw'.

- Marcus Sorensen


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.

> On April 10, 2014, 3:29 p.m., Marcus Sorensen wrote:
> > Ship It!

commit 11f5bdd78de4121331b07995800f6e9e7c22f2c0
Author: Marcus Sorensen <ma...@betterservers.com>
Date:   Thu Apr 10 09:23:04 2014 -0600

    CLOUDSTACK-6191 Add support for specifying volume provisioning
    type (thin, sparse, fat) in disk/compute offerings.

    Submitted-by: Yoshikazu Nojima <ma...@ynojima.net>
    Reviewed-by: Marcus Sorensen, Mike Tutowski


- Marcus


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


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review40019
-----------------------------------------------------------

Ship it!


Ship It!

- Marcus Sorensen


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by ASF Subversion and Git Services <as...@urd.zones.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review40017
-----------------------------------------------------------


Commit 11f5bdd78de4121331b07995800f6e9e7c22f2c0 in cloudstack's branch refs/heads/master from Marcus Sorensen
[ https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;h=11f5bdd ]

CLOUDSTACK-6191 Add support for specifying volume provisioning
type (thin, sparse, fat) in disk/compute offerings.

Submitted-by: Yoshikazu Nojima <ma...@ynojima.net>
Reviewed-by: Marcus Sorensen, Mike Tutowski


- ASF Subversion and Git Services


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review47133
-----------------------------------------------------------


Thanks! Also, thanks for opening a JIRA ticket. We can track this going forward with that ticket.

- Mike Tutkowski


On April 9, 2014, 4:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 4:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.

> On April 10, 2014, 5:55 a.m., Marcus Sorensen wrote:
> > I verified that CLVM, Local, and NFS storage all work. From the agent side the code looks fine. I'll defer to Mike regarding the offering changes since he's done some work there before.

The Disk Offering logic seems to follow our standard patterns.

I know at one point I suggested we might take advantage of a new generic-properties concept (like passing key/value pairs around instead of putting new columns in DB tables).

As it turns out, though, the person who was working on that feature has recently changed companies and no longer has the time to pursue that development work.

I expect to pick up that work, but it won't be in place for a least a release or two, so we should just go forward (as this code does) with following our standard patterns for adding such a property.

Unless anyone else has any comments regarding this review, I am OK with it going into master.


- Mike


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


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review39986
-----------------------------------------------------------


I verified that CLVM, Local, and NFS storage all work. From the agent side the code looks fine. I'll defer to Mike regarding the offering changes since he's done some work there before.

- Marcus Sorensen


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review47040
-----------------------------------------------------------


Hi Noji,

Is it possible for you to take a look at this issue?

If you click on the Storage tab in the GUI when you should have one or more volumes, you'll see an error displayed.

It appears we're missing several columns in the volume_view.

I would recommend going back to previous SQL scripts to find the last time we drop and re-create volume_view and use that volume_view as a starting point for your new volume_view. You can then add on the additional columns that are necessary for your use case.

Does that sounds good? I could log a JIRA ticket for you, if that would help?

Thanks!
Mike

- Mike Tutkowski


On April 9, 2014, 4:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 4:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.

> On April 10, 2014, 12:16 a.m., Marcus Sorensen wrote:
> > engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java, line 1270
> > <https://reviews.apache.org/r/19446/diff/3-4/?file=538059#file538059line1270>
> >
> >     Building to test now.
> >     
> >     Does this patch contain changes that are unrelated to the feature? Or are changes such as this integral to the function of the feature?

Sorry, I don't see this in the final patch. I think I clicked on the diff between r3 and r4.


- Marcus


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


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review39968
-----------------------------------------------------------



engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
<https://reviews.apache.org/r/19446/#comment72750>

    Building to test now.
    
    Does this patch contain changes that are unrelated to the feature? Or are changes such as this integral to the function of the feature?


- Marcus Sorensen


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review47037
-----------------------------------------------------------


It looks like we're missing two columns in volume_view:

+        vm_template.name template_name,
+        vm_template.display_text template_display_text,

I noticed this in the GUI when you go to the Storage tab to view the volumes (you get an error).

I plan to check in a fix soon.

- Mike Tutkowski


On April 9, 2014, 4:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 4:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On July 1, 2014, 6:19 p.m., Mike Tutkowski wrote:
> > http://i.imgur.com/PW7lqbs.png
> > 
> > Six fields have been removed from the volume_view and five of those six are still in use.

Hi Mike,
Thank you for let me know.
I reproduced the issue.

It seems this commit made change to the schema of 4.4 after I checked in the upgrade script from 4.4 to 4.5, but he didn't apply his change to the upgrade script from 4.4 to 4.5.
https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=blobdiff;f=setup/db/db/schema-430to440.sql;h=3b525c41a1befd94c5ffc324c357b566606a97d0;hp=e53c97090b18613e92e2a7fd4503cf6e1233fd88;hb=7ae784b;hpb=6c8a0a1f968c2679ea0ca0c776e680318b3d08cf

I will work on this issue.
I filed this issue in this ticket : CLOUDSTACK-7032

Thanks!


- Yoshikazu


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


On April 9, 2014, 10:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 10:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review47114
-----------------------------------------------------------


http://i.imgur.com/PW7lqbs.png

Six fields have been removed from the volume_view and five of those six are still in use.

- Mike Tutkowski


On April 9, 2014, 4:58 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated April 9, 2014, 4:58 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 c7d6da1 
>   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 45c15da 
>   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 c5e0983 
>   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 beb5e10 
>   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 604bdae 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
>   plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
>   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 89707c9 
>   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 30afd7b 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
>   server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
>   server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
>   server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
>   server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
>   server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
>   server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
>   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 ba6bdce 
>   ui/scripts/docs.js df4bcf0 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/
-----------------------------------------------------------

(Updated April 9, 2014, 10:58 p.m.)


Review request for cloudstack, Mike Tutkowski, Marcus Sorensen, and Wido den Hollander.


Changes
-------

Now it works with local storage (confirmed).
I suppose it works with CLVM too (preallocation option will be discarded).


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 (updated)
-----

  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 c7d6da1 
  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 45c15da 
  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 c5e0983 
  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 beb5e10 
  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 604bdae 
  plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java 61d90e9 
  plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java 605d154 
  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 89707c9 
  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 30afd7b 
  server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
  server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java 3cd3e80 
  server/src/com/cloud/server/ConfigurationServerImpl.java 13135b0 
  server/src/com/cloud/storage/VolumeApiServiceImpl.java c0741c5 
  server/src/com/cloud/test/DatabaseConfig.java 8d7b42a 
  server/test/com/cloud/storage/VolumeApiServiceImplTest.java 0be6f3a 
  server/test/com/cloud/vm/DeploymentPlanningManagerImplTest.java fb63766 
  server/test/com/cloud/vm/UserVmManagerTest.java 927d5e3 
  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 ba6bdce 
  ui/scripts/docs.js df4bcf0 
  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


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38852
-----------------------------------------------------------


I have verified that LVM still works without this patch.

- Marcus Sorensen


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On March 28, 2014, 1:46 a.m., Mike Tutkowski wrote:
> > api/src/com/cloud/storage/Storage.java, line 94
> > <https://reviews.apache.org/r/19446/diff/3/?file=538048#file538048line94>
> >
> >     Not a big deal, but do we want to maybe make constants for "thin", "sparse" and "fat" and use them in the getProvisioningType method and in assigning values to THIN, SPARSE, and FAT?

Yes, will do.


- Yoshikazu


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


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38862
-----------------------------------------------------------



api/src/com/cloud/storage/Storage.java
<https://reviews.apache.org/r/19446/#comment71188>

    Not a big deal, but do we want to maybe make constants for "thin", "sparse" and "fat" and use them in the getProvisioningType method and in assigning values to THIN, SPARSE, and FAT?


- Mike Tutkowski


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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.
-----------------------------------------------------------
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.


Changes
-------

rebase to origin/master


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 (updated)
-----

  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


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38122
-----------------------------------------------------------



engine/orchestration/pom.xml
<https://reviews.apache.org/r/19446/#comment70088>

    Thank you for pointing out. It seems it is by mistake. I made it comment in when I implemented the feature as global setting option.


- Yoshikazu Nojima


On March 21, 2014, 5:02 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated March 21, 2014, 5:02 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 78101fb 
>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
>   api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
>   client/WEB-INF/classes/resources/messages.properties 8329325 
>   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 3873dd2 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
>   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 5de8bd2 
>   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 4781010 
>   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 4588a26 
>   test/integration/smoke/test_volumes.py 719c824 
>   ui/dictionary.jsp 074db7f 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/
-----------------------------------------------------------

(Updated March 21, 2014, 5:02 p.m.)


Review request for cloudstack, Mike Tutkowski, Marcus Sorensen, and Wido den Hollander.


Changes
-------

I corrected the unnecessary comment in.


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 (updated)
-----

  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 78101fb 
  api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
  api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
  api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
  client/WEB-INF/classes/resources/messages.properties 8329325 
  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 3873dd2 
  engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
  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 5de8bd2 
  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 4781010 
  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 4588a26 
  test/integration/smoke/test_volumes.py 719c824 
  ui/dictionary.jsp 074db7f 
  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


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Yoshikazu Nojima <ma...@ynojima.net>.

> On March 21, 2014, 5:08 a.m., Marcus Sorensen wrote:
> > Looks good for the most part, however due to the major changes in LibvirtStorageAdaptor I'd like to run through some testing (particularly on LVM). It may take me a few days to get to that. Mike may also want to chime in since he did the iops changes to disk offerings and should be familiar with all of the mgmt server changes required for disk offering features.

I see. Since I have only executed testing on a test environment with CloudStack/KVM/NFS installation, it would be appreciated that you execute testing on your CLVM environment.


- Yoshikazu


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


On March 21, 2014, 5:02 p.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated March 21, 2014, 5:02 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 78101fb 
>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
>   api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
>   client/WEB-INF/classes/resources/messages.properties 8329325 
>   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 3873dd2 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
>   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 5de8bd2 
>   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 4781010 
>   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 4588a26 
>   test/integration/smoke/test_volumes.py 719c824 
>   ui/dictionary.jsp 074db7f 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38055
-----------------------------------------------------------


Looks good for the most part, however due to the major changes in LibvirtStorageAdaptor I'd like to run through some testing (particularly on LVM). It may take me a few days to get to that. Mike may also want to chime in since he did the iops changes to disk offerings and should be familiar with all of the mgmt server changes required for disk offering features.

- Marcus Sorensen


On March 20, 2014, 4:56 a.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated March 20, 2014, 4:56 a.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 97b1cd7 
>   api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java 67c9792 
>   api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java 78101fb 
>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
>   api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
>   client/WEB-INF/classes/resources/messages.properties 8329325 
>   core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java 11a3324 
>   engine/orchestration/pom.xml e5250c4 
>   engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java a74d79c 
>   engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java 49b2fc5 
>   engine/schema/src/com/cloud/service/ServiceOfferingVO.java 3873dd2 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
>   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 5de8bd2 
>   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 9b9bd13 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java c692491 
>   server/src/com/cloud/server/ConfigurationServerImpl.java b8da4c8 
>   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 43010a3 
>   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 4588a26 
>   test/integration/smoke/test_volumes.py 719c824 
>   ui/dictionary.jsp 074db7f 
>   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
> 
>


Re: Review Request 19446: CLOUDSTACK-6191: Volume provisioning type option

Posted by Marcus Sorensen <sh...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19446/#review38053
-----------------------------------------------------------



engine/orchestration/pom.xml
<https://reviews.apache.org/r/19446/#comment70021>

    Is this applicable to the change, or something accidentally committed?


- Marcus Sorensen


On March 20, 2014, 4:56 a.m., Yoshikazu Nojima wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19446/
> -----------------------------------------------------------
> 
> (Updated March 20, 2014, 4:56 a.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 97b1cd7 
>   api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java 67c9792 
>   api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java 78101fb 
>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 0894eec 
>   api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java d371f9a 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 27e95de 
>   client/WEB-INF/classes/resources/messages.properties 8329325 
>   core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java 11a3324 
>   engine/orchestration/pom.xml e5250c4 
>   engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java a74d79c 
>   engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java 49b2fc5 
>   engine/schema/src/com/cloud/service/ServiceOfferingVO.java 3873dd2 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java d1a48d2 
>   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 5de8bd2 
>   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 9b9bd13 
>   server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 0512096 
>   server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java c692491 
>   server/src/com/cloud/server/ConfigurationServerImpl.java b8da4c8 
>   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 43010a3 
>   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 4588a26 
>   test/integration/smoke/test_volumes.py 719c824 
>   ui/dictionary.jsp 074db7f 
>   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
> 
>