在具有共享存储的xen Server上实现共享VM的启动方法

如果在一台xen Server主机上创建了一个VM,该VM安装在共享的盘阵上。那么如果该主机因硬件原因出现宕机,怎么在其他主机启动共享盘上的VM实现VM的高可用呢。Citrix Xen Server 的高级版本和企业版本提供了高可用支持,且要求Xen Server主机要在同一个池中。

这里我们不通过同一个池,怎么实现VM的启动呢。在网上花费了很多时间用于查找相关资料。都未能插到我需要的资料。

后来就思考,按照道理来说这个功能应该是能够实现的才对。功夫不?有心人

环境

免费版这里需要三台服务器

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有没有影响,现在还不清楚。有待后续测试完善。

作者:wqjsir

%s 个评论

要回复文章请先登录注册