개발 환경
에러 발생 상황
대시보드에서 인스턴스 생성 중 에러 발생
Build of instance 32da73bc-9a70-4dc6-9179-22f3a9146670 aborted: Volume ea867644-981f-4d61-af41-f438008de92e did not finish being created even after we waited 0 seconds or 1 attempts. And its status is error.
Traceback (most recent call last): File "/opt/stack/nova/nova/compute/manager.py", line 2211, in _do_build_and_run_instance filter_properties, request_spec) File "/opt/stack/nova/nova/compute/manager.py", line 2521, in _build_and_run_instance bdms=block_device_mapping, tb=tb) File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__ self.force_reraise() File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise six.reraise(self.type_, self.value, self.tb) File "/opt/stack/nova/nova/compute/manager.py", line 2471, in _build_and_run_instance request_group_resource_providers_mapping) as resources: File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/opt/stack/nova/nova/compute/manager.py", line 2699, in _build_resources reason=e.format_message()) BuildAbortException: Build of instance 32da73bc-9a70-4dc6-9179-22f3a9146670 aborted: Volume ea867644-981f-4d61-af41-f438008de92e did not finish being created even after we waited 0 seconds or 1 attempts. And its status is error.
에러 메세지를 살펴보면 volume 관련하여 error가 발생한 것을 알 수 있다.
오픈스택에서 volume 관련 컴포넌트는 cinder이다.
우선 cinder 서비스가 제대로 동작하고 있는지 확인해본다.
$ openstack volume service list
해당 결과를 캡쳐하지 못해 글로 설명하면, cinder-scheduler의 state는 up 이였지만, cinder-volume은 down이였다.
cinder 서비스의 상태를 확인해본다.
$ systemctl status devstack@c-vol.service
상태는 active 이지만, lvmdriver-1 관련해서 에러가 발생하고 있다.
해당 서비스(devstack@c-vol.service)를 재시작하고 인스턴스를 새로 생성해도 같은 에러가 발생했다.
조금 더 자세히 살펴보기 위해 c-vol.service의 로그를 살펴본다.
이때 lvmdriver-1와 관련된 에러만 보기 위해 grep 명령어도 함께 이용한다.
$ journalctl --unit devstack@c-vol.service | grep "lvmdriver-1"
그러면 lvmdriver-1 is uninitialized 라는 메세지가 있는 것을 확인할 수 있다.
devstack을 이용해 설치하면 두 가지 볼륨 타입이 있는데 lvmdriver-1과 default 이다. 이는 각각 stack-volumes-lvmdriver-1과 stack-volumes-default의 이름으로 볼륨 그룹이 생성된다.
하지만 확인해보면 두 그룹 모두 생성되어 있지 않다.
$ vgdisplay
에러메세지와 로그를 바탕으로 생각해보면 해당 볼륨 그룹이 생성되어 있지 않아 발생한 문제로 판단이 된다.
lvmdriver-1과 default의 backing file을 이용하여 볼륨 그룹을 생성한다.
$ cd /opt/stack/data
$ losetup -f --show stack-volumes-default-backing-file
$ losetup -f --show stack-volumes-lvmdriver-1-backing-file
그리고 서비스도 재시작해주고, 상태를 확인한다.
$ systemctl restart devstack@c-vol.service
$ openstack volume service list
cinder-volume의 state가 up으로 된 것을 확인하였고, 인스턴스를 생성해보니 정상적으로 생성되었다.
https://snowapril.github.io/cloud-computing/2020/10/03/cinder-service-down/