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

더 많은 Xen 문제 해결

사용자 환경에서 Xen을 시도하고 테스트할 때 발생할 수 있는 몇 가지 일반적인 Xen 문제에 대한 자습서가 있었습니다. 팁과 요령의 첫 번째 배치는 디스플레이 문제, Python 버전 및 모듈, 래퍼 스크립트 변경 및 명시적 명령 실행, 문제 해결 서비스에 중점을 두었습니다.

오늘, 우리는 더 깊이 파고들어 여러분이 접했거나 접하지 않았을 수 있는 몇 가지 더 많은 문제를 이해하고 수정하고 해결하려고 노력합니다. 솔루션 중 일부는 임시방편일 수 있으므로 내 말을 그대로 받아들이지는 않겠지만 전반적으로 잘 작동한다고 생각합니다. 하지만 이 책을 읽은 후 Xen 경험이 더 많아지기를 바랍니다.

팁 1:하이퍼바이저 호스트에 대한 VNC 연결이 거부되거나 연결이 끊겼습니다

Virtual Machine Manager(virt-manager)를 시작한 후 VNC를 사용하여 가상 머신의 내용을 볼 수 있는 옵션이 있습니다. 그러면 관련 도메인의 콘솔 내용이 표시됩니다. 때때로 콘솔이 공백으로 바뀌고 위의 제목에 쓰여진 오류가 발생할 수 있습니다. 질문, 지금 무엇을 합니까?

내 경험에 따르면 게스트 운영 체제가 다시 시작되거나 종료될 때마다 이런 일이 발생합니다. 전원을 다시 켜면 콘텐츠를 보려면 콘솔을 다시 열어야 하는 불편함이 있습니다. virt-viewer를 사용하는 경우에도 마찬가지입니다.

virt-viewer <도메인>

도메인이 재부팅되거나 재설정되거나 전원이 꺼지면 연결이 끊어집니다. 현재 간단한 해결책은 virt-manager 또는 virt-viewer를 통해 콘솔 창을 다시 여는 것입니다.

또는 연결을 설정하려면:

virsh vncdisplay <도메인>
vncviewer

팁 2:게스트가 실행되는 동안 vif가 사라지고 더 이상 네트워킹이 필요하지 않음

가상 머신이 실행되는 동안 일반적으로 vifX.X 레이블이 지정된 가상 네트워크 인터페이스가 ifconfig 목록에서 사라지고 게스트가 쓸모없는 벽돌로 변하는 경우가 발생할 수 있습니다.

이 문제는 가상 머신 내부의 관련 네트워크 인터페이스 MAC 주소가 모두 0으로 바뀌는 경우에도 나타날 수 있습니다. 그리고 호스트(dom0)에서 /var/log/messages에 다음 종류의 항목이 표시될 수 있습니다.

커널:[ 109.743854] br0:포트 2(vif1.0) 학습 상태 진입
커널:[ 109.811880] br0:포트 3(tap1.0) 학습 상태 진입
kernel:[ 117.369189] br0:포트 3(tap1.0) 비활성화 상태 진입
커널:[ 117.398076] 장치 tap1.0 왼쪽 무차별 모드
kernel:[ 117.398083] br0:포트 3(tap1.0) 비활성화 상태 진입
커널:[ 117.815006] br0:포트 2(vif1.0) 비활성화 상태 진입
커널:[ 117.850075] br0:포트 2(vif1.0)가 비활성화 상태로 전환 중

그렇다면 이와 같은 문제를 해결하려면 어떻게 해야 할까요? 몇 가지 옵션이 있습니다. 하나는 문제를 불가사의하게 해결할 수 있는 커널 업그레이드입니다. Xen 네트워킹 스택에서 경쟁 조건을 수정하는 것과 비슷합니다.

