如果在一台xen server主机上创建了一个vm,该vm安装在共享的盘阵上。那么如果该主机因硬件原因出现宕机,怎么在其他主机启动共享盘上的vm实现vm的高可用呢。citrix xen server 的高级版本和企业版本提供了高可用支持,且要求xen server主机要在同一个池中。
这里我们不通过同一个池,怎么实现vm的启动呢。在网上花费了很多时间用于查找相关资料。都未能插到我需要的资料。
后来就思考,按照道理来说这个功能应该是能够实现的才对。功夫不負有心人
环境
citrix xen serer 6.1免费版:
免费版这里需要三台服务器
a、b为xen server 服务器。c主机用于iscsi 虚拟出一个共享磁盘出来。
在主机a上虚拟机的建立
1、建立iscsi sr
2、新建虚拟机 在选择主服务器页面时, 选择不为此vm分配主服务器(d),如图:
3、用iscsi sr库来为新vm分配存储如图:
4、继续完成vm的安装。
在主机b上启动在主机a上建立的vm 要在主机b上启动在主机a上建立的vm,需要主机a与共享盘阵断开连接。iscsi sr库右键->分离(d)...。注意,需要sr上的所有虚拟机都关机的情况下,才能执行分离操作。
如果主机a不与共享盘阵分离,在主机b连上盘阵后,就会对盘阵数据照成破坏。
1、新建iscsi 存储库
在iscsi存储库路径输入页面,输入iscsi目标主机ip地址。点击完成,会弹出如下对话框:
选择连接sr(a)
2、新建虚拟机且不启动(与源虚拟机参数一致)
3、给新添加的vm添加之前建立的iscsi 磁盘,并设置位置为0
选择 交换这些磁盘(s)
此时如果我们不需要刚刚新建的磁盘,则可以将其删除(刚新建的磁盘没有数据,可以直接删除)
4、去掉dvd驱动器
将dvd驱动器设置为空,否则会从dvd驱动中启动虚拟机。(这里应该可以通过配置虚拟机的启动参数来修改虚拟机的启动项)
此时我们启动虚拟机,则会报:error from bootloader:no bootable disk。说当前虚拟机没有启动磁盘。
5、设置虚拟机引导参数:
执行xe vm-list 命令,查看但前xen主机上的虚拟机
执行xe vm-param-list uuid=<vm-uuid>命令看看指定uuid虚拟机的参数
我们可以看到:
pv-bootloader (rw):elioader 这一行。
修改pv-bootloader (rw)的值为pygrub,命令如下:
xe vm-param-set pv-bootloader=pygrub uuid=<vm-uuid>
再执行启动虚拟机操作,如果依然报error from bootloader:no bootable disk,则执行第6
6、修改vbd参数
执行命令
xe vbd-list 列出当前主机上的所有vbd,找到对应虚拟机的vbd
执行命令 xe vbd-param-list uuid=<vbd-uuid>
可以看到 bootable(rw):的值为false,需要修改该值为true。执行命令如下
:xe vbd-param-set bootable=true uuid=<vbd-uuid>
重新执行启动,这次就启动成功了;
7、修改网络物理地址(mac地址)如果在主机b上建立虚拟机时,指定了源主机a上虚拟机的mac地址。则跳过这一步。否则需要修改mac地址。
将mac地址修改为虚拟机内部设置的mac地址(原主机a上虚拟机的mac地址)
这样我们就实现了在另一台主机上启动共享虚拟机的功能了。
注意: 这里只是我的实验结果,具体对虚拟机或者对xen server有没有影响,现在还不清楚。有待后续测试完善。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。