did not finish being created even after we waited XX seconds or X attempts
오픈스택에서 인스턴스 생성시 아래와 같은 오류가 발생하면서 인스턴스가 생성되지 않는 경우가 있다.
Build of instance cab0c2cb-202a-4cc0-8d3e-15e2587839d6 aborted: Volume 98a31559-9675-42f5-9b85-d7228b3bb65c did not finish being created even after we waited 12 seconds or 3 attempts. And its status is error.
코드 500
에러가 발생하고 상세 내용은 아래와 같다.
Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 1912, in _prep_block_device wait_func=self._await_block_device_map_created) File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 874, in attach_block_devices _log_and_attach(device) File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 871, in _log_and_attach bdm.attach(*attach_args, **attach_kwargs) File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 771, in attach wait_func=wait_func, image_id=self.image_id) File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 384, in _create_volume self._call_wait_func(context, wait_func, volume_api, vol['id']) File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 731, in _call_wait_func {'volume_id': volume_id, 'exc': exc}) File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 220, in __exit__ self.force_reraise() File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 196, in force_reraise six.reraise(self.type_, self.value, self.tb) File "/usr/lib/python3.6/site-packages/six.py", line 693, in reraise raise value File "/usr/lib/python3.6/site-packages/nova/virt/block_device.py", line 721, in _call_wait_func wait_func(context, volume_id) File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 1571, in _await_block_device_map_created volume_status=volume_status) nova.exception.VolumeNotCreated: Volume 98a31559-9675-42f5-9b85-d7228b3bb65c did not finish being created even after we waited 12 seconds or 3 attempts. And its status is error. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 2635, in _build_resources block_device_mapping) File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 1930, in _prep_block_device raise exception.InvalidBDM(six.text_type(ex)) nova.exception.InvalidBDM: Volume 98a31559-9675-42f5-9b85-d7228b3bb65c did not finish being created even after we waited 12 seconds or 3 attempts. And its status is error. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 2168, in _do_build_and_run_instance filter_properties, request_spec) File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 2476, in _build_and_run_instance bdms=block_device_mapping, tb=tb) File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 220, in __exit__ self.force_reraise() File "/usr/lib/python3.6/site-packages/oslo_utils/excutils.py", line 196, in force_reraise six.reraise(self.type_, self.value, self.tb) File "/usr/lib/python3.6/site-packages/six.py", line 693, in reraise raise value File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 2426, in _build_and_run_instance request_group_resource_providers_mapping) as resources: File "/usr/lib64/python3.6/contextlib.py", line 81, in __enter__ return next(self.gen) File "/usr/lib/python3.6/site-packages/nova/compute/manager.py", line 2654, in _build_resources reason=e.format_message()) nova.exception.BuildAbortException: Build of instance cab0c2cb-202a-4cc0-8d3e-15e2587839d6 aborted: Volume 98a31559-9675-42f5-9b85-d7228b3bb65c did not finish being created even after we waited 12 seconds or 3 attempts. And its status is error.
원인
- 스토리지/네트워크 속도가 느려서 볼륨이 생성되는데 시간이 초과되어 실패하는경우
- 등록된 이미지의 메타정보가 잘못된 경우
해결방법
스토리지/네트워크 속도가 느려 시간초과
이런경우는 보통 waited XX seconds
또는 XX attempts
부분이 큰 숫자인경우다.
기본 시간값은 60
인데 위의 오류 메세지가 해당 숫자값에 근접한 숫자로 발생하는 경우 네트워크/스토리지 속도를 체크해보도록 한다.
해결방법은 타임아웃 시간을 늘려주는 방법이 있다.
nova.conf
내의 파라메터를 수정해준다.
block_device_allocate_retries = 60 <- 이 숫자를 늘려준다. 300~1800등 block_device_allocate_retries_interval = 3 <- 체크 간격을 늘려주는것도 방법이 될수 있다.
이미지 메타정보 오류
두번째 원인은 이미지 메타정보가 잘못된 경우이다.
보통 위에서 지정된 타임아웃 시간보다 한참 작은 숫자값의 로그가 찍히는 경우이다.
이미지를 등록할때 이미지의 최소 디스크 크기
를 입력해야 하는데 실제 이미지파일(QCOW2)의 크기보다 작게 입력하거나 입력을 하지 않은경우 발생한다.
예를들어 레드햇 리눅스 8.4 이미지의 최소 크기는 10GB인데 이 크기를 지정하지 않고 등록하게 되면
인스턴스 생성시 디스크 크기를 최소 1GB부터 사용할수 있는데 이렇게 인스턴스를 생성하면 위와 같은 오류가 발생한다.
해결방법은 해당 이미지의 메타정보를 수정해주는 것이다. 최소디스크 크기는 실제 해당 이미지디스크에 저장된 디스크 정보를 확인하여 그것보다 크게 잡아주도록 한다.