Xen虚拟化平台安装及实时迁移

简介:

前言

Xen是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,Xen可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源极少。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Redhat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。

Xen虚拟化类型

Xen对虚拟机的虚拟化分为两大类,半虚拟化和完全虚拟化。

半虚拟化

半虚拟化(Paravirtualization)有些资料称为“超虚拟化”,简称为PV,是Xen主导的虚拟化技术。这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。

完全虚拟化

完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术。

基本组件

 Xen包含三大部分:

Hypervisor:直接运行于硬件之上,是Xen客户操作系统与硬件资源之间的访问接口。通过将客户操作系统与硬件进行分类,Xen管理系统可以允许客户操作系统安全,独立的运行在相同硬件环境之上。

Domain 0:运行在Xen管理程序之上,具有直接访问硬件和管理其他客户操作系统的特权的客户操作系统。

DomainU:运行在Xen管理程序之上的普通客户操作系统或业务操作系统,不能直接访问硬件资源(如:内存,硬盘等),但可以独立并行的存在多个。

详述见:http://my.oschina.net/davehe/blog/94039

Xen及虚拟机安装

安装Xen(CentOS6.6)

1
2
3
4
5
6
7
[root@node2 ~] # cd xen/
[root@node2 xen] # ls
kernel-xen-3.7.4-1.el6xen.x86_64.rpm           xen-hypervisor-4.2.4-30.el6.centos.alt.x86_64.rpm
kernel-xen-firmware-3.7.4-1.el6xen.x86_64.rpm  xen-libs-4.2.4-30.el6.centos.alt.x86_64.rpm
kernel-xen-release-6-4.noarch.rpm              xen-licenses-4.2.4-30.el6.centos.alt.x86_64.rpm
xen-4.2.4-30.el6.centos.alt.x86_64.rpm         xen-runtime-4.2.4-30.el6.centos.alt.x86_64.rpm
[root@node2 xen] # yum install *.rpm -y

修改grub文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@node2 ~] # vim /etc/grub.conf
 
default=0
timeout=5
splashimage=(hd0,0) /grub/splash .xpm.gz
hiddenmenu
title CentOS (3.7.4-1.el6xen.x86_64)
         root (hd0,0)
         kernel  /xen .gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
         module  /vmlinuz-3 .7.4-1.el6xen.x86_64 ro root= /dev/mapper/vg_firewallserver-lv_
root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_firewa
llserver /lv_root  crashkernel=auto rd_LVM_LV=vg_firewallserver /lv_swap   KEYBOARDTYPE=pc 
KEYTABLE=us rd_NO_DM rhgb quiet
         module  /initramfs-3 .7.4-1.el6xen.x86_64.img
title CentOS 6 (2.6.32-504.el6.x86_64)
         root (hd0,0)
         kernel  /vmlinuz-2 .6.32-504.el6.x86_64 ro root= /dev/mapper/vg_firewallserver-lv_
root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_firewa
llserver /lv_root  crashkernel=auto rd_LVM_LV=vg_firewallserver /lv_swap   KEYBOARDTYPE=pc KE
YTABLE=us rd_NO_DM rhgb quiet
         initrd  /initramfs-2 .6.32-504.el6.x86_64.img

重启系统,查看内核参数

1
2
[root@node2 ~] # uname -r
3.7.4-1.el6xen.x86_64

启动服务

1
2
3
4
5
6
[root@node2 ~] # service xend start
Starting xend daemon:                                      [  OK  ]
[root@node2 ~] # xm list
WARNING: xend /xm  is deprecated.
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   512     2     r-----    218.7

创建桥设备

由于虚拟机运行在宿主机之上,虚拟机运行的网络环境需要由宿主机提供,需要先配置好网桥,以便虚拟机与宿主机之间通信

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#关闭NetworkManager
[root@node2 ~] # service NetworkManager stop
[root@node2 ~] # chkconfig NetworkManager off
[root@node2 ~] # vim /etc/sysconfig/network-scripts/ifcfg-br0
 
DEVICE=br0
TYPE=Bridge
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.16.10.124
PREFIX=16
GATEWAY=172.16.0.1
DNS1=172.16.0.1
 
[root@node2 ~] # vim /etc/sysconfig/network-scripts/ifcfg-eth0 
 
DEVICE=eth0
TYPE=Ethernet
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
 
[root@node2 ~] # service network restart
[root@node2 ~] # brctl stp br0 on          #避免环路

准备引导文件

