在Debian Jessie上使用DRBD进行Xen在线迁移
我们有两个Debian Jessie服务器,我们将它们配置为Xen主机(域0)并通过DRBD实现实时迁移。
该项目的主要目标是测试Xen实时迁移。
Xen项目管理程序
在这里说“ Xen”时,我们指的是Xen Project Hypervisor,不要与Citrix的XenServer混淆。
Xen Project系统管理程序是一种开源的Type-1或者裸机系统管理程序。
在Xen Project系统管理程序上运行的来宾虚拟机称为“域”(domU),其中称为dom0(也称为域零)的特殊域负责控制系统管理程序并启动其他来宾操作系统。
Xen虚拟机管理程序支持两种主要的虚拟化类型:半虚拟化(PV)和硬件虚拟机(HVM),也称为“完全虚拟化”。
PV不需要主机CPU的虚拟化扩展。
准虚拟化的操作系统知道它们已经被虚拟化了,因此不需要虚拟的“硬件”设备,而是对虚拟机管理程序进行了特殊调用,使它们可以访问CPU,存储和网络资源。
相反,HVM需要Intel VT或者AMD-V硬件扩展。
无需修改HVM guest虚拟机,因为管理程序将为此计算机创建一组完全虚拟的硬件设备,类似于物理x86计算机。
这种仿真比半虚拟化方法需要更多的开销,但是允许未经修改的来宾操作系统(例如Microsoft Windows)在虚拟机管理程序之上运行。
Dom0安装和配置
我们将使用Debian Jessie作为我们的Domain 0系统。
我们已经准备好两个服务器,分别名为xen01和xen02.
服务器具有2个CPU内核和2GB的内存。
这两个服务器都有两个网络接口,用于DRBD通信的“ eth0”(172.16.20.24上的不可路由VLAN)和连接到LAN(10.8.8.0/24)的“ eth1”。
局域网上有一个DHCP/DNS服务器,它根据客户端的MAC地址发出静态DHCP租约。
本文遵循的约定是[ALL]表示需要在两个Xen节点上都运行的命令。
[xen01]# hostnamectl set-hostname xen01.igi.local [xen02]# hostnamectl set-hostname xen02.igi.local
[ALL]# cat /etc/debian_version 8.4
对于那些无法访问(备用)物理硬件来安装Xen的用户,可以将VirtualBox来宾用作dom0。
需要注意的一件事是VirtualBox无法将VT-x功能传递给来宾,这对于允许嵌套的HVM来宾来说是必需的。
因此,只能使用半虚拟化域,因为它们不需要主机CPU的虚拟化扩展。
Xen软件包
[ALL]# apt-get update [ALL]# apt-get install xen-linux-system-amd64 bridge-utils
建议使用Grub来启动Xen:
[ALL]# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen [ALL]# update-grub
联网
在两个Xen节点上配置软件桥。
我们的“/etc/network/interfaces”内容可以在下面看到。
请注意用于DRBD的静态IP地址。
source /etc/network/interfaces.d/* auto lo iface lo inet loopback # Leaving allow-hotplug causes the following: # *** A start job is running for LSB: Raise network interfaces. (15min 10s/no limit) #allow-hotplug eth1 iface eth1 inet manual # The default bridge that the toolstack expects is called xenbr0 auto xenbr0 iface xenbr0 inet dhcp bridge_ports eth1 # Other possibly useful options in a virtualised environment bridge_stp off # disable Spanning Tree Protocol bridge_waitport 0 # no delay before a port becomes available bridge_fd 0 # no forwarding delay # DRBD heartbeat vlan auto eth0 iface eth0 inet static address 172.16.22.13 #.13 is xen01, .14 is xen02 netmask 255.255.255.0
强制网络配置:
[ALL]# systemctl restart networking
配置Dom0内存和CPU
打开两个Xen节点,打开文件'/etc/default/grub'并配置以下内容:
GRUB_TIMEOUT=1 GRUB_DISABLE_LINUX_UUID=true # Xen boot parameters for all Xen boots GRUB_CMDLINE_XEN="dom0_mem=1024M,max:1024M dom0_max_vcpus=1 dom0_vcpus_pin"
记住将更改应用于grub配置:
[ALL]# update-grub
访客行为在Dom0重新启动
默认情况下,当Xen dom0关闭或者重新启动时,它会尝试保存(读取休眠)domU的状态。
我们要确保它们正常关闭。
[ALL]# grep -ve "^#" -ve "^$" /etc/default/xendomains XENDOMAINS_RESTORE=false XENDOMAINS_SAVE= XENDOMAINS_AUTO=/etc/xen/auto XENDOMAINS_STOP_MAXWAIT=300
工具栈
Xl是Xen 4.1发行版中引入的,但是xend仍然是默认设置。
从Xen 4.2开始,xend/xm已弃用(并已在Xen Project 4.5中删除),并且默认情况下现在应使用xl。
[ALL]# grep -ve "^#" /etc/default/xen TOOLSTACK=xl
完成配置dom0后,重新启动服务器:
[ALL]# systemctl reboot
[xen01]# xl info host : xen01.igi.local release : 3.16.0-4-amd64 version : #1 SMP Debian 3.16.7-ckt25-2 (2015-04-08) machine : x86_64 nr_cpus : 2 max_cpu_id : 1 nr_nodes : 1 cores_per_socket : 2 threads_per_core : 1 cpu_mhz : 2294 hw_caps : 178bfbff:28100800:00000000:00003300:d6d82203:00000000:00000021:00002017 virt_caps : total_memory : 2047 free_memory : 998 sharing_freed_memory : 0 sharing_used_memory : 0 outstanding_claims : 0 free_cpus : 0 xen_major : 4 xen_minor : 4 xen_extra : .1 xen_version : 4.4.1 xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p xen_scheduler : credit xen_pagesize : 4096 platform_params : virt_start=0xffff800000000000 xen_changeset : xen_commandline : placeholder dom0_mem=1024M,max:1024M dom0_max_vcpus=1 dom0_vcpus_pin cc_compiler : gcc (Debian 4.9.2-10) 4.9.2 cc_compile_by : jmm cc_compile_domain : debian.org cc_compile_date : Tue Mar 15 22:37:15 CET 2015 xend_config_format : 4