Articles of qemu

在Debian 9下的Xen上使用virt-manager创build虚拟机Stretch接收错误:'operation failed:Failed to balloon domain0 memory'

我在一个ThinkPad E431与i7处理器和[MemTotal:11679824 kB] 我与Debian 9拉伸内核4.9.0-3-amd64没有LVM 我用VirtualBox,这是简单和function,但我需要现在的嵌套虚拟机function,没有在VirtualBox。 我只需要一个带有很多容器的Windows 10企业虚拟机,其他的嵌套虚拟机可以用作开发环境。 Xen中存在嵌套的虚拟机function,以及如何在新的Debian上安装最完整的虚拟机: su apt-get update apt-get upgrade apt-get dist-upgrade apt-get install linux-headers-$(uname -r) build-essential apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware blueman apt-get install tmux tree galculator net-tools sudo sudo adduser myuser sudo uname -r [ -d /sys/firmware/efi ] && echo Xen fail under UEFI || echo Xen works […]

qemu-img create preallocation = falloc其次是virt-sparsify,vs qemu-img create preallocation = off

我使用2种不同的方法创build了2个磁盘映像文件。 方法1: qemu-img create -f qcow2 -o preallocation=falloc mydisk-falloc.qcow2 50G (将一些数据保存在磁盘中) virt-sparsify mydisk-falloc.qcow2 mydisk-falloc-sparse.qcow2 方法2: qemu-img create -f qcow2 -o preallocation=off mydisk-off.qcow2 50G (保存与方法1相同的数据到磁盘中) 我发现mydisk-falloc-sparse.qcow2和mydisk-off.qcow2的文件大小几乎相同。 从技术上讲,这两个文件有没有区别? 如果我想创build一个具有小文件大小和实际小磁盘使用率的稀疏磁盘映像文件,我应该使用哪种方法?

是否有可能在主机端检测virtio串行设备是否在guest虚拟机中打开?

我正在尝试使用virtio-serial在QEMU guest和host之间build立通信。 我使用以下命令运行VM: qemu-system-x86_64 \ -m 2048 -hda ubuntu_image \ -device virtio-serial \ -chardev socket,path=/tmp/foo,server,nowait,id=foo \ -device virtserialport,chardev=foo,name=org.ubuntu.foo \ 在客人我运行用C写的简单的程序打开并写入一些数据到virtio端口设备: /dev/virtio-ports/org.ubuntu.foo 在主机端我使用一些简单的程序,也用C写的打开并从套接字读取数据: /tmp/foo 当客人closures设备时,我需要在程序中检测到,但是这是一个问题,因为我无法检测到virtio端口设备是否在guest虚拟机中被打开或closures,而在guest虚拟机中,我可以检测到主机端是否连接read()的返回值,0表示主机端未连接。 read()在主机端的行为是: 如果套接字以非阻塞模式打开,则返回-1,而errno被设置为EAGAIN,否则在两种情况下都阻塞 – 当客户打开设备时。 我一直在寻找可能的方法来检查virtio端口设备是否在guest虚拟机中打开或closures,但目前还没有结果。 是否有可能改变chardev的行为,以便在客人打开/closuresvirtio端口设备时通知主机?

客户操作系统上的QEMU和串行端口

有没有人成功地在QEMU / KVM中成功pipe理客户机操作系统,客户机可以完全访问主机串行端口(无论是/ dev / ttyS0,COM1还是由主机提供的虚拟串行端口)。 看来关于-chardev,-serial等等的文档有点混乱(至less对我来说)。 我的印象是Guest OS能够看到/使用一个串行端口,只要在启动Guest时传递适当的参数。 但是很多人都说“不,串行端口只能用于QEMU / KVM中Guest OS和Host之间的控制台redirect”……这是没有意义的,因为QEMU / KVM似乎是运行旧东西的好方法需要与RS232设备和类似的交谈。 另外,如果主机上没有物理串口,如何“创build一个”? 目前,我正在使用NetSerial,它实际上创build一个“COM端口”(与“调制解调器”连接到它)。 但QEMU似乎也不太喜欢这个构造。

在Fedora 26下,为什么“virsh start”不能启动一个引用“sudo virsh net-list”显示正在运行的networking的QEMU VM呢?

