
내가 시작한 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
포함 하여 지원되는 하이퍼바이저를 사용하여 가상 머신을 정의합니다 .qemu
xen
virtualbox
libvirt
와 같은 것 이상의 추상화 수준을 제공합니다 qemu
. 그것으로 당신은 qemu
직접 시작하지 않을 것입니다. 대신 와 상호 작용할 수 있는 몇 가지 특수 옵션으로 libvirt
시작합니다 .qemu
qemu
예를 들어 내 시스템에서 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
.
여기에서 savevm
qemu 명령을 실행할 수 있습니다. 그러나 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 관련 관리 래퍼를 사용할 것입니다.