The VM will be destroyed on source host during resizing for Hyper-V
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Expired
|
Undecided
|
Unassigned | ||
compute-hyperv |
Invalid
|
Undecided
|
Unassigned |
Bug Description
This defect is originally be found in the following scenario:
1. Deploy one vm A with 100g disk and 1 cpu.
2. Resize it with 2 cpu and 200g disk
3. During resizing, the host of vm is down (power off )
4. restart the host
After investigation, I found that in the method of migrate_
https:/
https:/
Compared with the same scenario in KVM, the previous case works, which means the VM being resized won't be removed and after the host is up again, the resize can resume.
Since I am not familiar with the orginal design and don't know why Hyper-V handle resizing like this. So open this defect for tracking and discussion.
One question I can propose here is: is there a standard behavior among the hypervisors for resizing? if yes, what is it?
summary: |
- The VM will be destoried on source host during resize for Hyper-V + The VM will be destroyed on source host during resizing for Hyper-V |
tags: | added: hyper-v |
Changed in nova: | |
status: | New → Confirmed |
Changed in nova: | |
importance: | Undecided → Medium |
Changed in compute-hyperv: | |
status: | New → Invalid |
Can you post a pastebin with some logs showing the exception traces?
"migrate_ disk_and_ power_off" copies the disk files to the target location and moves the original files to a temporary location in order to resume the migration in case of errors.
see: https:/ /github. com/openstack/ nova/blob/ master/ nova/virt/ hyperv/ migrationops. py#L47
If the target host is not accessible, the disk copy step will throw an exception, the VM will NOT be destroyed no data will be lost but Nova will set the instance in an error state.
Generally speaking, error handling in the Nova compute driver operations model (any driver) is a simple binary thing: either the operation works, or the instance is set in an error state.
There's a discussion going on about adding the idea of "warnings" in nova, i.e. raising an exception w/o having to set the instance in a non recoverable error state and still signaling the issue to the user.