1
2
3
4
5
6
7
[root@node2 ~] # mount /dev/cdrom1 /media/cdrom/
mount : block device  /dev/sr0  is write-protected, mounting  read -only
[root@node2 ~] # cp /media/cdrom/isolinux/{vmlinuz,initrd.img} /tmp
[root@node2 ~] # ln -sv /media/cdrom/ /var/www/html/centos6.6
` /var/www/html/centos6 .6 ' -> `/media/cdrom/'
[root@node2 ~] # service httpd start
Starting httpd:                                            [  OK  ]

创建磁盘映像文件

1
2
3
4
5
[root@node2 ~] # mkdir -pv /xen/vm1
[root@node2 ~] # dd if=/dev/zero of=/xen/vm1/centos6.6.img oflag=direct bs=1M seek=102399 count=1
[root@node2 ~] # ll /xen/vm1/ -h
total 1.0M
-rw-r--r-- 1 root root 100G Jul 16 17:53 centos6.6.img

定义domain

1
2
3
4
5
6
7
8
9
10
11
[root@node2 ~] # vim /etc/xen/centos6.6
 
kernel =  "/tmp/vmlinuz"
ramdisk =  "/tmp/initrd.img"
name =  "centos6.6"
vcpus = 1
memory = 512
vif = [ "bridge=br0" ]
disk = [ 'file:/xen/vm1/centos6.6.img,xvda,w' ]
on_crash =  "destroy"
on_reboot =  "destroy"

启动虚拟机

1
[root@node2 ~] # xm create -c centos6.6

启动虚拟机即可进入安装界面,和VMware安装类似,简单截取一下就不详细记录了

配置IP,可手动配置

wKioL1WnkD3QbMSRAADQKnDaHU8265.jpg

获取IP后,指定安装源

wKiom1WnjsfSHFOEAADebvPfes0961.jpg

初始化磁盘

wKiom1Wnj37CC9v5AAFSg9AtJgM864.jpg

设置root密码

wKiom1Wnj7WTWJ-wAACz4u0winY121.jpg

使用全部磁盘

wKioL1Wnka3wauDYAAFhclazPls580.jpg

开始安装

wKiom1Wnj-yAICvDAADBUPinUCY363.jpg

安装结束,重启虚拟机

wKioL1WnkfOAXaSkAAEHpI-qE_E102.jpg

以为定义domain时,我们设定on_reboot = "destroy",所以虚拟机会关机,接下来需要修改domain配置

1
2
3
4
5
6
7
8
9
10
11
12
[root@node2 ~] # vim /etc/xen/centos6.6 
 
#kernel = "/tmp/vmlinuz"
#ramdisk = "/tmp/initrd.img"
name =  "centos6.6"
vcpus = 1
memory = 512
vif = [ "bridge=br0" ]
disk = [ 'file:/xen/vm1/centos6.6.img,xvda,w' ]
on_crash =  "destroy"
on_reboot = "restart"
bootloader= "/usr/bin/pygrub"

重读配置文件,启动虚拟机

1
[root@node2 ~] # xm create -c centos6.6

wKioL1WnzPvgQfF2AADiIxTsdgQ855.jpg

登陆虚拟机,查看IP(安装时为DHCP,登陆后又手动修改了IP)

wKiom1WnlMCgX0CnAAI1BULds8o202.jpg

至此,基于Xen平台的虚拟机安装完成,以上过程较繁琐,主要是为了理解Xend的工作过程,如果想要简单安装,可选择使用第三方管理工具 virt-manager(类似于VMware图形界面)

Xen实时迁移

实验拓扑

wKioL1Wnw57CCCw1AACcq7DQ-b8562.jpg

因为其中一个Xen平台已经搭建成功,且已安装虚拟机,另一个节点只需配置Xen环境即可,无需安装

安装Xen

1
2
[root@node3 ~] # cd xen/
[root@node3 xen] # yum install *.rpm

修改grub文件

1
2
3
4
5
6
7
8
9
10
[root@node3 xen] # vim /etc/grub.conf 
 
title CentOS (3.7.4-1.el6xen.x86_64)
         root (hd0,0)
         kernel  /xen .gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
         module  /vmlinuz-3 .7.4-1.el6xen.x86_64 ro root= /dev/mapper/vg_firewallserver-lv_
root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_firewa
llserver /lv_root  crashkernel=auto rd_LVM_LV=vg_firewallserver /lv_swap   KEYBOARDTYPE=pc 
KEYTABLE=us rd_NO_DM rhgb quiet
         module  /initramfs-3 .7.4-1.el6xen.x86_64.img

