사용자 환경에서 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
다음 메뉴에서는 생성할 수 있는 가상 장치 쌍 수를 의미하는 넷루프 수를 늘리거나 줄입니다. 상한선에 도달하면 숫자를 늘리는 것이 좋습니다. 이것은 /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으로 줄이면 문제가 실제로 해결될 수 있습니다. 피>
libvirt는 dom0에 연결하고 이를 로컬 및 원격으로 관리할 때 HTTP를 중복되게 만듭니다. 그러나 일부 사용자는 특히 HTTP/HTTPS를 사용하여 연결하는 OpenXenManager와 같은 도구를 사용하려는 경우 이 옵션에 관심을 가질 수 있습니다. 웹에서 Xen에 액세스할 수 있도록 하려면 xend-config.sxp 구성 파일에서 몇 가지 지시문을 편집해야 합니다.
(xend-http-서버 예)
피>
xend-http-server에 대해 no를 yes로 변경하고 올바른 포트를 지정하십시오. xend-address는 Xend가 청취할 네트워크 인터페이스의 IP 주소를 지정합니다. 기본 빈 따옴표를 그대로 두면 사용 가능한 모든 인터페이스에서 수신 대기합니다. 다음으로 구성 파일을 다시 로드합니다.
/etc/init.d/xend 다시 로드
그런 다음 웹 액세스를 테스트할 수 있습니다.
피>
위 팁의 결론은 virt-manager를 사용하여 dom0에 연결하려고 할 때 못생긴 연결 거부 오류가 발생할 수 있다는 것입니다. Python은 장황하기로 악명 높으므로 추악함에 대비하십시오. 피>
피>
피>
이 문제를 해결하려면 HTTP 액세스를 활성화해야 할 수 있습니다. 또는 애초에 왜 이런 일이 발생하는지 스스로에게 물어볼 필요가 있습니다. 가장 가능성이 높은 이유는 Xen 서비스 중 하나가 실행되고 있지 않아 virt-manager가 레거시 액세스로 대체하도록 하기 때문입니다. HTTP 프로토콜을 사용하지 않으려면 시스템이 모든 관련 Xen 서비스, 특히 libvirtd 및 xend와 함께 부팅되는지 확인하는 것이 좋습니다. 피>
xm create
#xm 테스트1 시작
그리고 이에 상응하는 그래픽:
피>
이는 일반적으로 네트워크 카드나 사운드 카드와 같이 존재하지 않거나 지원되지 않는 하드웨어 구성 요소를 지정했음을 의미합니다. 오류가 있는지 일반적으로 /etc/xen/vm에 저장되는 도메인 구성 파일을 검토하십시오. /var/log/messages와 Xen 오류 로그 - /var/log/xen/xend.log를 참조할 수도 있습니다. 피>
자, 여기 또 다른 것이 있습니다:
#xm 테스트1 생성
도메인 구성 파일의 HVM 커널 설정을 사용하여 반가상화 게스트의 전원을 켜려고 하면 이 문제가 발생할 수 있습니다. 디버그 및 해결이 상당히 간단합니다. 피>
#xm 테스트1 생성
다른 가상 컴퓨터에서 이미 사용 중인 하드 디스크 파일을 다시 사용하려고 하면 이 문제가 나타날 수 있습니다. 또는 내부를 검사하기 위해 어딘가에 루프백 장치로 장착했을 수 있습니다. 피>
vbd 오류에 대해 말하자면, 여기 또 다른 오류가 있습니다.
#xm 테스트1 생성
xend.log에 표시된 이러한 종류의 메시지 변형:
DEBUG (DevController:139) 장치 vscsi를 기다리는 중입니다.
그 이유는 잘못 지정된 하드 디스크 파일이거나 철자 오류로 인해 일부 장치를 잘못 사용했기 때문일 수 있습니다. 이것은 위에 나열된 첫 번째 오류와 유사합니다. 피>
이제 발생할 수 있는 한 가지 질문은 vbd 장치가 어떤 종류인지 아는 방법입니다. 가장 간단한 해결 방법으로 부팅된 Xen domU에서 이를 확인할 수 있습니다. 모든 장치는 /sys/devices/xen/에서 찾을 수 있습니다. 예:
#cat /sys/devices/xen/vbd-768/block/hda/hda1/dev
여기에서 vbd-768은 주 번호가 3인 블록 장치임을 알 수 있습니다. 따라서 hda1은 논리를 나타내는 3:1에 해당합니다. 이 명명법에 대한 자세한 내용은 잠시 후. 피>
특정 가상 머신에 대한 전체 목록:
#ll
더 복잡한 방법은 숫자를 16진수로 변환한 다음 보조 번호에 대해 두 개의 최하위 비트를 사용하고 주요 번호로 나머지 상위 비트를 사용한 다음 온라인 또는 /usr/src/에서 devices.txt 목록을 참조하는 것입니다. 정확한 장치 유형을 해독하기 위한 linux/Documentation. 예를 들어, 십진수 768은 x0300 헥사로 주 번호 3, 부 번호 0을 의미합니다. 이는 첫 번째(0) IDE 장치 또는 hda로 변환됩니다. 마찬가지로 5632는 x1600으로 변환되며 블록 장치의 경우 CD-ROM인 메이저, 마이너 16,00 조합을 의미합니다. 잘, 아니? 이 오래된 Xen 메일링 목록 스레드도 관심을 가질 수 있습니다. 피>
마지막으로 가벼운 것입니다. 게스트를 부팅할 때 일부 고급 설정을 조정할 수 있습니다. 예를 들어 PAE 또는 OpenGL에 관심이 있을 수 있습니다. 가상 머신 마법사에서 올바른 옵션을 표시해야 합니다. 또는 명령줄과 가상 머신 파일에 대해 잘 알고 있다면 거기에 올바른 문자열을 추가하기만 하면 됩니다. 피>
피>
목록에 없는 마지막 팁은 GRUB2를 사용하여 다중 부팅 시스템을 설정하는 것입니다. 새로운 것은 없습니다. 소개 기사에서 이것에 대해 이야기 했으므로 거기에 뛰어 들어 살펴보십시오. 피>
그리고 오늘은 여기서 마치겠습니다. 피>
Python으로 작성된 모든 도구는 관리자를 화나게 하고 귀찮게 하기 위해 가능한 한 많은 오류 세부 정보로 설계되었다고 생각합니다. Xen은 이 범주에 속하며 직면한 문제에 대해 상당히 풍부하고 우아하지 않은 메시지가 있습니다. 사소한 것이 아닙니다. 피>
그래도 이 튜토리얼이 도움이 되었기를 바랍니다. 여기에 약간의 오차가 있음을 인정해야 합니다. 당신은 이러한 제안을 적용하려고 노력하지만 분노와 실망을 느끼며 비참하게 실패할 수 있습니다. 당신에게 고통을 줄 수 있는 정말 수백 가지의 시나리오가 있기 때문입니다. 각각은 조금씩 다릅니다. 어쨌든 일부 팁은 유용해야 합니다. VNC 연결 끊김을 해결하는 방법, 네트워크 문제를 조사하는 방법, 다양한 오류 및 구성 문제 등. 그게 다일 것입니다. 나중에 뵙겠습니다. 피>
건배. 피>
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 위로 팁 3:레거시 HTTP 액세스 활성화
(xend 포트 8000)
(xend 주소 '') 팁 4:오류:'localhost:8000'에 연결할 수 없음:연결 거부됨
팁 5:domU 시작 오류
오류:일시중지를 해제할 수 없는 도메인:정수가 필요합니다.
사용법:xm start <도메인 이름>
구성 파일 "./test1" 사용.
오류:(2, '잘못된 커널', "elf_xen_note_check:오류:Xen-ELF 이미지가 아님:ELF 메모 또는 '__xen_guest' 섹션이 없습니다.\n")
구성 파일 "./test1" 사용.
오류:장치 768(vbd)을 연결할 수 없습니다.
파일 /tmp/disk.raw는 /dev/loop1을 통해 루프백 마운트됩니다.
게스트 도메인에 마운트되는
지금은 마운트할 수 없습니다. 피>
구성 파일 "./test1" 사용.
오류:장치 5632(vbd)를 연결할 수 없습니다. 장치를 찾을 수 없습니다. 피>
DEBUG (DevController:139) 장치 vbd를 기다리는 중입니다.
디버그(DevController:144) 768을 기다리는 중입니다.
경고(XendDomain:1076)
3:1
합계 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 팁 6:고급 설정
결론