Hi,

Anyone can advise on below? Or is it confirmed that resizing down
(shrinking) the data-disk is no longer supported on CloudStack with KVM,
libvirt and Ceph RBD storage?

Looking forward to your reply, thank you.

Cheers.



On Thu, Aug 16, 2018 at 6:07 PM, Cloud List <cloud-l...@sg.or.id> wrote:

> Hi,
>
> We are using CloudStack 4.8.1.1 with QEMU/KVM hypervisor, libvirt and Ceph
> RBD storage.
>
> We just realised that we are not able to resize down any of our
> data-disks, and we are sure that we were able to do that before. Not too
> sure since when the problem started to happen.
>
> When we tried to resize a data disk of a VM on CloudStack admin panel by
> stopping the VM and then go to Instance > VM hostname > View Volumes >
> DATA-XXXX > Resize volume > Select a disk offering with lower storage size
> > Tick on "Shrink OK" > click OK, we get this error messages as a pop-up on
> the CloudStack admin panel:
>
> ====
> org.libvirt.LibvirtException: invalid argument: can't shrink capacity
> below existing allocation
> ====
>
> On management server logs:
>
> ====
> 2018-08-16 17:52:31,541 ERROR [c.c.a.ApiAsyncJobDispatcher]
> (API-Job-Executor-99:ctx-1392adbe job-69196) (logid:2f71074c) Unexpected
> exception while executing org.apache.cloudstack.api.command.admin.volume.
> ResizeVolumeCmdByAdmin
> com.cloud.utils.exception.CloudRuntimeException:
> org.libvirt.LibvirtException: invalid argument: can't shrink capacity below
> existing allocation
>         at com.cloud.storage.VolumeApiServiceImpl.orchestrateResizeVolume(
> VolumeApiServiceImpl.java:1213)
>         at com.cloud.storage.VolumeApiServiceImpl.orchestrateResizeVolume(
> VolumeApiServiceImpl.java:2920)
>         at sun.reflect.GeneratedMethodAccessor1400.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at com.cloud.vm.VmWorkJobHandlerProxy.handleVmWorkJob(
> VmWorkJobHandlerProxy.java:107)
>         at com.cloud.storage.VolumeApiServiceImpl.handleVmWorkJob(
> VolumeApiServiceImpl.java:2944)
>         at sun.reflect.GeneratedMethodAccessor1396.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.springframework.aop.support.AopUtils.
> invokeJoinpointUsingReflection(AopUtils.java:317)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.
> invokeJoinpoint(ReflectiveMethodInvocation.java:183)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.
> proceed(ReflectiveMethodInvocation.java:150)
>         at org.springframework.aop.interceptor.
> ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.
> proceed(ReflectiveMethodInvocation.java:172)
>         at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:204)
>         at com.sun.proxy.$Proxy194.handleVmWorkJob(Unknown Source)
>         at com.cloud.vm.VmWorkJobDispatcher.runJob(
> VmWorkJobDispatcher.java:102)
>         at org.apache.cloudstack.framework.jobs.impl.
> AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:554)
>         at org.apache.cloudstack.managed.context.
> ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
>         at org.apache.cloudstack.managed.context.impl.
> DefaultManagedContext$1.call(DefaultManagedContext.java:56)
>         at org.apache.cloudstack.managed.context.impl.
> DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
>         at org.apache.cloudstack.managed.context.impl.
> DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
>         at org.apache.cloudstack.managed.context.
> ManagedContextRunnable.run(ManagedContextRunnable.java:46)
>         at org.apache.cloudstack.framework.jobs.impl.
> AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:502)
>         at java.util.concurrent.Executors$RunnableAdapter.
> call(Executors.java:471)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1145)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:745)
> 2018-08-16 17:52:31,543 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl]
> (API-Job-Executor-99:ctx-1392adbe job-69196) (logid:2f71074c) Complete
> async job-69196, jobStatus: FAILED, resultCode: 530, result:
> org.apache.cloudstack.api.response.Except
> ionResponse/null/{"uuidList":[],"errorcode":530,"errortext":"org.libvirt.LibvirtException:
> invalid argument: can\u0027t shrink capacity below existing allocation"}
> ====
>
> On the hypervisor host's CloudStack agent log:
>
> ====
> 2018-08-16 17:52:29,790 DEBUG [cloud.agent.Agent]
> (agentRequest-Handler-2:null) Request:Seq 76-5194057745242603743:  { Cmd ,
> MgmtId: 14038008226984, via: 76, Ver: v1, Flags: 100011,
> [{"com.cloud.agent.api.storage.ResizeVolumeCommand":{"p
> ath":"0de865cf-cbd1-4b7b-8052-929ea7ebfc80","pool":{"id":
> 214,"uuid":"d433809b-01ea-3947-ba0f-48077244e4d6","host":"
> xxxx-yyy.xxxxxxxxx.com","path":"xxxxxxxxx-yy-88","userInfo":"admin:
> xxxxxxxxxxxxxx","port":
> 6789,"type":"RBD"},"vmInstance":"i-3149-5290-VM","newSize":21474836480,"
> currentSize":42949672960,"shrinkOk":true,"wait":0}}] }
> 2018-08-16 17:52:29,790 DEBUG [cloud.agent.Agent]
> (agentRequest-Handler-2:null) Processing command:
> com.cloud.agent.api.storage.ResizeVolumeCommand
> 2018-08-16 17:52:29,790 INFO  [kvm.storage.LibvirtStorageAdaptor]
> (agentRequest-Handler-2:null) Trying to fetch storage pool
> d433809b-01ea-3947-ba0f-48077244e4d6 from libvirt
> 2018-08-16 17:52:29,790 DEBUG [kvm.resource.LibvirtConnection]
> (agentRequest-Handler-2:null) Looking for libvirtd connection at:
> qemu:///system
> 2018-08-16 17:52:29,794 DEBUG [kvm.storage.LibvirtStorageAdaptor]
> (agentRequest-Handler-2:null) Succesfully refreshed pool
> d433809b-01ea-3947-ba0f-48077244e4d6 Capacity: 68604993286144 Used:
> 17779163430778 Available: 32956092846080
> 2018-08-16 17:52:30,002 DEBUG [resource.wrapper.
> LibvirtResizeVolumeCommandWrapper] (agentRequest-Handler-2:null) Volume
> xxxxxxxxx-yy-88/0de865cf-cbd1-4b7b-8052-929ea7ebfc80 is on a RBD storage
> pool. No need to query for additional inf
> ormation.
> 2018-08-16 17:52:30,002 DEBUG [resource.wrapper.
> LibvirtResizeVolumeCommandWrapper] (agentRequest-Handler-2:null) Resizing
> volume: xxxxxxxxx-yy-88/0de865cf-cbd1-4b7b-8052-929ea7ebfc80,
> 42949672960,21474836480,NOTIFYONLY,i-3149-5290-VM,t
> rue
> 2018-08-16 17:52:30,002 DEBUG [resource.wrapper.
> LibvirtResizeVolumeCommandWrapper] (agentRequest-Handler-2:null) Volume
> xxxxxxxxx-yy-88/0de865cf-cbd1-4b7b-8052-929ea7ebfc80 can be resized by
> libvirt. Asking libvirt to resize the volum
> e.
> 2018-08-16 17:52:30,002 DEBUG [kvm.resource.LibvirtConnection]
> (agentRequest-Handler-2:null) Looking for libvirtd connection at:
> qemu:///system
> 2018-08-16 17:52:30,003 DEBUG [cloud.agent.Agent]
> (agentRequest-Handler-2:null) Seq 76-5194057745242603743:  { Ans: , MgmtId:
> 14038008226984, via: 76, Ver: v1, Flags: 10, [{"com.cloud.agent.api.
> storage.ResizeVolumeAnswer":{"newSize":0,"r
> esult":false,"details":"org.libvirt.LibvirtException: invalid argument:
> can't shrink capacity below existing allocation","wait":0}}] }
> ====
>
> On the libvirtd.log:
>
> ====
> 2018-08-16 09:52:30.003+0000: 3599: error : storageVolResize:2164 :
> invalid argument: can't shrink capacity below existing allocation
> ====
>
> We are using libvirtd (libvirt) 1.2.3. Not too sure if it's the issue with
> the libvirt version we are using?
>
> Not too sure what existing allocation it refers to, is there any settings
> under CloudStack related to this?
>
> Resizing up a disk works fine, only resizing down will have this problem.
>
> Anyone encountered this problem before? Any advice is greatly appreciated.
>
> Looking forward to your reply, thank you.
>
> Cheers.
>

Reply via email to