Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.19. 일반 libvirt 오류 및 문제 해결

이 부록은 일반적인 libvirt문서 - 관련 문제 및 오류를 다루는 방법과 함께 설명합니다.
아래 표에서 오류를 찾아 솔루션 아래의 해당 링크를 따라 자세한 문제 해결 정보를 확인하십시오.

표 A.1. 공통 libvirt 오류

오류 문제에 대한 설명 해결책
libvirtd 를 시작하지 못했습니다. libvirt 데몬을 시작하지 못했습니다. 그러나 /var/log/ message에 이 오류에 대한 정보는 없습니다. A.19.1절. “libvirtd 를 시작하지 못했습니다.”
CA 인증서를 읽을 수 없음 URI가 하이퍼바이저에 연결하지 못하는 경우 발생하는 몇 가지 오류 중 하나입니다. A.19.2절. “URI가 Hypervisor에 연결하지 못했습니다.”
기타 연결 오류 URI가 하이퍼바이저에 연결하지 못하는 경우 발생하는 기타 오류입니다. A.19.2절. “URI가 Hypervisor에 연결하지 못했습니다.”
게스트의 PXE 부팅(또는 DHCP)이 실패했습니다. 게스트 가상 머신이 성공적으로 시작되지만 DHCP에서 IP 주소를 가져오거나 PXE 프로토콜을 사용하여 부팅하거나 둘 다 가져올 수 없습니다. 이는 종종 브리지에 설정된 긴 지연 시간 또는 iptables 패키지 및 커널에서 규칙 체크섬을 지원하지 않는 경우 발생합니다. A.19.3절. “게스트의 PXE 부팅(또는 DHCP) 실패”
게스트는 외부 네트워크에 연결할 수 있지만 macvtap 인터페이스를 사용하는 경우에는 호스트에 연결할 수 없습니다.
게스트는 다른 게스트와 통신할 수 있지만 macvtap(또는 type='direct') 네트워크 인터페이스를 사용하도록 구성된 후에는 호스트 시스템에 연결할 수 없습니다.
이것은 실제로 오류가 아니며 macvtap의 정의된 동작입니다.
A.19.4절. “게스트는 외부 네트워크를 변경할 수 있지만 macvtap 인터페이스를 사용하는 경우 Reach Host는 사용할 수 없습니다.”
네트워크 'default'에서 DHCP 응답 체크섬을 수정하는 규칙을 추가할 수 없습니다. 이 경고 메시지는 거의 항상 무해하지만 문제의 증거로 실수로 표시됩니다. A.19.5절. “네트워크 'default'에서 DHCP 응답 체크섬을 수정하는 규칙을 추가할 수 없습니다.”
브리지 br0 포트 vnet0을 추가할 수 없습니다. 해당 장치가 없습니다. 이 오류 메시지 또는 유사한 Failed to add interface to bridge 'br0': 이러한 장치 는 게스트의(또는 도메인) <interface> 정의에 지정된 브리지 장치가 없음을 나타냅니다. A.19.6절. “브리지 br0 포트 vnet0을 추가할 수 없습니다. 해당 장치가 없습니다.”
name_of_host 서비스 '49155' 주소를 확인할 수 없습니다. 알 수 없는 이름 또는 서비스 QEMU 게스트 마이그레이션이 실패하고 이 오류 메시지는 익숙하지 않은 호스트 이름과 함께 표시됩니다. A.19.7절. “Migration Fails with error: unable to resolve address
디스크 경로 /var/lib/libvirt/images/qemu.img에 대한 액세스를 허용할 수 없습니다. 이러한 파일 또는 디렉터리 없음 libvirt 가 디스크 이미지에 액세스할 수 없기 때문에 게스트 가상 머신을 마이그레이션할 수 없습니다. A.19.8절. “디스크 경로에 대한 액세스를 허용하기 위해 Unable이 있는 마이그레이션 Fails: 이러한 파일 또는 디렉터리 없음
libvirtd 가 시작될 때 게스트 가상 시스템이 존재하지 않습니다. libvirt 데몬이 성공적으로 시작되었지만 virsh list --all 을 실행할 때 게스트 가상 머신이 존재하지 않습니다. A.19.9절. “libvirtd 가 시작될 때 게스트 가상 머신이 준비되지 않습니다.”
일반적인 XML 오류 libvirt 는 XML 문서를 사용하여 구조화된 데이터를 저장합니다. API를 통해 libvirt 에 전달될 때 XML 문서에서 몇 가지 일반적인 오류가 발생합니다. 이 항목에서는 게스트 XML 정의 편집과 XML 구문 및 구성의 일반적인 오류에 대한 지침을 제공합니다. A.19.10절. “일반적인 XML 오류”