두 번째 옵션은 /etc/xen/xend-config.sxp 아래에 있는 Xen 구성 파일에서 네트워크 설정을 조정하는 것입니다. 이 파일에는 브리지 및 가상 네트워크 인터페이스를 설정하는 방법을 포함하여 모든 종류의 지시문이 포함되어 있습니다. 많은 사람들은 네트워킹이 다소 버그가 있으며 사용자가 직접 스크립트를 수동으로 구성해야 한다고 주장합니다.

특히 다음 지시어를 변경하십시오.

(네트워크 스크립트 네트워크 브리지)에서 (네트워크 스크립트)

또한 브리지를 수동으로 구성해야 합니다. 테스트하는 동안 brctl 및 ifconfig 명령을 사용해야 하며 변경 사항이 확실하다고 확신하면 네트워크 스크립트에 영구적으로 커밋해야 합니다. RedHat 및 SUSE 시스템에서 이것은 /etc/sysconfig/network에서 네트워크 카드에 대한 기존 네트워크 스크립트를 변경하고 /etc/interfaces 구성을 편집하여 Debian 기반 시스템에서 ifcfg-br를 생성하는 것을 의미합니다. 파일. 말할 필요도 없이 백업은 필수입니다.

다음은 수동 브리지 구성의 예입니다.

brctl addbr br0
brctl setfd br0 0
ifconfig br0 10.0.0.128 최대 넷마스크 255.255.255.0
brctl addif br0 eth0
경로 추가 -net 기본 gw 10.0.0.254 br0
ifconfig eth0 0.0.0.0 위로

다음 메뉴에서는 생성할 수 있는 가상 장치 쌍 수를 의미하는 넷루프 수를 늘리거나 줄입니다. 상한선에 도달하면 숫자를 늘리는 것이 좋습니다. 이것은 /etc/modprobe.d 아래에 netloop라는 파일을 만들고 내부에 작성하여 수행됩니다.

option netloop nloopbacks=<일부 높은 숫자, 예:16, 32>

또는 이 옵션을 /etc/modprobe.conf에 추가하기만 하면 됩니다.

이 주제에 대한 추가 정보:

젠 네트워킹

문제 해결 노트와 함께 설명된 Xen 네트워크 브리지

xen에서 SLES 네트워킹, 문제 해결 및 권장 사항

간편한 Xen 네트워킹

리눅스 네트워킹은 형편없다. XEN 네트워킹은 형편없습니다.

추가 Xen 가상 네트워크 브리지 만들기

이런 일이 발생했을 때 커널 충돌이 발생하는 경우 다음 두 링크도 관심을 가질 수 있습니다. 매우 괴짜임을 주의하세요.

mm/vmalloc.c:2165의 커널 버그

[PATCH] mm:alloc_vm_area()에서 vmalloc 주소 공간 페이지 테이블 동기화

netloops의 수를 0으로 줄이면 문제가 실제로 해결될 수 있습니다.

팁 3:레거시 HTTP 액세스 활성화

libvirt는 dom0에 연결하고 이를 로컬 및 원격으로 관리할 때 HTTP를 중복되게 만듭니다. 그러나 일부 사용자는 특히 HTTP/HTTPS를 사용하여 연결하는 OpenXenManager와 같은 도구를 사용하려는 경우 이 옵션에 관심을 가질 수 있습니다. 웹에서 Xen에 액세스할 수 있도록 하려면 xend-config.sxp 구성 파일에서 몇 가지 지시문을 편집해야 합니다.

(xend-http-서버 예)
(xend 포트 8000)
(xend 주소 '')

xend-http-server에 대해 no를 yes로 변경하고 올바른 포트를 지정하십시오. xend-address는 Xend가 청취할 네트워크 인터페이스의 IP 주소를 지정합니다. 기본 빈 따옴표를 그대로 두면 사용 가능한 모든 인터페이스에서 수신 대기합니다. 다음으로 구성 파일을 다시 로드합니다.

/etc/init.d/xend 다시 로드

그런 다음 웹 액세스를 테스트할 수 있습니다.

