在Debian Lenny上使用基于LVM的虚拟机与Xen的Xen实时迁移
版本1.0
作者:Falko Timme
本指南介绍了如何将基于LVM的虚拟机(domU)从一个Xen主机实时迁移到另一个。 本教程中我将使用iSCSI为虚拟机提供共享存储。 本文中,Debian Lenny都运行Xen主机和iSCSI目标。
我不会保证这将为您工作!
1初步说明
我在这里使用以下系统:
- Xen主机1:
server.example.com
,IP地址:192.168.0.100
- Xen主机2:
server2.example.com
,IP地址:192.168.0.101
- iSCSI目标(共享存储):
iscsi.example.com
,IP地址:192.168.0.102
- 虚拟机:
vm1.example.com
,IP地址:192.168.0.103
我将在共享存储上使用LVM,以便我可以创建/使用基于LVM的Xen guest虚拟机。
两个Xen主机和iSCSI目标应在/ etc / hosts
中具有以下行(除非您有一个解析主机名
的DNS服务器):
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 192.168.0.101 server2.example.com server2 192.168.0.102 iscsi.example.com iscsi 192.168.0.103 vm1.example.com vm1 [...] |
2 Xen安装程序
server1 / server2:
应该根据本教程的第二章设置两个Xen主机: 使用Xen进行虚拟化Debian Lenny(AMD64)
要允许虚拟机的实时迁移,我们必须在/etc/xen/xend-config.sxp中启用以下设置...
vi /etc/xen/xend-config.sxp
[...] (xend-relocation-server yes) [...] (xend-relocation-port 8002) [...] (xend-relocation-address '') [...] (xend-relocation-hosts-allow '') [...] |
...并重新启动Xen:
/etc/init.d/xend restart
3设置iSCSI目标(共享存储)
iscsi.example.com:
现在我们设定了目标。 目标将为server1
和server2
提供共享存储,即虚拟Xen机器将存储在共享存储上。
aptitude install iscsitarget iscsitarget-modules-`uname -r`
打开/ etc / default / iscsitarget
...
vi /etc/default/iscsitarget
...并将ISCSITARGET_ENABLE
设置为true
:
ISCSITARGET_ENABLE=true |
我们可以使用未使用的逻辑卷,映像文件,硬盘驱动器(例如/ dev / sdb
),硬盘驱动器分区(例如/ dev / sdb1
)或RAID设备(例如/ dev / md0
)作为存储。 在本例中,我将在卷组vg0
中创建一个名为storage_lun1
的20GB的逻辑卷:
lvcreate -L20G -n storage_lun1 vg0
(如果要使用图像文件,可以按如下方式创建它:
mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000
这将创建大小为20GB的映像文件/storage/lun1.img
。
)
接下来我们编辑/etc/ietd.conf
...
vi /etc/ietd.conf
...并注释掉该文件中的所有内容。 最后我们添加以下节:
[...] Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6 |
目标名称必须是全局唯一的名称,iSCSI标准定义了“iSCSI合格名称”,如下所示: iqn.yyyy-mm。<reverse domain name> [:identifier]
; yyyy-mm
是域有效的日期; 标识符可以自由选择。 IncomingUser
行包含用户名和密码,只有提供此用户名和密码的发起者(客户端)才能登录并使用存储设备; 如果您不需要身份验证,请勿在IncomingUser
行中指定用户名和密码。 在Lun
行中,我们必须指定存储设备的完整路径(例如/ dev / vg0 / storage_lun1
, /storage/
lun1.img
, / dev / sdb
等)。
现在我们告诉目标,我们要允许连接到设备iqn.2001-04.com.example:storage.lun1
从IP地址192.168.0.100
( server1.example.com
)和192.168.0.101
( server2.example。 com
)...
vi /etc/initiators.allow
[...] iqn.2001-04.com.example:storage.lun1 192.168.0.100, 192.168.0.101 |
...并启动目标:
/etc/init.d/iscsitarget start