6月 262018
 

搭建openstack时,配置好rbd后,我们并没有在virsh pool-list 时看到一个存储池,但是如果我们要配置一个存储池也是可以的:

编写配置文件: rbd-volumes.xml

其中rbd-volumes是我们给这个存储池起的一个名字,随便你;

10.88.12.4 是ceph monitor节点地址

volumes 是rbd所在的ceph中的pool

auth里面有用户名cinder和预先定义好的秘钥(秘钥通过secret-define来定义)

 

然后执行:

 

然后就会自动生成文件 /etc/libvirt/storage/rbd-volumes.xml:

 

然后通过virsh pool-list 可以查看到定义好的存储池:

 

然后启动池子:

 

就可以列出来存储池中的rbd了;(我这里的volumes就是上面提到的rbd-volumes)

然后就可以使用这里的rbd来启动虚拟机了呗?不过又遇到问题,通过virt-manage来使用这里的rbd创建机器时报错:

话说这个和/root/volumes 有毛关系?

google 之,别人也有遇到: https://bugzilla.redhat.com/show_bug.cgi?id=1074169#c14

问题似乎出现在virt-manager 上,问题版本: 1.4.1 ; 换个新的试试:

https://github.com/virt-manager/virt-manager

更新到 1.5.0 依然存在这个问题,稍后再研究; 最新的版本构建起来麻烦一些,依赖python3的东西,我的安装源中有些找不到

 

相关fix: https://github.com/tonich-sh/virt-manager/commit/ce939a04099431ea273fa53850ab8a6db363a112

 

 

 

 Posted by at 下午 4:25
12月 202017
 

参考: https://www.cnblogs.com/xieshengsen/p/6215168.html

在kernel启动参数中添加: console=ttyS0

这岂不是要重启?

也不用,centos7下,只需要启动一个服务就行:

为了下次能自动启动,可以enable一下:

注意: 最好确保 ttyS0已经加入了 /etc/securetty :

然后就可以virsh console $domain 了

其实对应domain的console在宿主机是有一个tty的,如下方式查看:

如:

比较有趣的玩法是:

  1. 在终端1 去 cat /dev/pts/2
  2. 在终端2 去 echo -e “$username\n$password\necho hello world” >/dev/pts/2
  3. 在终端1就能看到输出
  4. 最后别忘了echo “exit” >/dev/pts/2 否则,下次不需要密码就进去了

为什么virsh console没有配置的时候,virt-manager依然能看到虚拟机的界面呢?virt-manager走的是vnc(或spice)方式,而且是宿主机里面提供的,和虚拟机里面是否有vnc(spice)没有关系。

 

通过ps也能查看:

默认情况下,虚拟机的vnc(或spice)会listen 127.0.0.1 上的端口,远程通过virt-manager访问的时候,如果使用ssh协议的话,会通过如下方式将vnc(或spice)端口重定向到本地:

然后在这个打开的流上进行vnc(或spice)协议,这个可就不想tty那么好模拟了

 

那么,kvm如何就能启动一个vnc,使得能够访问虚拟机呢?模拟硬件的tty?

 

参考: https://www.cnblogs.com/xieshengsen/p/6215168.html

 Posted by at 下午 6:22