如果在一台xen Server主机上创建了一个VM,该VM安装在共享的盘阵上。那么如果该主机因硬件原因出现宕机,怎么在其他主机启动共享盘上的VM实现VM的高可用呢。Citrix Xen Server 的高级版本和企业版本提供了高可用支持,且要求Xen Server主机要在同一个池中。
这里我们不通过同一个池,怎么实现VM的启动呢。在网上花费了很多时间用于查找相关资料。都未能插到我需要的资料。
后来就思考,按照道理来说这个功能应该是能够实现的才对。功夫不負有心人
环境
Citrix Xen Serer 6.1免费版:http://www.jb51.net/softs/391983.html
免费版这里需要三台服务器
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有没有影响,现在还不清楚。有待后续测试完善。