在Fedora 26下,我使用“GNOME Boxes”来创build一个虚拟机。 这个默认行为 – 请让我知道,如果这不是你的经验,对于FEDORA 26 – 是创build一个通过桥接networking,而不是NAT连接的QEMU虚拟机。 这不适合我的用例 – 我不希望机器在大厅里能够启动与客人的连接。 总之,我想在VirtualBox中是“NAT”,而不是“Bridged”联网。 我相信我已经正确地重新configurationlibvirtd的默认networking使用NAT: sudo virsh net-dumpxml default <network> <name>default</name> <uuid>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='xx:xx:xx:xx:xx:xx'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network> networking似乎正在运行: $ sudo virsh net-destroy default Network default destroyed $ […]

从打包器构build访问虚拟机外部

我想了解qemu和kvm桥是如何工作的。 我尝试使用packeer创build一个新的qcow2图像(infra),以在kvm libvirt的terraform上使用它。 我在networking192.168.2.0/24networking中有一个更新虚拟池和更新回收站当我运行打包程序生成infra.json( https://gist.github.com/mfatrez/9b840bfa6422aa3400c60254790e97e5 )下面的虚拟机无法与他的外部通信自己的networking10.0.2.0/24 如何从networking(10.0.2.0/24)中的infra vm {{.HTTPIP}访问update vm(192.168.2.2)? 谢谢

qemu-img commit qcow2 snap破坏后备存储(XFS文件系统)

昨天我们在Centos 7.4虚拟机中尝试了yum更新,正如我们之前所做的那样,使用qcow2快照,使用主映像作为后备存储,如本教程中所述: http://dustymabe.com/2015/01/11/qemu-img-backing-files-a-poor-mans-snapshotrollback/ 然而,毕竟看起来不错,我closures了虚拟机,将SNAP提交到主映像,并将虚拟机修改为再次指向主存储。 引导出惊喜之后,不再启动,经过几个小时的debugging,我们的团队就能指出XFS文件系统已经损坏,并尝试用xfs_repair修复它。 pipe理修复它,但现在我们有几个问题与破包(我们将能够修复RPM / YUM)。 将这些快照提交到源qcow2图像不安全吗? 过去我们已经做到了这一点,过去一直没有问题。 我没有意识到我们可能因此而出现任何问题。 迄今为止这样做了几次。 这是否可以实现,我们有一个比在Gues操作系统上的KVMpipe理程序更旧的Centos? KVM有Centos 7.2,而VM有Centos 7.4,都使用XFS文件系统。 请指教。 过去有没有人有这个问题?

如何使用qemu-bridge-helper获取在本地networking上运行的虚拟服务器?

我想从本地networking的任何地方访问我的虚拟服务器。 为了简化networking,我宁愿使用qemu-bridge-helper ,因为我在这方面比较薄弱。 在阅读了Arch维基 ,试图理解Gentoo维基 ,并在YouTube上观看一个不成功的教程之后 ,我觉得我已经把我的需求简化为一些简单的命令 – 但是我仍然不知道我要去哪里错误。 以下是我的configuration: 主机configuration(arch linux) # Create the bridge ip link add name br0 type bridge ip link set dev br0 up # Not sure if this is necessary. Causes loss of connectivity on host. ip link set eth0 master br0 # Assign an IP address to the […]

USB直通不能使用virt-manager / qemu

我已经使用virt-manager 1.3.2创build了一个虚拟机,并想添加一个USB设备。 但是,使用lsusb时,USB设备不会显示在guest lsusb (Debian)中。 在另一个我没有virt-manager创build的虚拟机中,USB直通工作。 virt-manager使用以下命令启动虚拟机: qemu-system-x86_64 -enable-kvm -name deb8qtm1 -S -machine pc-i440fx-xenial,accel=kvm,usb=off -cpu Nehalem -m 1024 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 08d8f6d3-10d0-49c6-81e5-642651536a57 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-deb8qtm1/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 nec-usb-xhci,id=usb,bus=pci.0,addr=0x6 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/var/lib/libvirt/images/deb8qtm1.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 -drive if=none,id=drive-ide0-0-0,readonly=on -device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev […]

将qemu语法转换为virt-install或virsh xml

我有参数为qemu-system-x86_64,它将unix套接字作为接口连接到VM: qemu-system-x86_64 -chardev socket,id=char1,path=/tmp/sock0,server \ -netdev type=vhost-user,id=hostnet1,chardev=char1 \ -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:00:00:14 我如何将这个接口连接到由virt-install创build的KVM虚拟mashine?