yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #18065
[Bug 1348495] [NEW] VMware vCenter Driver failed to extend virtual disk while booting new VM
Public bug reported:
How to produce this bug:
Compute driver: VMwareVCDriver
vSphere API 5.1,
VMware use: Administrator
Image: sparse type with ide controller.
Confiure in nova.conf: linked_clone =True.
Boot vm with “root_disk_size” (Example: 20GB)> “image_size”(Example:10GB)
If it’s first time to do this kind of vm booting, then lead to a booting failure.
Then, try to boot a second VM with the same image and flavor of first booting, you will success this time.
I noticed that vm booting failed in the virtual disk extending phase.
… In this phase:
If there is no virtual disk cache(virtual disk with the targeted image and root disk size) in this host,
and “root_disk_size” (defines in flavor, Example: 20GB)> “image_size”(defined in image file, Example:10GB),
then go to the virtual disk extending phase.
Tasks of virtual disk extending phase:
1) Invoke virtual disk extending task (t_1) to do the disk extending thing.
2) Make one additional task (t_2) to check the status(queued, running, error, success) of task (t_1).
Task (t_2) failed with an error, and this error causes the vm booting process to fail.
So, this causes the first VM booting failed.
But, there is no clean job to clear the (t_1) task, so the virtual disk will still in extending, and at last(very fast without zero formatting) this extending will success.
So, the second time we boot VM with the same image and flavor of the previous booting, the extended virtual disk(cache) is already there.So, that’s why I successed in the second booting.
I think the following code causes this issue:
def _poll_task(self, task_ref, done):
"""Poll the given task, and fires the given Deferred if we
get a result.
"""
try:
task_info = self._call_method(vim_util, "get_dynamic_property",
task_ref, "Task", "info")
task_name = task_info.name
If task_info is None, then checking status of the task will cause
exception, and we just log and reraise it in the upper caller. So lead
to VM booting process failed.
** Affects: nova
Importance: Undecided
Status: New
--
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/1348495
Title:
VMware vCenter Driver failed to extend virtual disk while booting new
VM
Status in OpenStack Compute (Nova):
New
Bug description:
How to produce this bug:
Compute driver: VMwareVCDriver
vSphere API 5.1,
VMware use: Administrator
Image: sparse type with ide controller.
Confiure in nova.conf: linked_clone =True.
Boot vm with “root_disk_size” (Example: 20GB)> “image_size”(Example:10GB)
If it’s first time to do this kind of vm booting, then lead to a booting failure.
Then, try to boot a second VM with the same image and flavor of first booting, you will success this time.
I noticed that vm booting failed in the virtual disk extending phase.
… In this phase:
If there is no virtual disk cache(virtual disk with the targeted image and root disk size) in this host,
and “root_disk_size” (defines in flavor, Example: 20GB)> “image_size”(defined in image file, Example:10GB),
then go to the virtual disk extending phase.
Tasks of virtual disk extending phase:
1) Invoke virtual disk extending task (t_1) to do the disk extending thing.
2) Make one additional task (t_2) to check the status(queued, running, error, success) of task (t_1).
Task (t_2) failed with an error, and this error causes the vm booting process to fail.
So, this causes the first VM booting failed.
But, there is no clean job to clear the (t_1) task, so the virtual disk will still in extending, and at last(very fast without zero formatting) this extending will success.
So, the second time we boot VM with the same image and flavor of the previous booting, the extended virtual disk(cache) is already there.So, that’s why I successed in the second booting.
I think the following code causes this issue:
def _poll_task(self, task_ref, done):
"""Poll the given task, and fires the given Deferred if we
get a result.
"""
try:
task_info = self._call_method(vim_util, "get_dynamic_property",
task_ref, "Task", "info")
task_name = task_info.name
If task_info is None, then checking status of the task will cause
exception, and we just log and reraise it in the upper caller. So lead
to VM booting process failed.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1348495/+subscriptions
Follow ups
References