【发布时间】:2013-08-19 09:53:34
【问题描述】:
在xen中,我们可以使用libvchan实现域间通信。
但是,在 domU 中,当开始通信时,它会显示以下错误:
libxenvchan_*_.init:没有这样的文件或目录。
为此,我尝试使用 xenfs 挂载 /proc/xen/。它给出的错误为
未知文件系统“xenfs”
上面这个错误如何解决,如何实现域间通信?
【问题讨论】:
标签: virtual-machine xen hypervisor
在xen中,我们可以使用libvchan实现域间通信。
但是,在 domU 中,当开始通信时,它会显示以下错误:
libxenvchan_*_.init:没有这样的文件或目录。
为此,我尝试使用 xenfs 挂载 /proc/xen/。它给出的错误为
未知文件系统“xenfs”
上面这个错误如何解决,如何实现域间通信?
【问题讨论】:
标签: virtual-machine xen hypervisor
看起来“libxenvchan_*_.init:没有这样的文件或目录错误”是一个常见问题。我在网络搜索中没有找到解决方案。
对我来说,在 linux 系统 (CentOS 6.5) 来宾 VM 上的解决方案是加载 xen 内核模块 xen_gntalloc 和 xen_evtchn 用于 libvchan 服务器。对于 libvchan 客户端,它应该是 xen_gntalloc 和 xen_gntdev。显然,这意味着您的客户虚拟机必须运行 xen linux 内核。请注意,我使用的是 xen 4.2.2,内核是 3.4.53-8.el6.centos.alt.x86_64。
我通过将打印语句添加到 libxenctrl 和 libxenvchan 库的源代码中找到了具体问题,直到找到它无法找到的文件,这些文件原来是 /dev/xen/gntalloc(服务器和客户端)、/dev /xen/evtchn(服务器),/dev/xen/gntdev(客户端)。
【讨论】:
modprobe xen_gntalloc、modprobe xen_evtchn 和 modprobe xen_gntdev
确保正确安装了 vchan 所需的库。您可以在 vchan-client 二进制文件上使用 ldd 命令来查看它是否可以成功加载所需的库。
在我的来宾 VM(Debian 8.4.0 64 位)中构建和安装 Xen 工具(make build-tools && make install-tools)并随后执行 ldconfig 足以让 vchan 示例程序运行。
我还必须加载上一个答案中提到的 Xen 内核模块。
【讨论】: