실행 중인 QEMU 가상 머신의 이름을 어떻게 확인하나요?

실행 중인 QEMU 가상 머신의 이름을 어떻게 확인하나요?

내가 시작한 QEMU VM의 이름을 확인하고 싶습니다.

qemu-system-x86_64 -m 4096 -smp 1 \
  -net user -net nic,model=virtio -boot menu=on \
  -drive file=guixsd-usb-install-0.13.0.x86_64-linux.img \
-drive file=guixsd.img

(당GuixSD VM 설치 가이드). VM 이름을 결정하려는 이유는 명령을 사용하여 머신 상태를 저장할 수 있기 때문입니다(VirtualBox VM의 경우와 유사) savevm. 나는 다음을 사용해 보았습니다.

virsh -c qemu:///system list

그러나 이것은 다음을 반환합니다:

 Id    Name                           State
----------------------------------------------------

마찬가지로 실행 중:

ps -ef | grep qemu-system-x86_64

(당이 AskUbuntu 답변)은 VM을 시작하는 데 사용한 명령 때문에 도움이 되지 않습니다. 그것이 어떻게든 관련이 있다면 저는 Gentoo Linux를 호스트 OS로 실행하고 있습니다.

답변1

virsh가상화 관리 프레임워크를 운영하는 CLI 도구입니다 libvirt. 해당 프레임워크에서는 관리 인터페이스를 통해 , 등 을 libvirt포함 하여 지원되는 하이퍼바이저를 사용하여 가상 머신을 정의합니다 .qemuxenvirtualbox

libvirt와 같은 것 이상의 추상화 수준을 제공합니다 qemu. 그것으로 당신은 qemu직접 시작하지 않을 것입니다. 대신 와 상호 작용할 수 있는 몇 가지 특수 옵션으로 libvirt시작합니다 .qemuqemu

예를 들어 내 시스템에서 libvirt해당 VM에 대한 매개변수를 사용하여 qemu를 시작했습니다.

qemu-system-x86_64  -enable-kvm \
                    -name freebsd11.0 -S \
                    -machine pc-i440fx-wily,accel=kvm,usb=off \
                    -cpu Nehalem \
                    -m 1536 \
                    -realtime mlock=off \
                    -smp 3,sockets=3,cores=1,threads=1 \
                    -uuid 82f3448e-2767-46b1-a7d1-7072184ef924 \
                    -no-user-config \
                    -nodefaults \
                    -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-freebsd11.0/monitor.sock,server,nowait \
                    -mon chardev=charmonitor,id=monitor,mode=control \
                    -rtc base=utc,driftfix=slew \
                    -global kvm-pit.lost_tick_policy=discard \
                    -no-hpet \
                    -no-shutdown \
                    -global PIIX4_PM.disable_s3=1 \
                    -global PIIX4_PM.disable_s4=1 \
                    -boot strict=on \
                    -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 \
                    -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 \
                    -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 \
                    -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 \
                    -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
                    -drive file=/home/chazelas/Downloads/FreeBSD-11.0-RC1-amd64.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
                    -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
                    -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28 \
                    -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:11:8a:53,bus=pci.0,addr=0x3 \
                    -chardev pty,id=charserial0 \
                    -device isa-serial,chardev=charserial0,id=serial0 \
                    -chardev spicevmc,id=charchannel0,name=vdagent \
                    -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 \
                    -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on \
                    -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 \
                    -device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
                    -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
                    -chardev spicevmc,id=charredir0,name=usbredir \
                    -device usb-redir,chardev=charredir0,id=redir0 \
                    -chardev spicevmc,id=charredir1,name=usbredir \
                    -device usb-redir,chardev=charredir1,id=redir1 \
                    -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 \
                    -msg timestamp=on

그 중 대부분은 가상 머신의 가상 하드웨어 사양이지만 다음도 볼 수 있습니다.

-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-freebsd11.0/monitor.sock,server,nowait 
-mon chardev=charmonitor,id=monitor,mode=control

libvirt상호 작용할 수 있는 채널을 지정합니다 qemu(일부 JSON 기반 사용).기계규약)

그러나 당신은 그것을 직접 사용하지 않을 것입니다. virsh와 같은 명령을 내리게 됩니다 virsh shutdown. virsh이를 데몬에 전송하면 해당 채널을 사용하여 특정 명령 libvirtd으로 변환됩니다 qemu.

그러나 귀하의 경우에는 libvirt. virt-manager또는 virt-install(또는 ) 을 사용하여 VM을 정의하지 않았습니다 virsh define/create. 대신 qemu직접 수동으로 시작했습니다 .

libvirt, 설치된 경우 해당 VM에 대한 지식이 없습니다. 따라서 virsh그것과 상호 작용하는 데 사용할 필요가 없습니다 .

당신이 시작한 방식에서는 qemu특별한 것을 지정하지 않았습니다.감시 장치채널과 상호작용할 수 있으므로 기본값을 얻게 됩니다.

기본적으로 일반적으로SDL그래픽 콘솔.

거기에 입력 Ctrl+Alt+2하여 얻을 수 있습니다인간모니터 인터페이스. 그것은 명령줄 인터페이스입니다. 당신은 볼 수 있습니다

 (qemu) 

명령을 입력할 수 있는 프롬프트입니다. help요약을 들어 보세요 .

만약 당신이 ~을 주었다면이름을 사용하여 VM에 연결하면 거기에서 명령 -name을 사용하여 검색할 수 있습니다 info name.

여기에서 savevmqemu 명령을 실행할 수 있습니다. 그러나 AFAIK 명령을 사용하려면 VM에 디스크 이미지가 savevm하나 이상 연결되어 있어야 하는데 qcow2이는 해당되지 않는 것 같습니다.

VM 상태를 일시 중단하고 저장하려면 프롬프트에서 다음을 수행할 수 있습니다 (qemu).

migrate "exec:gzip>/path/to/savedstate.gz"

VM을 일시 중단하고 압축된 상태를 파일에 저장합니다. 그런 다음 나중에 명령줄 에 quit추가하여 저장된 상태에서 VM을 다시 가져올 수 있습니다 .-incoming 'exec:gunzip</path/to/savestate.gz'qemu-system

qemu를 잘 안다면 할 수 있는 일이 아주 많지만, 삶을 더 쉽게 만들고 싶다면 아마도 libvirt와 같은 qemu 관련 관리 래퍼를 사용할 것입니다.

관련 정보