When I was going through the source and resizevolume.sh, In the libvirtcomputing resources, we are restricting to resize only for "raw" disks. But in the resizevolume.sh which will actually do the resizing of the disks, this file has the function resizeqcow2() which is actually has the capability to resize qcow2 image.
>From this source http://linux.die.net/man/1/qemu-img qemu-img resize supports qcow2 image format also. Am not sure why we are restricting not to convert qcow2 images. Thanks Rajesh Battala > -----Original Message----- > From: Wido den Hollander [mailto:w...@widodh.nl] > Sent: Thursday, February 28, 2013 3:05 PM > To: cloudstack-dev@incubator.apache.org > Subject: Re: [ACS41]Unable to shrink volumes of type QCOW2 > > > > On 02/28/2013 07:39 AM, Marcus Sorensen wrote: > > On Wed, Feb 27, 2013 at 6:58 AM, Wido den Hollander <w...@widodh.nl> > wrote: > >> On 02/27/2013 12:45 PM, Sailaja Mada wrote: > >>> > >>> Hi, > >>> > >>> Out of my curiosity , I tried to resize the volume with shrink > >>> option set to true . It failed to resize volume from 20 GB to 10 GB > >>> . This is with KVM > >>> 6.3 hypervisor. Do we have support this feature with KVM ? > >>> > >>> 2013-02-27 17:01:55,052 DEBUG [cloud.api.ApiServlet] > >>> (catalina-exec-1:null) ===END=== 10.144.7.13 -- GET > >>> command=resizeVolume&id=ff94b87c-973c-4698-9fd2- > 4a1375f5a7c0&shrinko > >>> k=true&diskofferingid=8c61068f-f997-48f5-a8ee-dfe8fd3571f2&size=10&r > >>> > esponse=json&sessionkey=Ijl3uimE7kcZYn0P%2FK4AEvh%2B3fw%3D&_=136196 > 4 > >>> 737075 > >>> 2013-02-27 17:01:55,054 DEBUG [cloud.async.AsyncJobManagerImpl] > >>> (Job-Executor-66:job-128) Executing > >>> org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd for > >>> job-128 > >>> 2013-02-27 17:01:55,078 DEBUG [agent.transport.Request] > >>> (Job-Executor-66:job-128) Seq 1-648544436: Sending { Cmd , MgmtId: > >>> 55487956346259, via: 1, Ver: v1, Flags: 100011, > >>> [{"storage.ResizeVolumeCommand":{"path":"d6a5ce3c-ca40-426d-b0bd- > 703 > >>> 567eda58f","pool":{"id":200,"uuid":"17700ab0-df5a-3047-a631-588d93dd > >>> 749a","host":"10.102.192.100","path":"/cpg_vol/sailaja/asf41kvmps"," > >>> port":2049,"type":"NetworkFilesystem"},"vmInstance":"none","newSize" > >>> :10737418240,"currentSize":21474836480,"shrinkOk":true,"wait":0}}] > >>> } > >>> 2013-02-27 17:01:55,192 DEBUG [agent.transport.Request] > >>> (AgentManager-Handler-10:null) Seq 1-648544436: Processing: { Ans: > >>> , > >>> MgmtId: 55487956346259, via: 1, Ver: v1, Flags: 10, > >>> [{"storage.ResizeVolumeAnswer":{"newSize":0,"result":false,"details" > >>> :"Unable to shrink volumes of type QCOW2","wait":0}}] } > >>> 2013-02-27 17:01:55,192 DEBUG [agent.transport.Request] > >>> (Job-Executor-66:job-128) Seq 1-648544436: Received: { Ans: , MgmtId: > >>> 55487956346259, via: 1, Ver: v1, Flags: 10, { ResizeVolumeAnswer } } > >>> 2013-02-27 17:01:55,192 DEBUG [cloud.storage.StorageManagerImpl] > >>> (Job-Executor-66:job-128) Resize: returned 'Unable to shrink volumes > >>> of type QCOW2' > >>> 2013-02-27 17:01:55,201 DEBUG [cloud.async.AsyncJobManagerImpl] > >>> (Job-Executor-66:job-128) Complete async job-128, jobStatus: 2, > resultCode: > >>> 530, result: Error Code: 530 Error text: Failed to resize volume > >>> 2013-02-27 17:01:58,073 DEBUG [cloud.api.ApiServlet] > >>> (catalina-exec-17:null) ===START=== 10.144.7.13 -- GET > >>> command=queryAsyncJobResult&jobId=68fdb060-343c-4a64-8ccd- > ce738da07a > >>> > 9b&response=json&sessionkey=Ijl3uimE7kcZYn0P%2FK4AEvh%2B3fw%3D&_=13 > 6 > >>> 1964740184 > >>> 2013-02-27 17:01:58,081 DEBUG [cloud.async.AsyncJobManagerImpl] > >>> (catalina-exec-17:null) Async job-128 completed > >>> 2013-02-27 17:01:58,085 DEBUG [cloud.api.ApiServlet] > >>> (catalina-exec-17:null) ===END=== 10.144.7.13 -- GET > >>> command=queryAsyncJobResult&jobId=68fdb060-343c-4a64-8ccd- > ce738da07a > >>> > 9b&response=json&sessionkey=Ijl3uimE7kcZYn0P%2FK4AEvh%2B3fw%3D&_=13 > 6 > >>> 1964740184 > >>> > >>> > >> > >> Checking the code I found this in LibvirtComputingResource: > >> > >> boolean shrinkOk = cmd.getShrinkOk(); > >> > >> } else if (type.equals("QCOW2") && shrinkOk) { > >> return new ResizeVolumeAnswer(cmd, false, "Unable to shrink > >> volumes of type " + type); } > >> > >> Seems like a logical mistake? Shouldn't that be !shrinkOk? > >> > > > > Not a logical mistake. It's saying if you are trying to shrink a qcow2 > > image, it's not supported. > > > > Heh? QCOW2 does support shrinking? So why isn't it allowed then? > > Wido > > >> Wido > >> > >>> Thanks, > >>> Sailaja.M > >>> > >> []