创建桥设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@node2 ~] # service NetworkManager stop
[root@node2 ~] # chkconfig NetworkManager off
[root@node3 xen] # vim /etc/sysconfig/network-scripts/ifcfg-br0
 
DEVICE=br0
TYPE=Bridge
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.16.10.125
PREFIX=16
GATEWAY=172.16.0.1
DNS1=172.16.0.1
 
[root@node3 xen] # vim /etc/sysconfig/network-scripts/ifcfg-eth0 
 
DEVICE=eth0
TYPE=Ethernet
ONBOOT= yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0

重启系统,查看内核参数

1
2
3
[root@node3 ~] # uname -r
3.7.4-1.el6xen.x86_64
[root@node3 ~] # brctl stp br0 on

准备磁盘映像

1
2
#只创建目录即可,待挂载
[root@node3 ~] # mkdir -p /xen/vm1

NFS服务器配置

1
2
3
4
5
6
7
8
9
10
11
[root@node4 ~] # vim /etc/exports 
 
/xen/vm1  172.16.0.0 /16 (rw,no_root_squash)
 
[root@node4 ~] # mkdir -p /xen/vm1
[root@node4 ~] # service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

源节点操作

同步Xen实例文件至目标节点

1
2
3
[root@node2 xen] # scp /etc/xen/centos6.6 node3:/etc/xen/
root@node3's password: 
centos6.6                                                100%  234     0.2KB /s    00:00

关掉正在运行的虚拟机

1
2
3
4
5
6
7
8
[root@node2 ~] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   495     2     r-----    942.7
centos6.6                                    3   512     1     -b----     88.4
[root@node2 ~] # xm shutdown centos6.6
root@node2 xen] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   495     2     r-----   1075.5

挂载nfs

1
2
3
[root@node2 ~] # cp /xen/vm1/centos6.6.img /tmp
[root@node2 xen] # mount -t nfs 172.16.10.126:/xen/vm1/ /xen/vm1/
[root@node2 xen] # mv /tmp/centos6.6.img /xen/vm1/

配置实时迁移

1
2
3
4
5
[root@node2 xen] # grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#'
(xend-relocation-server  yes )
(xend-relocation-port 8002)
(xend-relocation-address  '' )
(xend-relocation-hosts-allow  '' )

同步至目标节点

1
2
3
[root@node2 xen] # scp /etc/xen/xend-config.sxp node3:/etc/xen
root@node3's password: 
xend-config.sxp                                         100%   11KB  11.1KB /s    00:00

重启服务

1
2
3
[root@node2 xen] # service xend restart
Stopping xend daemon:                                      [  OK  ]
Starting xend daemon:                                      [  OK  ]

目标节点操作

挂载nfs

1
2
3
[root@node3 ~] # mount -t nfs 172.16.10.126:/xen/vm1/ /xen/vm1/
[root@node3 ~] # ls /xen/vm1/
centos6.6.img

重启服务

1
2
3
[root@node3 ~] # service xend restart
Stopping xend daemon:                                      [  OK  ]
Starting xend daemon:                                      [  OK  ]

迁移测试

源节点启动虚拟机

1
2
3
4
5
6
7
8
9
10
11
[root@node2 ~] # xm create -c centos6.6
[root@localhost ~] # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:3E:45:41:28  
           inet addr:172.16.10.231  Bcast:172.16.255.255  Mask:255.255.0.0
           inet6 addr: fe80::216:3eff:fe45:4128 /64  Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:177 errors:0 dropped:0 overruns:0 frame:0
           TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:8595 (8.3 KiB)  TX bytes:1326 (1.2 KiB)
           Interrupt:247

查看各节点状态

1
2
3
4
5
6
7
[root@node2 xen] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   495     2     r-----   2495.1
centos6.6                                    4   512     1     -b----     52.0
[root@node3 ~] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   512     2     r-----    373.5

开始迁移

1
[root@node2 xen] # xm migrate -l centos6.6 172.16.10.125

迁移过程中一直对虚拟机进行ping操作

wKioL1WnyaaS_KfIAAMOQRrcllE663.jpg

迁移过程中服务中断过几秒,可忽略不计

再次查看各节点状态

1
2
3
4
5
6
7
[root@node2 xen] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   493     2     r-----   2578.2
[root@node3 ~] # xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   496     2     r-----    484.3
centos6.6                                    1   512     1     -b----      1.3

连接虚拟机,验证是否工作

