Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

일반적인 KVM 문제 해결

얼마 전에 Xen 기술을 사용하여 환경을 프로비저닝하려고 할 때 발생할 수 있는 보다 일반적인 문제에 대해 설명하는 두 개의 Xen 문제 해결 기사를 제공했습니다. 오늘 우리는 KVM으로 같은 일을 할 것입니다.

개인적으로 저는 KVM이 Python 구토 세부 정보 및 전반적인 복잡성과 관련하여 훨씬 더 우아하다고 생각하지만 때때로 삶을 더 어렵게 만드는 추악한 오류를 발견할 수 있습니다. 이 자습서에서는 이러한 문제를 해결하는 방법, 가능한 구성 및 설정 충돌을 식별하는 방법 및 기타 다양한 트릭을 알려줍니다. 나 후에.

팁 1:브리지 네트워킹 인터페이스가 표시되지 않음

br0이라는 사용자 정의 브리지 장치를 사용하려고 한다고 가정해 보겠습니다. 그러나 네트워크를 설정하고 게스트가 특정 인터페이스를 사용하도록 하면 Virtual Machine Manager의 드롭다운 메뉴에 표시되지 않습니다. 아래 이미지는 정반대이지만 원하는 장치가 사용 가능한 어댑터 목록에 없다고 가정해 보십시오. 이런 일이 일어날 수 있고 저는 이런 일이 일어나는 것을 보았습니다. 인터넷 시민 여러분, 저를 믿으십시오.

일반적인 KVM 문제 해결

솔루션은 매우 간단합니다. 도메인의 구성 파일을 수동으로 편집합니다. 기본적으로 KVM은 파일을 /etc/kvm/vm 또는 /etc/libvirt/qemu의 두 위치에 저장하므로 여기에서 XML 파일을 찾을 가능성이 높습니다. 해당 항목을 열고 <소스 브리지>에서 브리지된 어댑터 세부 정보를 수동으로 변경합니다. 파일을 닫고 가상 머신을 시작하고 즐기십시오.

<인터페이스 유형='브리지'>
<소스 브리지='br0'/>
<맥 주소='52:54:00:0d:e6:4a'/>

팁 2:Biosdevname 및 네트워크 없음

Biosdevname은 BIOS에서 지정한 이름을 장치에 할당하여 공통성을 유지하고 특히 네트워크 장치에서 하드웨어 관리 논리를 단순화하는 유틸리티입니다. 고유한 기능을 가진 이들을 많이 가지고 있는 경우 일반적인 ethX 이름으로 식별하기가 더 어렵다는 것을 알게 될 것입니다. 그러나 고유한 문자열이 주어지면 1Gbps 및 10Gbps 어댑터 등을 쉽게 구분할 수 있습니다. 당연히 이것은 집에 있는 사람들이 이러한 딜레마를 거의 겪지 않기 때문에 엔터프라이즈 시스템에 주로 유용합니다.

그러나 biosdevname 사용의 부작용은 KVM에서 만든 가상 머신의 게스트 운영 체제 내에서 사용하는 경우 가상화된 기기가 완전히 일치하지 않는 물리적 이름을 가지므로 네트워크 없이 끝날 수 있다는 것입니다.

문제를 해결할 수 있는 몇 가지 방법이 있습니다. 첫째, 유틸리티의 일부 버전은 가상 환경 내에서 호출되는 것을 감지할 수 있으며 시스템 변경 없이 종료됩니다. 또 다른 하나는 GRUB 메뉴에서 커널 인수를 전달하는 것입니다. biosdevname=0은 유틸리티 실행을 비활성화합니다.

세 번째 옵션은 네트워크 카드에 이름을 할당하는 데 사용되는 udev 규칙을 해킹하는 것입니다. 다음은 매우 기초적인 예입니다. 이것은 단일 네트워크 어댑터가 있는 시스템용으로 설계되었으므로 여러 카드에 대해 보다 동적인 논리가 필요합니다. 또는 주석이 달린 텍스트에서 알 수 있듯이 각 규칙에 대해 별도의 단일 행을 만들어야 합니다.

일반적인 KVM 문제 해결

클래식 할당을 가져오기 위해 수동으로 변경할 수 있습니다.

vi /etc/udev/rules.d/70-persistent-net.rules

NAME 문자열을 "eth_biosname"에서 "ethX" 또는 필요한 것으로 바꾸십시오:

# PCI 장치 ...
SUBSYSTEM=="net", ACTION=="추가", ATTR(type)=="1",
KERNEL=="eth*", NAME="eth_biosname"

# PCI 장치 ...
SUBSYSTEM=="net", ACTION=="추가", ATTR(type)=="1",
커널=="eth*", 이름="eth0"

가상 머신에서 사용하는 가상 하드웨어에 따라 다른 규칙을 얻게 됩니다. 예를 들어 Realtek, e1000 또는 virtio 가상 하드웨어를 선택하면 다른 문자열이 생성될 수 있습니다. 주의를 기울이고 솔루션이 특정 환경과 일치하는지 확인하십시오.

팁 3:도메인이 이미 존재합니다

구성 파일이나 선언을 찾는 데 문제가 있는 경우를 제외하고 새 도메인을 정의하려고 하는데 이미 존재하는 경우 어떻게 됩니까? virsh 목록에는 없고 virt-manager에는 어디에도 표시되지 않습니다. 그래서 당신은 무엇을합니까?