팁 4:오류:'localhost:8000'에 연결할 수 없음:연결 거부됨

위 팁의 결론은 virt-manager를 사용하여 dom0에 연결하려고 할 때 못생긴 연결 거부 오류가 발생할 수 있다는 것입니다. Python은 장황하기로 악명 높으므로 추악함에 대비하십시오.

이 문제를 해결하려면 HTTP 액세스를 활성화해야 할 수 있습니다. 또는 애초에 왜 이런 일이 발생하는지 스스로에게 물어볼 필요가 있습니다. 가장 가능성이 높은 이유는 Xen 서비스 중 하나가 실행되고 있지 않아 virt-manager가 레거시 액세스로 대체하도록 하기 때문입니다. HTTP 프로토콜을 사용하지 않으려면 시스템이 모든 관련 Xen 서비스, 특히 libvirtd 및 xend와 함께 부팅되는지 확인하는 것이 좋습니다.

팁 5:domU 시작 오류

xm create 또는 xm start 을 사용하여 도메인의 전원을 켜려고 하면 화가 나거나 혼란스러울 수 있는 몇 가지 오류 메시지가 표시될 수 있습니다. 이들 중 일부를 분석하고 문제가 무엇인지 이해해 봅시다.

#xm 테스트1 시작
오류:일시중지를 해제할 수 없는 도메인:정수가 필요합니다.
사용법:xm start <도메인 이름>

그리고 이에 상응하는 그래픽:

이는 일반적으로 네트워크 카드나 사운드 카드와 같이 존재하지 않거나 지원되지 않는 하드웨어 구성 요소를 지정했음을 의미합니다. 오류가 있는지 일반적으로 /etc/xen/vm에 저장되는 도메인 구성 파일을 검토하십시오. /var/log/messages와 Xen 오류 로그 - /var/log/xen/xend.log를 참조할 수도 있습니다.

자, 여기 또 다른 것이 있습니다:

#xm 테스트1 생성
구성 파일 "./test1" 사용.
오류:(2, '잘못된 커널', "elf_xen_note_check:오류:Xen-ELF 이미지가 아님:ELF 메모 또는 '__xen_guest' 섹션이 없습니다.\n")

도메인 구성 파일의 HVM 커널 설정을 사용하여 반가상화 게스트의 전원을 켜려고 하면 이 문제가 발생할 수 있습니다. 디버그 및 해결이 상당히 간단합니다.

#xm 테스트1 생성
구성 파일 "./test1" 사용.
오류:장치 768(vbd)을 연결할 수 없습니다.
파일 /tmp/disk.raw는 /dev/loop1을 통해 루프백 마운트됩니다.
게스트 도메인에 마운트되는
지금은 마운트할 수 없습니다.

다른 가상 컴퓨터에서 이미 사용 중인 하드 디스크 파일을 다시 사용하려고 하면 이 문제가 나타날 수 있습니다. 또는 내부를 검사하기 위해 어딘가에 루프백 장치로 장착했을 수 있습니다.

vbd 오류에 대해 말하자면, 여기 또 다른 오류가 있습니다.

#xm 테스트1 생성
구성 파일 "./test1" 사용.
오류:장치 5632(vbd)를 연결할 수 없습니다. 장치를 찾을 수 없습니다.

xend.log에 표시된 이러한 종류의 메시지 변형:

DEBUG (DevController:139) 장치 vscsi를 기다리는 중입니다.
DEBUG (DevController:139) 장치 vbd를 기다리는 중입니다.
디버그(DevController:144) 768을 기다리는 중입니다.
경고(XendDomain:1076) 에 대한 장치 설정 실패:장치 768(vbd)을 연결할 수 없습니다. 장치를 찾을 수 없습니다.

그 이유는 잘못 지정된 하드 디스크 파일이거나 철자 오류로 인해 일부 장치를 잘못 사용했기 때문일 수 있습니다. 이것은 위에 나열된 첫 번째 오류와 유사합니다.

