On 02/28/2013 10:53 AM, Rajesh Battala wrote:
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.

Indeed, resizevolume.sh allows QCOW2 files to be shrunk.

BUT, I just tried it on my desktop and that fails:

wido@wido-desktop:~$ qemu-img create -f qcow2 volume.qcow2 50G
Formatting 'volume.qcow2', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536
wido@wido-desktop:~$ qemu-img resize volume.qcow2 -20G
qemu-img: This image format does not support resize
wido@wido-desktop:~$

On my desktop at the office it works, but that is running a manually compiled Qemu version.

So the stock Ubuntu 12.04 Qemu version does not support shrinking QCOW2 files. Not sure about CentOS/RHEL 6.3.

Wido



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


[]

Reply via email to