In my openstack compute node. a kvm-based vm exists and it has a iso image configured in the cdrom. The iso image path is /root/RHEL6.5-20131111.0-Server-x86_64-DVD1.iso.
When deleting the nova instances, the following error happend in the /var/log/nova/compute.log. And this error caused that the resources could not be updated and the resources occupied by the deleted instances could not be released. This error also happend when restaring the nova-compute service and so that nova-compute could not restarted successfully.
We should catch this exception for some existing libvirt instances otherwise all resources for nova instances could not be updated correctly.
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task Traceback (most recent call last):
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/openstack/common/periodic_task.py", line 182, in run_periodic_tasks
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task task(self, context)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 5445, in update_available_resource
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task rt.update_available_resource(context)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/openstack/common/lockutils.py", line 249, in inner
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task return f(*args, **kwargs)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/compute/resource_tracker.py", line 293, in update_available_resource
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task resources = self.driver.get_available_resource(self.nodename)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 4142, in get_available_resource
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task stats = self.get_host_stats(refresh=True)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 4817, in get_host_stats
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task return self.host_state.get_host_stats(refresh=refresh)
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 5218, in get_host_stats
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task self.update_status()
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 5261, in update_status
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task data['disk_available_least'] = _get_disk_available_least()
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 5234, in _get_disk_available_least
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task disk_over_committed = (self.driver.
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 4787, in get_disk_over_committed_size_total
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task self.get_instance_disk_info(i_name))
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib/python2.6/site-packages/nova/virt/libvirt/driver.py", line 4759, in get_instance_disk_info
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task dk_size = int(os.path.getsize(path))
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task File "/usr/lib64/python2.6/genericpath.py", line 49, in getsize
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task return os.stat(filename).st_size
2014-05-20 09:34:26.802 4061 TRACE nova.openstack.common.periodic_task OSError: [Errno 13] Permission denied: '/root/RHEL6.5-20131111.0-Server-x86_64-DVD1.iso'
2014-05-20 09:34:26.802 4061 TRACE nova.openstack. common. periodic_ task OSError: [Errno 13] Permission denied: '/root/ RHEL6.5- 20131111. 0-Server- x86_64- DVD1.iso'
It looks that deleted instance still occupied the iso file.
(But the log say ' permission denied ')
Please tell me the way to reproduce it. I'll try to reproduce it in my environment.
So, just to make sure, is 'the resources' iso image?
I think following
1. Boot the instance with iso image
2. Delete the booted server
3. Boot the instance again with same iso image
Does it correct?