이제 발생할 수 있는 한 가지 질문은 vbd 장치가 어떤 종류인지 아는 방법입니다. 가장 간단한 해결 방법으로 부팅된 Xen domU에서 이를 확인할 수 있습니다. 모든 장치는 /sys/devices/xen/에서 찾을 수 있습니다. 예:

#cat /sys/devices/xen/vbd-768/block/hda/hda1/dev
3:1

여기에서 vbd-768은 주 번호가 3인 블록 장치임을 알 수 있습니다. 따라서 hda1은 논리를 나타내는 3:1에 해당합니다. 이 명명법에 대한 자세한 내용은 잠시 후.

특정 가상 머신에 대한 전체 목록:

#ll
합계 0
drwxr-xr-x 2 루트 루트 0 12월 18일 12:07 전원
-rw-r--r-- 1 루트 루트 4096 12월 18일 12:07 uevent
drwxr-xr-x 4 루트 루트 0 12월 18일 12:05 vbd-5632
drwxr-xr-x 4 루트 루트 0 12월 18일 12:05 vbd-768
drwxr-xr-x 3 루트 루트 0 12월 18일 12:05 vfb-0
drwxr-xr-x 4 루트 루트 0 12월 18일 12:05 vif-0

더 복잡한 방법은 숫자를 16진수로 변환한 다음 보조 번호에 대해 두 개의 최하위 비트를 사용하고 주요 번호로 나머지 상위 비트를 사용한 다음 온라인 또는 /usr/src/에서 devices.txt 목록을 참조하는 것입니다. 정확한 장치 유형을 해독하기 위한 linux/Documentation. 예를 들어, 십진수 768은 x0300 헥사로 주 번호 3, 부 번호 0을 의미합니다. 이는 첫 번째(0) IDE 장치 또는 hda로 변환됩니다. 마찬가지로 5632는 x1600으로 변환되며 블록 장치의 경우 CD-ROM인 메이저, 마이너 16,00 조합을 의미합니다. 잘, 아니? 이 오래된 Xen 메일링 목록 스레드도 관심을 가질 수 있습니다.

팁 6:고급 설정

마지막으로 가벼운 것입니다. 게스트를 부팅할 때 일부 고급 설정을 조정할 수 있습니다. 예를 들어 PAE 또는 OpenGL에 관심이 있을 수 있습니다. 가상 머신 마법사에서 올바른 옵션을 표시해야 합니다. 또는 명령줄과 가상 머신 파일에 대해 잘 알고 있다면 거기에 올바른 문자열을 추가하기만 하면 됩니다.

목록에 없는 마지막 팁은 GRUB2를 사용하여 다중 부팅 시스템을 설정하는 것입니다. 새로운 것은 없습니다. 소개 기사에서 이것에 대해 이야기 했으므로 거기에 뛰어 들어 살펴보십시오.

그리고 오늘은 여기서 마치겠습니다.

결론

Python으로 작성된 모든 도구는 관리자를 화나게 하고 귀찮게 하기 위해 가능한 한 많은 오류 세부 정보로 설계되었다고 생각합니다. Xen은 이 범주에 속하며 직면한 문제에 대해 상당히 풍부하고 우아하지 않은 메시지가 있습니다. 사소한 것이 아닙니다.

그래도 이 튜토리얼이 도움이 되었기를 바랍니다. 여기에 약간의 오차가 있음을 인정해야 합니다. 당신은 이러한 제안을 적용하려고 노력하지만 분노와 실망을 느끼며 비참하게 실패할 수 있습니다. 당신에게 고통을 줄 수 있는 정말 수백 가지의 시나리오가 있기 때문입니다. 각각은 조금씩 다릅니다. 어쨌든 일부 팁은 유용해야 합니다. VNC 연결 끊김을 해결하는 방법, 네트워크 문제를 조사하는 방법, 다양한 오류 및 구성 문제 등. 그게 다일 것입니다. 나중에 뵙겠습니다.

건배.