libvirt는 가상 머신이 완전히 시작되었는지 확인할 수 있나요? 다른 도구를 사용할 수 있나요?

libvirt는 가상 머신이 완전히 시작되었는지 확인할 수 있나요? 다른 도구를 사용할 수 있나요?

현재 일부 테스트를 위한 작은 가상 머신이 있습니다(다른 배포판인 Fedora 15에서 테스트하고 make distcheck오염 문제 없이 실행하는 등 여러 가지 이점이 있습니다 /).

그러나 테스트를 자동화하고 프로그래밍 방식으로 다음을 수행할 수 있기를 원합니다(예: sh, python, c... 사용).

  • qemu로컬 이미지에서 VM의 헤드리스 부팅( )
  • VM이 완전히 부팅될 때까지 기다립니다(가장 어려운 부분입니다. 처음에는 매직 슬립을 생각했습니다).
  • 호스트와 게스트 간 저장소 동기화(현재는 필요하지 않음)
  • ./autogen && make && sudo make install && sudo make distcheck머신에서 실행
  • 머신에서 생성된 타르볼을 다운로드하세요.

저는 libvirtAPI를 사용하여 이 작업을 수행할 수 있는 방법에 대해 읽기 시작했습니다. 이를 위해서는 게스트 지원이 필요하고 이에 대한 문서를 찾을 수 없지만 이 기능은 libvirt.

머신이 완전히 부팅되었는지 확인할 수 있나요? 이를 수행할 수 있는 기성 도구가 있습니까?

편집하다:전체 시작은 시스템 rc 스크립트의 실행이 완료되었거나 시작되어야 하는 모든 시스템 서비스가 시작되었음을 의미합니다. 나는 qemu가 언제 그런 일이 발생하는지 알 방법이 없다는 것을 알고 있지만 고객 측의 지원이 있다고 가정합니다.

답변1

Afaik, libvirt는 "전체 부팅"이 무엇을 의미하는지 모릅니다(저도 마찬가지입니다). 시작하는 동안 호스트(또는 다른 컴퓨터)에 연결하는 서비스를 만들 수 있습니다. 또는 예를 들어 SSH를 사용하여 루프로 게스트에 연결해 볼 수도 있습니다.

또 다른 해결책은 vdagent와 같이 호스트와 통신하는 기존 서비스에 의존하는 것입니다. Spice 프록시 채널이 연결될 때까지 기다리는 spice-gtk Python 스크립트를 쉽게 작성할 수 있습니다(spicy.c 예제 참조, 상태 표시줄은 프록시의 존재를 나타냄).

"make distcheck" 테스트는 /를 오염시키지 않아야 하며 sudo가 필요하지 않습니다. 그렇다면 makefile에 문제가 있는 것 같습니다.

답변2

다른 스크립트 다음에 실행되고 "전체 부팅" 메시지를 기록하는 rc 스크립트를 만드는 것은 어떨까요? 그런 다음 syslog를 vm 호스트로 전달하고 메시지가 호스트의 로그 파일에 나타날 때까지 기다립니다.

어쨌든, 그게 내가 할 일이야.

답변3

이 도구를 가상 머신에 설치할 수 있습니다. http://wiki.libvirt.org/page/Qemu_guest_agent Qemu_guest_agent는 가상 머신이 완전히 시작되면 알려줍니다.

VM에 Spice 게스트 에이전트를 설치할 수도 있습니다. Spice 게스트 에이전트가 시작되면 VM이 완전히 시작됩니다.

답변4

이는 libvirt와 관련이 없을 수 있습니다. 완전히 부팅된 게스트의 경우 일부 포트가 수신 대기 중일 수 있으며, Linux의 경우 22, Windows의 경우 나열된 포트 중 하나일 수 있습니다.여기. 이를 사용하여 nc게스트가 해당 포트에서 수신 대기하는지 테스트할 수 있습니다.

때로는 nc이것이 최선의 옵션이 아니며(timeout 옵션이 nc작동하지 않음) 포트에 연결하기 위해 간단한 TCP 클라이언트를 작성하는 것이 더 편리합니다.

관련 정보