← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1367523] [NEW] Evacute does not preserve data on shared storage

 

Public bug reported:

Environment:
  Centos6.5/KVM/IceHouse latest

Have two compute nodes with shared NFS storage.  Live migration and migration work with current configuration of
NFS/Nova/etc.  One one node a Cirros image is running with local root (no cinder volumes).  Write files to the local
filesytem.  Live migration and migration preserve the data on the local root drive.  

Shutdown the node with the running instance.

nova evacuate --on-shared-storage UUID target

The disk file in the instances directory is deleted and rebuilt, losing
customer data.

Looking into the nova/compute/manager.py file it looks like there is an issue with the recreate flag.
It is not passed into the rebuild driver function.  If I add the recreate flag to the dictionary args, the
evacuate works flawlessly.

            kwargs = dict(
                recreate=recreate,  <-- added
                context=context,
                instance=instance,
                image_meta=image_meta,
                injected_files=files,
                admin_password=new_pass,
                bdms=bdms,
                detach_block_devices=detach_block_devices,
                attach_block_devices=self._prep_block_device,
                block_device_info=block_device_info,
                network_info=network_info,
                preserve_ephemeral=preserve_ephemeral)
            try:
                self.driver.rebuild(**kwargs)
            except NotImplementedError:
                # NOTE(rpodolyaka): driver doesn't provide specialized version
                # of rebuild, fall back to the default implementation
                self._rebuild_default_impl(**kwargs)
            instance.power_state = self._get_power_state(context, instance)

This looks like a major oversight so perhaps the initial feature was not
meant to work this way?

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: evacuation ha

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1367523

Title:
  Evacute does not preserve data on shared storage

Status in OpenStack Compute (Nova):
  New

Bug description:
  Environment:
    Centos6.5/KVM/IceHouse latest

  Have two compute nodes with shared NFS storage.  Live migration and migration work with current configuration of
  NFS/Nova/etc.  One one node a Cirros image is running with local root (no cinder volumes).  Write files to the local
  filesytem.  Live migration and migration preserve the data on the local root drive.  

  Shutdown the node with the running instance.

  nova evacuate --on-shared-storage UUID target

  The disk file in the instances directory is deleted and rebuilt,
  losing customer data.

  Looking into the nova/compute/manager.py file it looks like there is an issue with the recreate flag.
  It is not passed into the rebuild driver function.  If I add the recreate flag to the dictionary args, the
  evacuate works flawlessly.

              kwargs = dict(
                  recreate=recreate,  <-- added
                  context=context,
                  instance=instance,
                  image_meta=image_meta,
                  injected_files=files,
                  admin_password=new_pass,
                  bdms=bdms,
                  detach_block_devices=detach_block_devices,
                  attach_block_devices=self._prep_block_device,
                  block_device_info=block_device_info,
                  network_info=network_info,
                  preserve_ephemeral=preserve_ephemeral)
              try:
                  self.driver.rebuild(**kwargs)
              except NotImplementedError:
                  # NOTE(rpodolyaka): driver doesn't provide specialized version
                  # of rebuild, fall back to the default implementation
                  self._rebuild_default_impl(**kwargs)
              instance.power_state = self._get_power_state(context, instance)

  This looks like a major oversight so perhaps the initial feature was
  not meant to work this way?

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1367523/+subscriptions


Follow ups

References