virsh 정의 machine.xml
오류:machine.xml에서 도메인을 정의하지 못했습니다.
오류:작업 실패:'컴퓨터' 도메인이 이미 있습니다.
uuid 883ab02f-1a67-7430-ef9a-2b59af52210e7 사용

구성 파일을 찾아서 삭제해야 합니다. 그런 다음 libvirtd 서비스를 다시 시작하십시오.

업데이트됨b
machine.xml 찾기
rm
/etc/init.d/libvirtd 재시작

팁 4:내부 오류 cgroup을 찾을 수 없습니다

이 문제는 위의 예와 같이 libvirtd를 다시 시작한 후 나타나거나 완전히 관련이 없을 수 있습니다. 전체 오류 메시지는 다음과 같습니다.

virsh 생성 machine.xml
오류:machine.xml에서 도메인을 만들지 못했습니다.
오류:내부 오류 머신용 cgroup을 찾을 수 없습니다.

이 버그의 원인은 Bugzilla 보고서에 명시된 대로 systemd와 관련이 있을 수 있지만 systemd를 사용하지 않는 초기 컴퓨터에서도 발생할 수 있습니다. 대부분의 경우 이것은 cgroups와 libvirtd 사이의 매우 미묘한 경합입니다. 이는 cgroups 이전에 libvirtd 서비스가 시작되어 cgroups 중 하나가 삭제되거나 처음부터 존재하지 않기 때문입니다.

libvirtd 구성 /etc/libvirt/qemu.conf를 편집하여 문제를 해결할 수 있습니다. 이 파일 내에서 cgroups_controllers 지시문을 편집하여 cgroup을 나열하지 않도록 해야 합니다. 이 경우 libvirtd는 cgroup 없이 실행할 수 있습니다.

cgroups_controllers =[ ]

그런 다음 libvirtd를 다시 시작해야 합니다. 또는 필요한 cgroup을 수동으로 생성하고 libvirtd 프로세스를 관련 하위 시스템에 할당해야 합니다.

팁 5:중지/재부팅 시 가상 머신이 VMM에서 사라짐

이것은 사실 매우 간단한 문제일 수 있습니다. 가상 머신을 중지하거나 재부팅하면 가상 머신 콘솔이 닫힙니다. 구성이 제자리에 있지만 시스템 관리 주기를 방해해야 하므로 이것은 큰 불편입니다.

가상 머신에 대한 관련 XML 파일에서 on_reboot 절을 찾고 조치가 삭제가 아닌 재시작으로 설정되어 있는지 확인해야 합니다. 그게 전부입니다.

파기
재시작
파기

팁 6:재부팅 작업 없음; 기능이 지원되지 않습니다

다시 말하지만 이전 팁과 매우 관련이 있습니다. 재시작 대신 재부팅을 지정하면 KVM이 실행할 수 없는 잘못된 명령임을 알 수 있습니다. 그러나 다소 많은 오류가 표시될 가능성이 큽니다.

libvirtError:이 기능은 하이퍼바이저에서 지원되지 않습니다:virDomainReboot

재시작을 사용하면 모든 것이 잘 될 것입니다.

팁 7:설치 후 부트로더 오류

경우에 따라 외부 미디어 소스에서 설치한 후 처음 재부팅할 때 GRUB 오류(대부분 15번)가 표시될 수 있습니다. 이는 CD/DVD 이미지를 가상 머신에 연결하고 XML 파일에서 첫 번째 부팅 장치로 선택한 상태로 두면 발생할 수 있습니다. 문제는 이 VirtualBox 버그와 유사하며 일부 Linux 배포판에 영향을 미칩니다. 예:

루트 (hd0,1)
파일 시스템 유형은 ext2fs, 파티션 유형은 0x83입니다.
커널 /boot/vmlinuz

오류 15:파일을 찾을 수 없음

계속하려면 아무 키나 누르십시오...

ISO 이미지를 마운트 해제하고 게스트를 재부팅하여 해결할 수 있습니다. 이번에는 잘 작동해야 합니다. 하드 디스크를 첫 번째 부팅 가능한 장치로 설정하면 문제가 나타나지 않습니다. KVM이 디스크에서 유효한 파티션 테이블을 찾을 수 없는 경우 두 번째 사용 가능한 소스(대부분 PXE 또는 CD/DVD)로 자동 건너뛰기 때문입니다. 지금 설치하는 경우에만 해당됩니다.

오늘은 여기까지 하겠습니다.

더 읽어보기

몇 가지 더 많은 KVM 기사에 관심이 있을 수 있습니다.

KVM 스토리지 및 네트워크 가이드와 연결된 네트워킹

KVM + Virtualbox 병렬 사용 방법

KVM 복제 가이드

결론

첫 번째 문제 해결 가이드에 대한 6가지 팁은 나쁘지 않은 것 같습니다. 이 자습서는 브리지 네트워킹 설정, biosdevname, cgroups + libvirtd 문제 해결, virt-manager에 의해 자동 생성된 중복 도메인 등록 취소 및 게스트 운영 체제 재시작 문제 해결에 중점을 둡니다.

대부분의 작업은 구성 파일을 편집하고 서비스를 다시 시작하여 수행됩니다. 우리는 GUI에 의존하지 않습니다. 명령줄로 변환할 수 있는 모든 작업을 스크립팅하여 더 쉽고 완전히 자동화된 관리를 할 수 있기 때문입니다. 어쨌든, 나는 당신이 그것을 좋아했으면 좋겠다. 속편에 대한 아이디어가 있으면 저에게 핑하십시오.

건배.