20장. 가상 머신 문제 진단
VM(가상 머신)을 사용할 때 다양한 심각도 수준에 문제가 발생할 수 있습니다. 일부 문제는 빠르고 쉽게 수정할 수 있지만 다른 문제의 경우 VM 관련 데이터 및 로그를 캡처하여 문제를 보고하거나 진단해야 할 수 있습니다.
다음 섹션에서는 로그 생성 및 일부 일반적인 VM 문제 진단 및 이러한 문제 보고에 대한 자세한 정보를 제공합니다.
20.1. libvirt 디버그 로그 생성
VM(가상 머신) 문제를 진단하려면 libvirt 디버그 로그를 생성하고 검토하는 것이 유용합니다. 디버그 로그 연결은 VM 관련 문제 해결을 요청하는 경우에도 유용합니다.
다음 섹션에서는 디버그 로그가 무엇인지, 이를 영구적으로 설정하고,런타임 중에 활성화하고, 문제를 보고할 때 연결하는 방법에 대해 설명합니다.
20.1.1. libvirt 디버그 로그 이해
디버그 로그는 VM(가상 머신) 런타임 중에 발생하는 이벤트에 대한 데이터가 포함된 텍스트 파일입니다. 로그는 호스트 라이브러리 및 libvirt 데몬과 같은 기본 서버 측 기능에 대한 정보를 제공합니다. 로그 파일에는 실행 중인 모든 VM의 표준 오류 출력(stderr
)도 포함되어 있습니다.
디버그 로깅은 기본적으로 활성화되어 있지 않으며 libvirt가 시작될 때 활성화해야 합니다. 단일 세션 또는 영구적으로 로깅을 활성화할 수 있습니다. 데몬 런타임 설정을 수정하여 libvirt 데몬 세션이 이미 실행 중인 경우 로깅을 활성화할 수도 있습니다.
libvirt 디버그 로그 연결은 VM 문제와 관련된 지원을 요청할 때도 유용합니다.
20.1.2. libvirt 디버그 로그에 대한 영구 설정 활성화
libvirt를 시작할 때마다 libvirt 디버그 로깅이 자동으로 활성화되도록 구성할 수 있습니다. 기본적으로 libvirtd
는 RHEL 8에서 유일한 libvirt 데몬입니다. libvirt 구성을 영구적으로 변경하려면 /etc/libvirt
디렉터리에 있는 libvirtd.conf
파일을 편집해야 합니다.
절차
-
편집기에서
libvirtd.conf
파일을 엽니다. 요구 사항에 따라 필터를 교체하거나 설정합니다.
표 20.1. 디버깅 필터 값 1
libvirt에서 생성된 모든 메시지를 기록합니다.
2
모든 디버깅되지 않은 정보를 기록합니다.
3
모든 경고 및 오류 메시지를 기록합니다. 이는 기본값입니다.
4
오류 메시지만 기록합니다.
예 20.1. 로깅 필터를 위한 데몬 설정 샘플
다음 설정:
-
remote
,util.json 및
rpc
계층의 모든 오류 및 경고 메시지를 기록합니다. -
이벤트
계층의 오류 메시지만 기록합니다. -
필터링된 로그를
/var/log/libvirt/libvirt.log
에 저장합니다.
log_filters="3:remote 4:event 3:util.json 3:rpc" log_outputs="1:file:/var/log/libvirt/libvirt.log"
-
- 저장 후 종료합니다.
libvirt 데몬을 다시 시작합니다.
$ systemctl restart libvirtd.service
20.1.3. 런타임 중 libvirt 디버그 로그 활성화
libvirt 데몬의 런타임 설정을 수정하여 디버그 로그를 활성화하고 출력 파일에 저장할 수 있습니다.
이 기능은 문제를 다시 시작하거나 동시에 실행 중인 마이그레이션 또는 백업과 같은 다른 프로세스가 있기 때문에 libvirt 데몬을 다시 시작할 수 없습니다. 런타임 설정 수정은 구성 파일을 편집하거나 데몬을 다시 시작하지 않고 명령을 시도하려는 경우에도 유용합니다.
사전 요구 사항
-
libvirt-admin
패키지가 설치되어 있는지 확인합니다.
절차
선택 사항: 로그 필터의 활성 집합을 백업합니다.
# virt-admin daemon-log-filters >> virt-filters-backup
참고로그를 생성한 후 복원할 수 있도록 활성 필터 세트를 백업하는 것이 좋습니다. 필터를 복원하지 않으면 시스템 성능에 영향을 줄 수 있는 메시지가 계속 기록됩니다.
virt-admin
유틸리티를 사용하여 디버깅을 활성화하고 요구 사항에 따라 필터를 설정합니다.표 20.2. 디버깅 필터 값 1
libvirt에서 생성된 모든 메시지를 기록합니다.
2
모든 디버깅되지 않은 정보를 기록합니다.
3
모든 경고 및 오류 메시지를 기록합니다. 이는 기본값입니다.
4
오류 메시지만 기록합니다.
예 20.2. 로깅 필터를 위한 샘플 virt-admin 설정
다음 명령:
-
remote
,util.json 및
rpc
계층에서 모든 오류 및 경고 메시지를 기록합니다. -
이벤트
계층에서 오류 메시지만 기록합니다.
# virt-admin daemon-log-filters "3:remote 4:event 3:util.json 3:rpc"
-
virt-admin
유틸리티를 사용하여 로그를 특정 파일 또는 디렉터리에 저장합니다.예를 들어 다음 명령은 로그 출력을
/var/
파일에 저장합니다.log/libvirt/ 디렉터리에 있는 libvirt.
log# virt-admin daemon-log-outputs "1:file:/var/log/libvirt/libvirt.log"
선택 사항: 필터를 제거하여 모든 VM 관련 정보가 포함된 로그 파일을 생성할 수도 있습니다. 그러나 이 파일에는 libvirt의 모듈에서 생성된 많은 양의 중복 정보가 포함될 수 있으므로 사용하지 않는 것이 좋습니다.
virt-admin
유틸리티를 사용하여 빈 필터 세트를 지정합니다.# virt-admin daemon-log-filters Logging filters:
-
선택 사항: 백업 파일을 사용하여 필터를 원래 상태로 복원합니다.
저장된 값을 사용하여 두 번째 단계를 수행하여 필터를 복원합니다.
20.1.4. 요청을 지원하기 위해 libvirt 디버그 로그 연결
VM(가상 머신) 문제를 진단하고 해결하려면 추가 지원을 요청해야 할 수 있습니다. 지원 요청에 디버그 로그를 연결하는 것이 좋습니다. 지원 팀이 VM 관련 문제를 신속하게 해결하는 데 필요한 모든 정보에 액세스할 수 있는지 확인하는 것이 좋습니다.
절차
- 문제를 보고하고 지원을 요청하려면 지원 사례를 엽니다.
발생한 문제에 따라 다음 로그를 보고서와 함께 연결합니다.
-
libvirt 서비스에 문제가 있으면 호스트에서
/var/log/libvirt/libvirt.log
파일을 연결합니다. 특정 VM에서의 문제의 경우 해당 로그 파일을 연결합니다.
예를 들어 testguest1 VM의 경우
/var/
파일을 연결합니다.log/libvirt/qemu/testguest1.log에 있는 test
guest1.log
-
libvirt 서비스에 문제가 있으면 호스트에서