点击虚机实例,每台虚机最后的按钮”控制台”,点击后发现报错,如下图所示
查看django后台的错误为:
ERROR:django.request:Internal Server Error: /console/
Traceback (most recent call last):
File “/usr/lib/python2.6/site-packages/django/core/handlers/base.py”, line 113, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File “/data/apps/webvirtmgr/console/views.py”, line 58, in console
response.set_cookie(‘token’, token)
AttributeError: ‘str’ object has no attribute ‘set_cookie’
查找其源代码,发现可能的错误是由于虚机没有安装vnc等图形管理工具,于是在虚机的xml配置文件添加如下配置:
virsh edit oss.webvirtmgr.001
<graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
再重启虚机,如果还是不行,就先undefine,然后重新根据xml配置create试试。下载个VNC-Viewer,输入IP:5910,看能否访问,如下图所示:说明设置VNC是成功
但是从网页点击控制台按钮,发现还是不行,报错是server disconnected
访问时django后台只有如下信息:
[26/Apr/2016 05:59:56] “GET /console/?token=4-bcc6ca3b-ca6d-6e51-505a-9c86cf58a6b2 HTTP/1.1” 200 7270
参考这篇:http://ju.outofmemory.cn/entry/145497
安装了novnc,仍然报同样的错,百度谷歌也找不到相应的信息。yum -y install novnc后,无意间在服务器上发现了这个命令novnc-server
于是敲了如下命令:novnc_server –vnc IPADDR:5920,其中IPADDR为宿主机ip地址,5920是定义的虚拟机的vnc端口号。
[root@oss-webvirtmgr-001 ~]# novnc_server –vnc 192.168.200.230:5920
Warning: could not find self.pem
Starting webserver and WebSockets proxy on port 6080
WebSocket server settings:
- Listen on :6080
- Flash security policy server
- Web server. Web root: /usr/share/novnc
- No SSL/TLS support (no cert file)
- proxying from :6080 to 192.168.200.230:5920
Navigate to this URL:
http://oss-webvirtmgr-001:6080/vnc.html?host=oss-webvirtmgr-001&port=6080
Press Ctrl-C to exit
1: 10.1.196.211: Plain non-SSL (ws://) WebSocket connection
1: 10.1.196.211: Version hybi-13, base64: ‘False’
1: connecting to: 192.168.200.230:5920
结果居然ok了,console控制台起来了
问题是:假如我有30台虚拟机,每个虚拟机都有一个vnc端口,我是不是得写30条这样的命令,监控每一个端口??
后来发现是由于有一个脚本没起,才会导致这种情况,起了这个脚本后,所有控制台应该都能正常访问。pyhton脚本为
webvirtmgr/console/webvirtmgr-console
隔天发现以上两个方法都没作用了,控制台死活连不上,后台也不报错,网页就只显示server disconnected,无奈…
https://github.com/retspen/webvirtmgr/issues/215
我添加的存储池是目录类型卷,添加成功后,可看到如下网页:
然后在存储池添加镜像时,报错了,网页上和django后台显示的信息均为: libvirt: Storage Driver error : unsupported flags (0x1) in function storageVolumeCreateXML
谷歌找到答案:https://github.com/retspen/webvirtmgr/issues/400
原来在创建qcow2格式镜像时,不能点选Metadata,这个Metadata不知道是做什么用的。在添加虚拟机时也是如此。
在后台可看到该目录vmdisk下已经生成了一个磁盘文件,
[root@localhost vmdisk]# qemu-img info a.michaelzeng.001.img
image: a.michaelzeng.001.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 136K
cluster_size: 65536
点击克隆后,报错如下:
Storage volume not found: no storage vol with matching path
参考:http://osdir.com/ml/libvir-list/2009-05/msg00441.html
原因为:我所要克隆的kvm,其磁盘文件不在存储池里。
更改后再次克隆
又是报错:unsupported flags (0x1) in function storageVolumeCreateXMLFrom
还是跟以前一样,不能选中metadata选项,克隆后名字貌似不能自定义,这个比较不人性化