欢迎光临散文网 会员登陆 & 注册

[QEMU]虚拟机间共享内存设备

2022-07-20 17:43 作者:-小白之家-  | 我要投稿

在 Linux 主机上,共享内存设备可用。基本语法为:

qemu-system-x86_64 -device ivshmem-plain,memdev=hostmem

其中 hostmem 命名主机内存后端。对于 POSIX 共享内存后端,请使用类似

-object memory-backend-file,size=1M,share,mem-path=/dev/shm/ivshmem,id=hostmem

如果需要,可以在访问同一共享内存区域的客户机 VM 之间发送中断。中断支持需要使用共享内存服务器并使用 chardev 套接字连接到它。共享内存服务器的代码是 qemu.git/contrib/ivshmem-server。使用共享内存服务器时的示例语法是:

# First start the ivshmem server once and for all ivshmem-server -p pidfile -S path -m shm-name -l shm-size -n vectors # Then start your qemu instances with matching arguments qemu-system-x86_64 -device ivshmem-doorbell,vectors=vectors,chardev=id                 -chardev socket,path=path,id=id

使用服务器时,将为来宾分配一个 VM ID (>=0),允许使用同一服务器的来宾通过中断进行通信。来宾可以从设备寄存器读取其 VM ID(请参阅 ivshmem-spec.txt)。

使用 ivshmem 迁移

使用设备属性 ,来宾将在迁移到目标主机时复制共享内存。使用 ,来宾将无法在连接设备的情况下进行迁移。在后一种情况下,应使用 PCI 热插拔支持在迁移后分离设备,然后重新连接设备。master=onmaster=off

共享相同内存的设备最多可以有一个设备是主设备。主设备必须先完成迁移,然后才能重新插入其他设备。

ivshmem 和 bigpages

您可以使用 POSIX shm 指定<shm 大小>,而是指定具有 bigpage 支持的内存后端:

qemu-system-x86_64 -object memory-backend-file,size=1G,mem-path=/dev/hugepages/my-shmem-file,share,id=mb1                 -device ivshmem-plain,memdev=mb1

ivshmem-server 还支持带有内存路径参数的 hugepages 挂载点。-m


[QEMU]虚拟机间共享内存设备的评论 (共 条)

分享到微博请遵守国家法律