1. 平台运行的软硬件环境
并行计算环境需要多台计算机协同工作,本文使用的具有相同机器的软硬件环境。
1.1. 硬件环境
本文使用11年出产的惠普 HP Compaq dc7700机器作为运行环境,但是PVM完全可以运行在同等规格或更高规格的计算机。具体的硬件规格如下:
CPU Intel(R) Core(TM)2 DuoCPU E7500 @ 2.93GHz(2CPUs)
内存 2.00 GB (1067 MHz)
主硬盘 320GB (希捷 ST3320418AS)
网卡 Intel(R) 82567LM-3 GigabitNetwork Connection
1.2. 软件安装及调试
ubuntu从11.10开始内核版本号到3了,也从这个版本内核开始重新支持xen了,不必重新编译内核了。本文用的是ubuntu12.04LTS-DVD-i386版本。
初次之外,要格外注意以下两点:
首先ubuntu不能是用wubi安装的,切忌。
其次,32位和64位系统的区别也很重要。32位系统,因为xen需要开启pae,默认是没有开启的,所以32位ubuntu首先得执行下面这个命令:
sudo apt-get installlinux-image-server。
之后再按照下面你的步骤。
1.2.1.安装xen hypervisor.
sudo apt-get installxen-hypervisor-4.1 xen-utils-4.1 xenwatch xen-tools xen-utils-commonxenstore-utils
这里xen-hypervisor-4.1要分32位、64位,64位系统用xen-hypervisor-4.1-amd64,32位用xen-hypervisor-4.1-i386.
当然用新立得(synaptic)找xen-hypervisor安装 会直接处理相关软件这个时候查看/boot/grub/grub.cfg会看到启动列表里面就会有xen的启动项了
1.2.2.重启选择xen内核
命令xm info 可以查看虚拟机信息
1.2.3.重启后可能进去的是tty1这是因为独立显卡驱动的问题,先下载好在tty1下安装然后切换到tty7就ok了.
附:linux有7个工作组:tty1-7,其中tty1-6是命令模式,tty7是图形界面,我们destop版默认进入的就是tty7,用ctl+alt+F1/../F7可以切换工作组.
1.2.4.安装xen相关工具
sudo apt-get installvirtinst virt-viewer virt-manager
1.2.5.配置xend
编辑sudo gedit/etc/xen/xend-config.sxp文件:
(xend-unix-server yes)
编辑sudo gedit ~/.bashrc :
首行添加 exportVIRSH_DEFAULT_CONNECT_URI=”xen:///”
1.2.6.创建虚拟机
重新启动进入xen内核后,运行软件sudo virt-manager,这里图形界面就比较简单了,但是创建时因为相关资源路径问题可能会报以下错误
1******/usr/lib/xen/bin/qemu-dm:****
路径中xen应该是xen-4.1,解决办法如下
mkdir /usr/lib/xen -p
cp /usr/lib/xen-4.1/* -r/usr/lib/xen/
2 ****** libvirtError:POST操作失败: xend_post:来自 xen 守护进程的错误:****
查看日志/var/log/xen/xend.log 和/var/log/xen/qemu-dm-demo.log
日志显示/usr/share/qemu/keymaps/en-uscould not be found, the keymaps ***
路径中qemu应该是qemu-linaro,解决办法如下
cp -r/usr/share/qemu-linaro/ /usr/share/qemu
2. 在线迁移两种方案
2.1.存储还原迁移
2.1.1.终端命令 #sudo xm save vm1/mnt/vm1.save,将当前的vm1保存下来,保存至mnt目录下的vm1.save文件。同上一步中的文件位置一致。(目录可自定义,同时需要修改上一步中的文件位置) 。此时保存的Domain会从当前运行的Domain列表中删除,我们可以用xm list命令列出当前运行的Domain,看看它是否还在运行。
2.1.2.终端命令 #sudo xm restore /mnt/vm1.save 。把保存的vm1重新恢复还原。我们将看到还原后的Domain又回到当前Domain列表中了。这是在本机运行命令。同理,也可以在目标主机运行此命令。需要先拷贝vm1.save,成功还原需要满足的要求是,目标主机上有同源主机的相同的vm1虚拟机,相同的操作系统,且存放目录相同。
相关说明:因为vm1.save文件保存的是当前系统物理内存中的系统状态,所以以免还原后数据参数不匹配,需要相同的系统支持。
2.2.动态迁移
2.2.1.首先对动态迁移时涉及到的服务器做一下介绍,它们是:
hostA(192.168.0.40) :一个linux NFS 服务器,通过网络为XenDomain提供存储空间。
hostB(192.168.0.56):一个Xen主机服务器,它使用NFS导出的目录运行一个客户机vm1。
hostC(192.168.0.39):一个Xen主机服务器,它是来自hostB 服务器的客户机vm1的迁移目的地。
下图向我们展示了具体配置情况:
三台主机都要修改/etc/xen/xend-config.sxp,需要开启的服务为:
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-reloaction-address '')
(xend-relocation-hosts-allow '')
2.2.2.然后都需要安装nfs服务。终端执行命令#sudoapt-get install nfs-kernel-server(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)这样,主机就相当于NFSServer。
2.2.3. hostA主机上建立一个NFS服务器,欲迁移的Domain使用的就是NFS 服务器上的共享存储器空间。执行命令sudo gedit /etc/exports 修改配置文件。允许hostB和hostC主机访问共享目录。添加语句
/var/lib/libvirt/images*(rw,sync,no_root_squash)
可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。
***/etc/hosts.deny***
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
***/etc/hosts.allow***
portmap:192.168.0.*
lockd:192.168.0.*
mountd:192.168.0.*
rquotad:192.168.0.*
statd:192.168.0.*
同时使用这两个文件就会使得只有ip为192.168. 0.*的机器使用NFS服务。全部设置完成后 重启NFS服务。# sudo/etc/init.d/nfs-kernel-server restart
2.2.4.两台主机hostB和hostC分别mount目录 sudo mount192.168.0.40:/var/lib/libvirt/images /var/lib/libvirt/images
2.2.5.建立一个运行在NFS 服务器存储器(hostA)上的XenDomain(vm1),然后在hostB上恢复还原vm1。此时运行sudo xmlist。会出现vm1的ID以及运行状态等信息。
2.2.6.在线迁移。把XenDomain(vm1)从hostB迁移到hostC。执行命令:
sudoxm migrate –l vm1 192.168.0.39(目的主机hostC地址)。执行成功之后,此时hostB下执行sudo xmlist将不会有vm1的ID号。运行状态也会被改变。同时hostC上出现vm1,并继承hostB中迁移前的运行状态。