A.19.1. libvirtd 를 시작하지 못했습니다.

증상
libvirt 데몬이 자동으로 시작되지 않습니다. libvirt 데몬을 수동으로 시작하면 다음 작업도 실패합니다.
# systemctl start libvirtd.service
* Caching service dependencies ...                                                                                             [ ok ]
* Starting libvirtd ...
/usr/sbin/libvirtd: error: Unable to initialize network sockets. Check /var/log/messages or run without --daemon for more info.
* start-stop-daemon: failed to start `/usr/sbin/libvirtd'                                                                      [ !! ]
* ERROR: libvirtd failed to start
또한 /var/log/ message에 이 오류에 대한 'more info' 가 없습니다.
조사
아래 행 을 활성화하여 /etc/libvirt/libvirtd.conf 에서 libvirt 의 로깅을 변경합니다. 설정을 활성화하려면 텍스트 편집기에서 /etc/libvirt/libvirtd.conf 파일을 열고 다음 줄에서 해시(또는 #) 기호를 제거하고 변경 사항을 저장합니다.
log_outputs="3:syslog:libvirtd"
참고
이 행은 libvirt 에서 과도한 로그 메시지를 생성하지 않도록 기본적으로 주석 처리됩니다. 문제를 진단한 후 /etc/libvirt/libvirtd.conf 파일에서 이 행을 다시 주석 처리하는 것이 좋습니다.
libvirt 를 다시 시작하여 이 문제가 해결되었는지 확인합니다.
libvirtd 가 여전히 시작되지 않으면 다음과 같은 오류가 출력됩니다.
# systemctl restart libvirtd
Job for libvirtd.service failed because the control process exited with error code. See "systemctl status libvirtd.service" and "journalctl -xe" for details.

Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: info : libvirt version: 3.7.0, package: 1.el7 (Unknown, 2017-09-06-09:01:55, js
Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: info : hostname: jsrh
Sep 19 16:06:02 jsrh libvirtd[30708]: 2017-09-19 14:06:02.097+0000: 30708: error : daemonSetupNetworking:502 : unsupported configuration: No server certif
Sep 19 16:06:02 jsrh systemd[1]: libvirtd.service: main process exited, code=exited, status=6/NOTCONFIGURED
Sep 19 16:06:02 jsrh systemd[1]: Failed to start Virtualization daemon.

-- Subject: Unit libvirtd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit libvirtd.service has failed.
--
-- The result is failed.
libvirtd 도움말 페이지에는 libvirtTCP/IP 연결 모드에 대해 Listen 에서 실행될 때 누락된 cacert.pem 파일이 TLS 기관으로 사용됩니다. 즉 --listen 매개변수가 전달되고 있습니다.
해결책
다음 방법 중 하나로 libvirt 데몬 설정을 구성합니다.
  • CA 인증서를 설치합니다.
    참고
    CA 인증서 및 시스템 인증 구성에 대한 자세한 내용은 Red Hat Enterprise Linux 7 도메인 ID, 인증 및 정책 가이드의 인증서 및 인증 기관 관리 장을 참조하십시오.
  • TLS를 사용하지 마십시오. 대신 베어 TCP를 사용합니다. /etc/libvirt/libvirtd.conf 에서 listen_tls = 0listen_tcp = 1 을 설정합니다. 기본값은 listen_tls = 1listen_tcp = 0 입니다.
  • --listen 매개변수를 전달하지 마십시오. /etc/sysconfig/libvirtd.conf 에서 LIBVIRTD_ARGS 변수를 변경합니다.