1
2
3
4
5
6
7
8
9
10
11
[root@node3 ~] # xm console centos6.6
[root@localhost ~] # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:3E:45:41:28  
           inet addr:172.16.10.231  Bcast:172.16.255.255  Mask:255.255.0.0
           inet6 addr: fe80::216:3eff:fe45:4128 /64  Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:2480 errors:0 dropped:0 overruns:0 frame:0
           TX packets:149 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:146639 (143.2 KiB)  TX bytes:10466 (10.2 KiB)
           Interrupt:247

至此,Xen实时迁移成功实现

The end

Xen虚拟化平台安装及实时迁移就先说到这里了,部署过程中遇到问题可留言交流。以上只是演示了简单的实时迁移过程,实际生产环境中可对Xen平台做高可用,当物理机故障可移动检测并进行实时迁移,保证业务不受影响。以上仅为个人学习整理,如有错漏,大神勿喷~~~



本文转自 北城书生  51CTO博客,原文链接:http://blog.51cto.com/scholar/1675485


相关文章
|
机器学习/深度学习 Linux KVM
Debian11安装KVM虚拟化并安装Centos
grep --color --perl-regexp 'vmx | svm' /proc/cpuinfo 首先检查其是否支持虚拟化. 分别用以下条命令查看
1111 0
Debian11安装KVM虚拟化并安装Centos
|
安全 IDE KVM
[ 云计算相关 ] KVM虚拟化平台windows虚拟机迁移到openstack虚拟化平台(KVM虚拟化环境中Windows虚拟机安装Virtio驱动程序)
KVM虚拟化平台windows虚拟机迁移到openstack虚拟化平台(KVM虚拟化环境中Windows虚拟机安装Virtio驱动程序) 因为这也不是我的本职工作,只是这次恰巧碰到了,帮着解决了以下,我就没深究原理了,问我原理可能我也不知道,只是这个操作步骤吧,亲测有效。
451 0
[ 云计算相关 ] KVM虚拟化平台windows虚拟机迁移到openstack虚拟化平台(KVM虚拟化环境中Windows虚拟机安装Virtio驱动程序)
|
存储 Linux 虚拟化
开源虚拟化平台oVirt4.3简单搭建实践(下)
开源虚拟化平台oVirt4.3简单搭建实践(下)
895 0
开源虚拟化平台oVirt4.3简单搭建实践(下)
|
3月前
|
存储 边缘计算 监控
探索未来科技趋势:虚拟化技术与云计算平台OpenStack的概念与实践
在迅猛发展的信息技术时代,企业和组织对于高效、可扩展的计算资源需求日益增长。虚拟化技术和云计算平台OpenStack应运而生,为企业提供了一种灵活、可靠的解决方案。本文将深入探讨虚拟化技术与OpenStack的概念和实践,展示它们在现代科技领域中的重要性和应用前景。
62 3
|
3月前
|
存储 监控 搜索推荐
构建无边界的数字未来:虚拟化技术与云计算平台OpenStack的概念与实践
在当今数字化时代,虚拟化技术和云计算平台已经成为企业和组织实现数字化转型的关键驱动力。本文将介绍虚拟化技术的概念和作用,并重点探讨了开源云计算平台OpenStack在实践中的应用和优势。通过深入了解虚拟化技术和OpenStack平台,读者将能够更好地理解如何利用这些技术构建无边界的数字化未来。
|
7月前
|
负载均衡 安全 虚拟化
另一种虚拟化平台-NSX DC如何实现Openstack网络与安全
最近这两个月,工作强度陡然提升。前不久为了归纳和总结NSX DC分别与HOST-VM容器和裸金属容器的最佳实践和“特殊部署”,已经起早贪黑了两个多礼拜。因此,公众号的更新频率有所下降。好在功夫不负有心人,届时我也会推出专门的篇幅来介绍云原生场景的技术实现。 在今天的分享中,我将继续上一篇的内容,向大家展示管理员通过Openstack Horizon或者命令行执行配置的时候,NSX DC后端究竟发生了什么变化。
另一种虚拟化平台-NSX DC如何实现Openstack网络与安全
|
7月前
|
存储 安全 SDN
另一种虚拟化平台:Openstack与NSX DC的结合
经过之前的两篇连载(一步步实现SDDC、变形金刚外传),我向各位演示了NSX DC两大产品(NSX-V、NSX-T)如何实现数据中心的网络与安全设施的。
另一种虚拟化平台:Openstack与NSX DC的结合
|
8月前
|
虚拟化
虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
|
9月前
|
存储 虚拟化
VMware ESXI虚拟化安装win10系统
VMware ESXI虚拟化安装win10系统
453 1
|
10月前
|
存储 监控 网络安全
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
【KVM虚拟化】· 虚拟机的冷迁移和热迁移
834 0