diff --git a/circle/vm/models/instance.py b/circle/vm/models/instance.py
index eb55f4e..ccfaa97 100644
--- a/circle/vm/models/instance.py
+++ b/circle/vm/models/instance.py
@@ -315,12 +315,13 @@ class Instance(AclBase, VirtualMachineDescModel, TimeStampedModel):
 
     @property
     def mem_dump(self):
-        """Return the path for the memory dump.
+        """Return the path and datastore for the memory dump.
 
         It is always on the first hard drive storage named cloud-<id>.dump
         """
-        path = self.disks.all()[0].datastore.path
-        return path + '/' + self.vm_name + '.dump'
+        datastore = self.disks.all()[0].datastore
+        path = datastore.path + '/' + self.vm_name + '.dump'
+        return {'datastore': datastore, 'path': path}
 
     @property
     def primary_host(self):
@@ -558,6 +559,16 @@ class Instance(AclBase, VirtualMachineDescModel, TimeStampedModel):
                 for disk in self.disks.all():
                     disk.destroy()
 
+            # Delete mem. dump if exists
+            queue_name = self.mem_dump['datastore'].get_remote_queue_name(
+                'storage')
+            try:
+                from storage.tasks.remote_tasks import delete
+                delete.apply_async(args=[self.mem_dump['path']],
+                                   queue=queue_name).get()
+            except:
+                pass
+
             # Clear node and VNC port association
             self.node = None
             self.vnc_port = None
@@ -578,7 +589,8 @@ class Instance(AclBase, VirtualMachineDescModel, TimeStampedModel):
                                task_uuid=task_uuid, user=user):
 
             queue_name = self.get_remote_queue_name('vm')
-            vm_tasks.sleep.apply_async(args=[self.vm_name, self.mem_dump],
+            vm_tasks.sleep.apply_async(args=[self.vm_name,
+                                             self.mem_dump['path']],
                                        queue=queue_name).get()
 
     def sleep_async(self, user=None):