[
https://issues.apache.org/jira/browse/CLOUDSTACK-6146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13912638#comment-13912638
]
ASF subversion and git services commented on CLOUDSTACK-6146:
-------------------------------------------------------------
Commit 88b576164789391430d779af74ed3a7ee3be87fb in cloudstack's branch
refs/heads/master from [~likithas]
[ https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;h=88b5761 ]
CLOUDSTACK-6146. [VMware] [ESXi 5.5] Live VM migration of an already migrated
VM (with storage) across clusters fails
In vCenter 5.5, once a volume is migrated the VMDKs are renamed to match the
name of the VM.
Update volume path for every volume belonging to the VM to the corresponding
new disk filename.
Conflicts:
plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
plugins/hypervisors/vmware/src/org/apache/cloudstack/storage/motion/VmwareStorageMotionStrategy.java
> subsequent migration fails as cloud stack renames files after 1st migration
> ---------------------------------------------------------------------------
>
> Key: CLOUDSTACK-6146
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-6146
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Affects Versions: 4.3.0
> Environment: ESXi 5.5
> Reporter: praveena palaniswamy
> Assignee: Likitha Shetty
> Priority: Critical
> Fix For: 4.3.0
>
>
> CLoudplatform/Cloudstack, renames the files after first successful migration
> and therefore, subsequent migration fails. This happens with
> CloudPlatform 4.3
> Hypervisor: ESXi5.5
> 1. File name gets renamed after migration, which inturn fails subsequent
> migrations (CLOUDSTACK issue)
> a. Before migration of data disk the contents of VM folder can be seen
> below
> [root@host148 i-2-3-VM]# ls -l
> total 40060
> -rw-------. 1 root root 3221225472 Feb 13 2014
> 7868703c4e8345a58d568ece092baa0e-flat.vmdk
> -rw-------. 1 root root 518 Feb 13 06:05
> 7868703c4e8345a58d568ece092baa0e.vmdk
> [root@host148 i-2-3-VM]#
> b. After migration, cloudstack renames the file name
> 7868703c4e8345a58d568ece092baa0e.vmdk to i-2-3-VM_2.vmdk
> [root@host148 i-2-3-VM]# ls -l
> total 19072
> -rw-------. 1 root root 3221225472 Feb 13 2014 i-2-3-VM_2-flat.vmdk
> -rw-------. 1 root root 519 Feb 13 2014 i-2-3-VM_2.vmdk
> [root@host148 i-2-3-VM]#
> c. So when we call the migration for the second time, cloudstack looks for
> the file “7868703c4e8345a58d568ece092baa0e.vmdk” and it does not find it and
> migration fails.
> d. Be it from netapp to non-netapp, or netapp to netapp, all the
> subsequent migration fails with the following message
> 2014-02-13 06:17:57,399 ERROR [c.c.h.v.r.VmwareResource]
> (DirectAgent-415:ctx-33da787a 10.61.166.68) Catch Exception
> java.lang.Exception due to java.lang.Exception: No such disk device:
> 7868703c4e8345a58d568ece092baa0e.vmdk
> java.lang.Exception: No such disk device:
> 7868703c4e8345a58d568ece092baa0e.vmdk
> at
> com.cloud.hypervisor.vmware.resource.VmwareResource.getVirtualDiskInfo(VmwareResource.java:4420)
> at
> com.cloud.hypervisor.vmware.resource.VmwareResource.execute(VmwareResource.java:4397)
> at
> com.cloud.hypervisor.vmware.resource.VmwareResource.executeRequest(VmwareResource.java:454)
> at
> com.cloud.agent.manager.DirectAgentAttache$Task.runInContext(DirectAgentAttache.java:216)
> 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
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
> at java.util.concurrent.FutureTask.run(FutureTask.java:166)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> 2014-02-13 06:17:57,400 DEBUG [c.c.a.m.DirectAgentAttache]
> (DirectAgent-415:ctx-33da787a) Seq 1-2016020265: Response Received:
> 2014-02-13 06:17:57,401 DEBUG [c.c.a.t.Request]
> (DirectAgent-415:ctx-33da787a) Seq 1-2016020265: Processing: { Ans: ,
> MgmtId: 52230907924, via: 1, Ver: v1, Flags: 110,
> [{"com.cloud.agent.api.storage.MigrateVolumeAnswer":{"result":false,"details":"Catch
> Exception java.lang.Exception due to java.lang.Exception: No such disk
> device: 7868703c4e8345a58d568ece092baa0e.vmdk","wait":0}}] }
> 2014-02-13 06:17:57,401 DEBUG [c.c.a.t.Request] (Job-Executor-7:ctx-5972265e
> ctx-d2079367) Seq 1-2016020265: Received: { Ans: , MgmtId: 52230907924, via:
> 1, Ver: v1, Flags: 110, { MigrateVolumeAnswer } }
> 2014-02-13 06:17:57,401 DEBUG [o.a.c.s.m.AncientDataMotionStrategy]
> (Job-Executor-7:ctx-5972265e ctx-d2079367) copy failed
> com.cloud.utils.exception.CloudRuntimeException: Failed to migrate volume
> org.apache.cloudstack.storage.volume.VolumeObject@70240ea0 to storage pool
> org.apache.cloudstack.storage.datastore.PrimaryDataStoreImpl@4f3c63e4
> at
> org.apache.cloudstack.storage.motion.AncientDataMotionStrategy.migrateVolumeToPool(AncientDataMotionStrategy.java:386)
> at
> org.apache.cloudstack.storage.motion.AncientDataMotionStrategy.copyAsync(AncientDataMotionStrategy.java:421)
> at
> org.apache.cloudstack.storage.motion.DataMotionServiceImpl.copyAsync(DataMotionServiceImpl.java:70)
> at
> org.apache.cloudstack.storage.volume.VolumeServiceImpl.migrateVolume(VolumeServiceImpl.java:931)
> at
> com.cloud.storage.VolumeApiServiceImpl.liveMigrateVolume(VolumeApiServiceImpl.java:1680)
> at
> com.cloud.storage.VolumeApiServiceImpl.orchestrateMigrateVolume(VolumeApiServiceImpl.java:1666)
> at
> com.cloud.storage.VolumeApiServiceImpl.migrateVolume(VolumeApiServiceImpl.java:1622)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> 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 $Proxy196.migrateVolume(Unknown Source)
> at
> org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd.execute(MigrateVolumeCmd.java:103)
> at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:161)
> at
> com.cloud.api.ApiAsyncJobDispatcher.runJobInContext(ApiAsyncJobDispatcher.java:109)
> at
> com.cloud.api.ApiAsyncJobDispatcher$1.run(ApiAsyncJobDispatcher.java:66)
> 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
> com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:63)
> at
> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:526)
> 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
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
> at java.util.concurrent.FutureTask.run(FutureTask.java:166)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)