【发布时间】:2019-03-14 15:24:24
【问题描述】:
正如标题所说,我正在寻找一种方法来通过 libvirt API 将 C 风格的文件描述符(int,我的应用程序使用 socketpair,我需要将其中一个文件描述符)传递到启动的 QEMU 进程.
到目前为止,我发现了以下内容:
- virDomainOpenGraphics
- virDomainOpenGraphicsFD
遗憾的是,这些似乎对我没有帮助,因为它们仅用于图形,
- virDomainCreateWithFiles
- virDomainCreateXMLWithFiles
遗憾的是,这些也无济于事,因为根据文档,它们仅适用于基于容器的虚拟化技术。
任何我可以使用 libvirt API 将文件描述符传递给 qemu 的方式都很棒。除非有办法做到这一点,否则我可能不得不为 QEMU 编写一个完全自定义的后端,但是我的应用程序已经投入使用 libvirt 并且更改将是显着的。
编辑:文件描述符将是一个套接字,QEMU 不直接使用它,我有一个 LD_PRELOAD-ed 库,当 qemu 尝试读取/写入时,它将使用这个套接字来做一些就地黑客攻击一个特定的磁盘。 “黑客”在每台机器和每次运行的基础上都会有所不同,将这些信息写入每个 VM 的磁盘会使存储系统负担过重,并导致非常严重的减速,这是我无法承受的。
【问题讨论】:
-
C 中的“文件描述符”是一个
int,它标识使用open()打开的文件。是这个意思吗? -
是的,编辑了问题以澄清,希望现在更容易理解。
标签: c virtualization qemu libvirt