如何实现windows下远程连接libvirt
一、ssh方式:
ssh是最简单的连接方式,只要使用ssh连接到服务器,就可以得到服务器的权限。
优点:无需配置,连接简单,适合用于测试。
缺点:每次连接都需要证书登陆,否则每次连接都需要输入ssh用户名,不适合用于开发。
连接样例:qemu+ssh:root@192.168.25.129/system
二、tcp方式连接:(本次课程设计使用的就是tcp的连接方式):
(1)、修改ubuntu下的libvirt的配置文件(需要修改两个配置文件):
Ⅰ、vim/etc/libvirt/libvirtd.conf:
该配置文件中有大部分配置信息处于注释状态,在开发的时候,使用不同的配置可以达到不同的开发效果。修改的配置信息如下:(只需要将对应的注释取消,或修改数据)
listen_tls = 0 #禁用tls登录(22行)
listen_tcp = 1 #启用tcp方式登录(33行)
tcp_port ="16509" #tcp端口16509(45行)
listen_addr ="0.0.0.0" (55行)
unix_sock_group ="libvirtd" (90行)
unix_sock_rw_perms= "0770" (107行)
auth_unix_ro ="none" (146行)
auth_unix_rw ="none" (155行)
auth_tcp = "none" #TCP不使用认证(163行)
max_clients = 1024 #最大总的连接客户数1024(275行)
min_workers = 50 #libvirtd启动时,初始的工作线程数目(293行)
max_workers = 200 #同上,最大数目 (294行)
max_requests = 1000 #最大同时支持的RPC调用,必须大于等于(310行)
max_client_requests= 200 #每个客户端支持的最大连接数(316行)
Ⅱ、修改libvirt-bin的配置文件:
Vim/etc/default/libvirt-bin:
# Start libvirtdto handle qemu/kvm:
start_libvirtd="yes"
# options passedto libvirtd, add "-l" to listen on tcp
libvirtd_opts="-d -l --config /etc/libvirt/libvirtd.conf"
(2)、下载安装libvirt的windows下的远程管理工具
下载地址:(由于libvirt官方之给定了32位操作系统的自动安装工具,所以我们安装的是32位的管理工具)
https://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe
安装完成之后,进入安装好的bin目录,目录结构如下:
其中有virsh-launcher.bat程序,打开该程序即可远程连接ubuntu上的libvirt: (连接方式:qemu+ssh://192.168.25.129/system)。
接着,我们要新建jna.library.path环境变量url为安装好的bin目录。这是为了让javaAPI找到dll文件,所以指定了jna路径。
这些操作完成之后,我们就可以实现在widows下远程连接ubuntu下的libvirt啦。
但是,在开始开发的过程中(这里指java-api开发),我们创建连接的时候会出现以下错误:
java.lang.UnsatisfiedLinkError: Unable to load library 'virt': ÕҲ»µ½ָ¶¨…… |
0.0, 这是什么原因呢?
这是我们libvirt源码中将bin目录下的libvirt-0.dll文件的名称设置成了virt.dll,所以会出现找不到virt的问题。所以将bin目录下的libvirt-0.dll文件修改成virt.dll就可以了。
修改之后还是报错?这是因为我的jdk的版本是64位的,但是我们下载安装的dll动态连接文件是32位的。只需要将开发环境中的jdk切换成32位的就可以了。
这样,我们就可以在windows下使用javaAPI远程连接ubuntu的libvirt,进行开发了。