VM이 제대로 종료되었는지 확인하는 방법은 무엇입니까?

VM이 제대로 종료되었는지 확인하는 방법은 무엇입니까?

내 홈 서버는 VM의 VirtualBox를 통해 여러 다른 서버를 실행합니다.

특히 어떤 이유로든 제대로 종료되지 않으면 grub 메뉴에서 자동 선택되지 않는 웹 서버가 있습니다. 즉, 서버에서 수동으로 재설정할 때까지 서버가 정지됩니다.

서버가 종료될 때마다 VM이 제대로 종료되는지 어떻게 확인할 수 있나요?

추가 정보: "서버"는 실제로 오래된 노트북이며 Ubuntu Desktop 11.04를 실행하고 있으며 헤드리스가 아닙니다(미디어 센터도 실행함).

답변1

VBoxManage명령을 사용하여 명령줄에서 가상 머신을 제어 할 수 있습니다 . 이를 통해 전원을 끄기 전에 VM을 종료할 수 있는 스크립트를 생성할 수 있습니다.

매우 기본적인 스크립트를 실행하여 VM 및 호스트를 종료할 수 있습니다.

#!/bin/bash
# poff.sh - poweroff the vm, then the host...

VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1

또는 .bashrc 파일에 추가된 별칭과 동일한 명령을 사용할 수 있습니다.

alias poff='VBoxManage controlvm VMNAME acpipowerbutton && sudo shutdown -P 1' # poweroff the vm, then the host...

이는 귀하의 정확한 요구 사항에 맞게 구축할 수 있는 매우 기본적인 예입니다. 또한 OS 구성에서 올바르게 작동하도록 수정해야 할 수도 있습니다.

답변2

저는 Windows Server 2003 VM을 호스팅하는 Debian에서 실행되는 qemu를 사용하여 이 작업을 수행했습니다. Win2k3 VM에서 "긴급 관리 서비스"를 활성화했습니다. 그러면 직렬 포트에 "특수 관리 콘솔"이 제공됩니다. qemu를 사용하면 가상 직렬 포트를 "텔넷" 포트에 연결할 수 있으므로 로컬 호스트 주소를 제공했습니다. SAC를 사용하면 직렬 포트를 통해 명령을 실행하여 시스템을 깔끔하게 종료할 수 있으며, "긴급 백도어"와 같기 때문에 VM에서 다른 일이 발생하더라도 매우 안정적인 경향이 있습니다.

expect그런 다음 직렬 기반 SAC에 "로그인"하고 종료 명령을 실행하는 간단한 스크립트를 만들었습니다 . 이는 이 스크립트를 호출 expect하고 qemu 프로세스가 종료될 때까지 2분 동안 기다리는 다른 스크립트로 래핑되었습니다. 프로세스가 종료되지 않으면 강제로 종료됩니다. 종료 시 이 스크립트를 호출하도록 Linux를 설정하면 가능한 경우 VM이 항상 깔끔하게 종료됩니다.

따라서 상황에 맞게 이 방법을 적용할 수 있습니다.

Linux VM이 있는 경우 SSH를 통해 VM에 로그인하고 시스템을 올바르게 종료하는 스크립트를 호출하는 Ubuntu 시스템에 작은 스크립트를 만들 수 있습니다.

관련 정보