内容


实现 Xen 和 DS4800 多路存储

使用 IBM System Storage DS4800 提供对 Xen 环境的多路 SAN 存储访问

Comments

如今,虚拟化技术已被业界广泛采用,而在数十年前,它是 IBM 主机的一部分。虚拟化最近之所以得到更广泛的采用,是因为企业数据中心再也无法通过增加机架式服务器来满足新应用程序的需要。就服务器的数量、耗电量、每平方英尺地板所散发的热量而言,数据中心的规模无法再进一步扩展。

虚拟化可以通过提高利用率和降低操作成本来减少服务器数量,因而是解决过度需求的极好的解决方案,与此同时,它也给系统可用性增加了负担,因为现在有更多的应用程序在每台机器中运行。现在,任何故障都会给企业带来更多的破坏。

解决这个问题的一种方法是使用全冗余路径来访问外部 SAN(存储区域网)设备 — 通过这种方式,可以减少因存储子系统访问问题导致的故障。

本文通过 Red Hat Enterprise Linux 5 update 1 (RHEL 5.1) 展示如何使用 IBM 为访问 IBM System Storage DS4800 而提供的 RDAC(冗余磁盘阵列控制器)多路驱动程序来支持多路访问 Xen 主机和客户机(guest)。

虚拟化与 Xen

已经有很多文章解释了各种不同类型的虚拟化技术,例如硬件分区、逻辑分区、hypervisor 等。Xen 是一种超虚拟化(paravirtualization)hypervisor 技术。换句话说,Xen hypervisor 是硬件之上一层薄的软件层。为了在 Xen hypervisor 上运行,每个 guest 操作系统的内核和驱动程序都必须作出修改。

这种类型的虚拟化的优点在于,在进行低级调用时,通过 guest 操作系统与 hypervisor 之间的协作,大多数情况下 Xen guest 的性能可以接近本地性能(也就是说,这种类型的虚拟化是商业硬件中性价比最高的实现)。

这种虚拟化的缺点是,只有经过修改的内核才受支持,因此不能用它来增强较旧的操作系统,例如 Windows® 2000。但是,既然虚拟化正成为一个很热的卖点,芯片厂商自然会设法进一步提供对这一趋势的支持,虽然会损失一点性能,但是具有 Intel-VT 或 AMD Pacifica 特性的处理器能支持完全的虚拟化,从而在 Xen hypervisor 上运行未经修改的 guest。

Xen hypervisor 现在到了第 3 版,并且被广泛使用,一些供应商已决定将它包括在他们的 Linux 发行版中。例如,在 Red Hat Enterprise Linux 5 和 Novell SUSE Linux Enterprise Server 10 中,Xen 是健壮的、受支持的,同样重要的是,它是免费的!

Xen 架构

当启动一个 Xen 主机时,Xen hypervisor 首先接管系统,然后装载第一个 guest OS,在 Xen 术语中,这个 guest OS 称作 domain 0(或 Dom0)。用于访问硬件的所有设备驱动程序也都被装载到 Dom0 中。Dom0 向其他 guest OS(有时被称作 domain U 或 DomU)提供虚拟块设备和虚拟网络设备。从现在起,我不再把 Dom0 看作一个 guest OS,虽然它实际上就是一个有一些特殊功能的 guest 实例。

在每个 guest(DomU)中,有一些用于访问虚拟块设备和虚拟网络设备的轻量级设备驱动程序;它们被称作前端驱动程序(frontend driver),以区别于在 Dom0 中运行的重量级后端驱动程序(backend drivers)。图 1 显示了 Xen 的架构。

图 1. Xen 的简化架构图
Xen 的简化架构图
Xen 的简化架构图

实际上,从 Xen 3.0.3 开始,虚拟块前端是在 xenblk 模块中实现的,而虚拟块后端是由 blkbk 和 blktap 模块处理的。虚拟网络前端由 xennet 模块处理,后端由 netbk 模块处理。要想查看有哪些模块被装载到 Linux 系统中,可以使用 lsmodmodinfo 命令查看模块信息。

多路 SAN 存储

当人们将存储从直接主机连接转移到共享的 SAN 存储基础设施中时,复杂性随之增加。主机与存储柜之间的专用 SCSI 或 Fibre Channel cable 如今变成了 FC 电缆、SAN 交换机与导控器(director)以及具有自己的控制器、磁盘柜、电缆等的存储服务器。虽然 SAN 存储的优点毋庸置疑,但是由于主机与实际的硬盘驱动器之间的组件出现故障的机率很高,其缺点也十分明显。而多路数据访问是解决这一问题的良策。

实际上,主机有不止一条独立的通道可以访问存储服务器上的同一个逻辑驱动器(使用逻辑单元号,即 LUN)。多路驱动程序将所有路径组合起来,只向操作系统显示一个块设备。每个 LUN 有一个优先路径,如果该路径失败,则多路驱动程序将 I/O 请求转发给备选路径。多路驱动程序并不都是一样的:有些可以处理更智能的负载均衡,有些只能处理故障转移。对于 DS4800 存储服务器,IBM 推荐并提供了 RDAC 驱动程序,该驱动程序可在 HBA(host bust adapter) 驱动程序上使用。记住,多路驱动程序不能替代 HBA 驱动程序:它们只能相互补充。多路驱动程序就像是大脑,而 HBA 驱动程序就像是胳膊和腿。现代操作系统也提供了它们自己的多路驱动程序,但是在使用之前应确保它已经通过您的存储供应商的认证。

硬件和软件

理论的东西讲得差不多了。我们来看看测试环境的架构。我有一个 IBM x3550 服务器,它有一个带 2 个 PC 端口的 HBA 卡。每个端口被连接到一个不同的 SAN 交换机。DS4800 存储服务器有 2 个控制器,每个控制器有 4 个 FC 端口。为简单起见,我在图 2 中只显示 2 个 FC 连接,每个连接被连接到与主机对应的一组交换机。因此,其中一条访问路径的中断不会影响从主机发起的存储访问。安装在 Domain 0 中的 RDAC 驱动程序负责在正常情况下使用优先路径,在出现中断时切换到备选路径。guest OS 不需要任何专门的驱动程序就可以对后端存储进行多路访问。

图 2. 测试环境的架构
测试环境的架构
测试环境的架构

下面是我的测试环境中的硬件和软件:

  • IBM System x3550
    • 2 Dual-Core Xeon,4 GB 内存
    • QLogic HBA adapter QLE2462
    • Red Hat Enterprise Linux 5 update 1
    • IBM RDAC 驱动程序,版本为 09.01.C5.11
    • QLogic 驱动程序,版本为 qla2xxx 8.01.07.15
  • IBM System Storage DS 4800 model 1815-84A
    • 2 个控制器
    • 136GB 的 16 FC 磁盘
    • 8 个 4Gbps FC 端口
  • Brocade 交换机,型号为 2109-F32
    • 32 个 2Gbps 端口

设置存储

由于 IBM SAN 存储服务器是为多路访问而设计的,因此不需要特别的设置就可以通过多路访问逻辑驱动器。对于 DS4800,当创建一个逻辑列时,它自动将控制器所有者设为用于负载均衡的优先路径。在图 3 中,我创建了 4 个 LUN,并将它们映射到我的主机组。记住,为了使主机可以扫描它们,LUN 号必须是连续的,在此,LUN 号从 0 开始。如果去掉一个逻辑驱动器,应确保其他 LUN 号仍是连续的!

图 3. DS4800 中创建的映射到主机组的逻辑驱动器
DS4800 中创建的映射到主机组的逻辑驱动器
DS4800 中创建的映射到主机组的逻辑驱动器

在 switch fabric,我将主机 HBA 的第一个 WWPN 与存储控制器 A 的一个 WWPN 一起放入一个区域。然后将主机 HBA 的第二个 WWPN 与控制器 B 的一个 WWPN 一起放入另一个区域。

设置 Xen 主机

设置 Xen hypervisor 和 domain 0 很简单。其过程如下:

  1. 将 RHEL 5.1 正常安装在一个本地驱动器上。也可以以 SAN 启动的方式安装,但是这超出了本文的范围。
  2. 安装并运行 RHEL 5.1 之后,利用安装源文件安装 Xen 内核:
    清单 1. 安装 Xen 内核包
    rpm -ivh kernel-xen-2.6.18-53.el5.i686.rpm
    rpm -ivh kernel-xen-devel-2.6.18-53.el5.i686.rpm
  3. 现在在启动管理器 /boot/grub/grub.conf 中有一个新的条目。确保它将默认启动 Xen 内核。重新启动系统。
  4. 重启后,确认正在运行 Xen 内核:
    清单 2. 检验 Xen 内核
    [root@xenhost ~]# uname -a
    Linux xenhost 2.6.18-53.el5xen #1 SMP Wed Oct 10 17:06:12 EDT 2007 i686 i686 i386 
     GNU/Linux
  5. 祝贺您!您现在有了一个 Xen hypervisor,并且其中正在运行 Dom0。

安装 Xen 工具

现在,Xen 正在运行,您需要安装一些工具,以便与之交互。在 RHEL 5.1 安装源文件中,Xen 工具在 /VT 目录中。这些基本的命令行工具非常强大,但是不够友好,而图形化工具虽然易于使用,但是不强大。这就是现实!无论如何,我们还得继续安装它们。

下面是必须首先安装的依赖包,它们位于 DVD 或 CD 上的 /Server 目录中:

清单 3. 安装 Xen 工具的依赖包
rpm -ivh bridge-utils-1.1-2.i386.rpm
rpm -ivh dnsmasq-2.39-2.el5.i386.rpm
rpm -ivh gnome-python2-gnomekeyring-2.16.0-1.fc6.i386.rpm
rpm -ivh xen-libs-3.0.3-41.el5.i386.rpm

在安装 Xen 工具包时,无论以何种顺序安装它们,似乎都存在一个循环依赖,因此我不得不在没有检验依赖的情况下强行安装第一个包,然后按以下顺序安装其他的包:

清单 4. 安装 Xen 工具包
rpm -ivh --nodeps libvirt-0.2.3-9.el5.i386.rpm
rpm -ivh libvirt-devel-0.2.3-9.el5.i386.rpm
rpm -ivh libvirt-python-0.2.3-9.el5.i386.rpm
rpm -ivh python-virtinst-0.103.0-3.el5.noarch.rpm
rpm -ivh xen-3.0.3-41.el5.i386.rpm
rpm -ivh xen-devel-3.0.3-41.el5.i386.rpm
rpm -ivh virt-manager-0.4.0-3.el5.i386.rpm
rpm -ivh gnome-applet-vm-0.1.2-1.el5.i386.rpm
rpm -ivh Virtualization-en-US-5.1.0-12.noarch.rpm

好,现在我们来尝试一些命令。但是在此之前,必须启动 xend daemon 。所有的 Xen 管理工具在提取信息时都需要与 xend daemon 交互。要启动 xend daemon ,以 root 身份运行 xend start。通常,xend 服务被设置为在系统启动时启动,所以不必每次都这样做。

现在可以运行 xm info 命令,查看 Xen hypervisor 的一些信息。

清单 5. 显示 Xen hypervisor 信息
[root@xenhost ~]# xm info
host                   : xenhost
release                : 2.6.18-53.el5xen
version                : #1 SMP Wed Oct 10 17:06:12 EDT 2007
machine                : i686
nr_cpus                : 4
nr_nodes               : 1
sockets_per_node       : 2
cores_per_socket       : 2
threads_per_core       : 1
cpu_mhz                : 2992
hw_caps                : bfebfbff:20100000:00000000:00000140:0004e3bd:00000000:00000001
total_memory           : 4095
free_memory            : 20
xen_major              : 3
xen_minor              : 1
xen_extra              : .0-53.el5
xen_caps               : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
xen_pagesize           : 4096
platform_params        : virt_start=0xf5800000
xen_changeset          : unavailable
cc_compiler            : gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)
cc_compile_by          : brewbuilder
cc_compile_domain      : build.redhat.com
cc_compile_date        : Wed Oct 10 16:30:55 EDT 2007
xend_config_format     : 2

然后,可以运行 xm list 命令,查看正在运行的虚拟机。当然,在此只能看到 domain 0 在运行。这里也可以使用 xentop

清单 6. 列出正在运行的 Xen guest
[root@xenhost ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     2928     4 r-----  61790.3

如果那两个命令成功运行,那么可以确信 Xen 环境已经获得了适当的配置。如果那两个命令不能连接到 xend daemon,可尝试重新启动计算机。或者,可以查看 /var/log/xen 目录中的 Xen 日志。

如果您偏爱图形化工具,那么可以登录到一个 Gnome 会话,然后选择菜单 Applications > System Tools > Virtual Machine Manager。应该可以看到如图 4 所示的虚拟机的状态。

图 4. Virtual Machine Manager 主面板
Virtual Machine Manager 主面板
Virtual Machine Manager 主面板

安装多路驱动程序

现在,Xen 环境已设置好并且正在运行,接下来该安装用于访问 SAN 存储的驱动程序了。首先要安装的是 HBA 适配器驱动程序,在本例中就是 QLogic 驱动程序。从供应商的网站下载 QLogic 驱动程序安装包,按照文档安装它。安装后,必须在 /etc/modprobe.conf 中添加一个选项,以关闭默认的故障转移选项,如下所示:

清单 7. 禁用 QLogic 驱动程序故障转移的选项
options qla2xxx ql2xfailover=0

接下来安装 RDAC 多路驱动程序。同样,从 IBM 网站(见 参考资料)下载安装包,并按照文档安装这个驱动程序。安装过程中应该会编译源代码,安装模块,并创建一个新的 initrd 镜像。您应该手动修改启动管理器配置文件 /boot/grub/grub.conf,以使用新的 initrd 镜像。这里要小心,不要使用安装脚本提供的例子,因为它不适用于 Xen 主机。相反,应该使用 grub.conf 中的当前格式,并用 mpp-xyz.img 替代 initrd-xyz.img。

我们例子看上去是这样的:

清单 8. grub.conf 中的启动选项
title Red Hat Enterprise Linux Server with RDAC driver (2.6.18-53.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-53.el5
        module /vmlinuz-2.6.18-53.el5xen ro root=LABEL=/ rhgb quiet
        module /mpp-2.6.18-53.el5xen.img

重新启动后,使用 /opt/mpp/lsvdev 命令列出所有逻辑驱动器。如果没有看到所有的 LUN,那么运行 mppBusRescan 命令。

清单 9. 列出 domain 0 检测到的 LUN
[root@xenhost ~]# /opt/mpp/lsvdev
        Array Name      Lun    sd device
        -------------------------------------
        ARCJMTDS48K1    0     -> /dev/sdb
        ARCJMTDS48K1    1     -> /dev/sdc
        ARCJMTDS48K1    2     -> /dev/sdd
        ARCJMTDS48K1    3     -> /dev/sde

现在应该可以从 domain 0 对 SAN 存储进行多路访问。

设置 Xen guest

在安装 Xen guest 之前,需要在主机上做两件事:

  1. 确保虚拟网络设置正确。
  2. 使 Xen guest 可以通过网络(可以是 HTTP、FTP 或 NFS)获得安装媒介 — 但是不能使用本地挂载的 ISO 镜像!

对于我的虚拟网络,我特别地将它绑定到 eth0 适配器。可以使用图形化的 Virtual Machine Manager (VMM) 完成这个操作;进入菜单 Edit > Host details > Virtual Networks,修改或添加一个新的条目。

图 5. VMM 中的虚拟网络配置
VMM 中的虚拟网络配置
VMM 中的虚拟网络配置

对于安装媒介,我只是从 DVD 镜像中提取所有的文件,将它们放入到 /var/www/html/rhel51 目录中,然后用 service httpd start 启动 Apache Web 服务器。然后,在 Xen guest 中可以通过 http://192.168.100.1/rhel51 访问所有这些文件。注意不要让 iptable 阻塞使用端口 80 的连接。

Guest test0

对于第一个 guest OS,我希望它有 3 个逻辑驱动器,这 3 个逻辑驱动器直接映射到 DS4800 上的 3 个 LUN(当然是通过 Dom0)。

图 6. guest test0 的存储设备映射
guest test0 的存储设备映射
guest test0 的存储设备映射

现在一切就绪。

  1. 单击 VMM 主面板上的 New 按钮。
    图 7. 包含 domain 0 的 VMM 主面板
    包含 domain 0 的 VMM 主面板
    包含 domain 0 的 VMM 主面板
  2. 为 guest 指定一个名称,例如 test0。
  3. 选择 Paravirtualized 模式。
  4. 在下一个屏幕中,在 Install Media URL 字段中输入:
    http://192.168.100.1/rhel51
  5. 为这个 guest 指定一个 Normal Disk Partition;第一个是主机的 /dev/sdb。其他磁盘可以在以后添加。
    图 8. 为 guest test0 指定存储空间
    为 guest test0 指定存储空间
    为 guest test0 指定存储空间
  6. 选择之前设置的 Virtual Network
  7. 为这个 guest 分配内存。对于我来说,我将起始内存设为 512MB,最大内存设为 1GB。对于虚拟 CPU,我将其设为 2。
    图 9. 为 guest test0 分配内存
    为 guest test0 分配内存
    为 guest test0 分配内存
  8. 下面是我得到的摘要面板:
    图 10. Guest test0 创建摘要面板
    Guest test0 创建摘要面板
    Guest test0 创建摘要面板
  9. 单击 Finish 开始创建过程。
  10. 此时,应该可以看到熟悉的 Red Hat 安装程序。根据指示完成安装。这通常需要一点时间。
    图 11. 在 guest test0 中开始安装
    在 guest test0 中开始安装
    在 guest test0 中开始安装
  11. 在安装过程中或者安装之后,都可以将剩下的两个逻辑驱动器添加到这个 guest 中。在 VMM 主面板上,选择 test0 并单击 Details
    图 12. 含有 1 个 guest 的 VMM 主面板
    含有 1 个 guest 的 VMM 主面板
    含有 1 个 guest 的 VMM 主面板
  12. Hardware 选项卡中,单击 Add
    图 13. guest test0 的硬件详细信息面板
    guest test0 的硬件详细信息面板
    guest test0 的硬件详细信息面板
  13. 接受 Storage device 的默认选择。
  14. 选择一个 Normal Disk Partition,并输入 /dev/sdc
  15. 单击 Finish 完成该过程。
  16. 重复该过程,添加 /dev/sdd。
  17. 现在应该已经为这个 guest 定义了 3 个磁盘。
    图 14. 添加 2 个存储设备到 guest test0 之后
    添加 2 个存储设备到 guest test0 之后
    添加 2 个存储设备到 guest test0 之后
  18. 在适当的时候关闭并重新启动这个 guest,以使更改生效 — 这里不要使用重启。

要访问这个 guest OS:

  • 可以像 OS 安装时那样使用图形化控制台。
  • 可以从主机终端会话中运行 xm console test0 来访问一个文本控制台。
  • 如果知道为其分配的 DHCP IP 地址,可以通过 ssh 访问 test0。

要查看新的磁盘,可以运行 fdisk -l,还可以选择使用 fdisk,以便在磁盘上创建分区。

guest 配置存储在 /etc/xen 目录中的一个纯文本文件中。例如,下面是 /etc/xen/test0 的内容:

清单 10. guest test0 的配置文件
[root@xenhost ~]# cat /etc/xen/test0
name = "test0"
uuid = "dddf02f6-5f90-74a5-0098-365a51b54282"
maxmem = 1000
memory = 500
vcpus = 2
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "phy:/dev/sdb,xvda,w", "phy:/dev/sdc,xvdb,w", "phy:/dev/sdd,xvdc,w" ]
vif = [ "mac=00:16:3e:79:2f:e1,bridge=vnet0" ]

从头开始创建这个文件并不容易,但是手动修改这个文件却很容易。例如,如果想要更改内存分配或虚拟 CPU 的数量,只需编辑这个文件,并使用 xm shutdown test0xm create test0 命令关闭/重新启动 guest。 或者也可以使用 VMM 工具。

对于这个练习,我将 guest 中每个磁盘的名称由 xvdx 改为 hdx,如下所示:

清单 11. 更改虚拟设备名称
disk = [ "phy:/dev/sdb,hda,w", "phy:/dev/sdc,hdb,w", "phy:/dev/sdd,hdc,w" ]

实际上,如何命名虚拟设备并不重要。您也可以尝试使用 sdx。guest 只是启动列表中的第一个块设备。在虚拟磁盘上创建分区和文件系统之后,我从 test0 中得到以下内容:

清单 12. test0 中所有文件系统的列表
 [root@test0 ~]# df -h
Filesystem            	           Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00  3.8G  1.8G  1.8G  51% /
/dev/hda1                         99M   13M   82M  14% /boot
tmpfs                            251M     0  251M   0% /dev/shm
/dev/hdb1                        2.0G   36M  1.9G   2% /mnt/disk1
/dev/hdc1                        2.0G   36M  1.9G   2% /mnt/disk2

这样就完成了 test0 的设置过程,test0 现在可以对 DS4800 上的 3 个 LUN 进行多路访问。

Guest test1

对于第二个 guest,我想将 Dom0 中的镜像文件作为虚拟磁盘映射到这个 guest。DS4800 上的 LUN #3 以 /dev/sde 的形式提供给 Dom0。我使用 fdisk 在它上面创建一个分区,然后使用 mkfs 在那个分区上创建一个文件系统。然后,我将这个文件系统挂载到默认的 Xen 镜像文件位置,即 /var/lib/xen/images。

图 15. guest test1 的存储设备映射
guest test1 的存储设备映射
guest test1 的存储设备映射

现在我们用和之前一样的过程继续创建 guest test1,在 VMM 主面板中单击 New,将它的 System Name 设为 test1,选择 Paravirtualized。在指定存储屏幕中,选择 Simple File,位置为 /var/lib/xen/images/test1-xvda.img。指定一个大小,并选中 Allocate entire virtual disk now 选项。

图 16. 为 guest test1 指定存储空间
为 guest test1 指定存储空间
为 guest test1 指定存储空间

然后,像前面那样完成其他屏幕。最后,应该开始 OS 安装。在安装期间,打开 VMM test1 详细信息面板,使用镜像文件名 /var/lib/xen/images/test1-xvdb.img 和 /var/lib/xen/images/test1-xvdc.img 添加 2 个磁盘。然后,应该有如图 17 所示的 3 个磁盘。

图 17. guest test1 的硬件详细信息面板
guest test1 的硬件详细信息面板
guest test1 的硬件详细信息面板

下面是 test1 的配置文件:

清单 13. guest test1 的配置文件
[root@xenhost ~]# cat /etc/xen/test1
name = "test1"
uuid = "53b39c1e9edc6143a06d4011154beab9"
maxmem = 1000
memory = 600
vcpus = 2
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
disk = [ "tap:aio:/var/lib/xen/images/test1-xvda.img,xvda,w", 
 "tap:aio:/var/lib/xen/images/test1-xvdb.img,xvdb,w", "tap:aio:/var/lib/xen/images/
 test1-xvdc.img,xvdc,w" ]
vif = [ "mac=00:16:3e:7b:78:63,bridge=vnet0" ]

标记 tap:aio 用于表示基于镜像文件的一个逻辑磁盘,而标记 phy 表示一个物理磁盘。在完成 OS 安装后,关闭并重新启动 test1,使用 fdisk -l 可以看到 2 个新添加的磁盘。在这些磁盘上创建分区和文件系统之后,test1 中有以下内容:

清单 14. test1 中所有文件系统的列表
[root@test1 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on 
/dev/mapper/VolGroup00-LogVol00  4.7G  1.8G  2.9G  39% /
/dev/xvda1                        99M   13M   82M  14% /boot
tmpfs                            301M     0  301M   0% /dev/shm
/dev/xvdb1                       2.0G   35M  1.8G   2% /mnt/disk1
/dev/xvdc1                       2.0G   35M  1.8G   2% /mnt/disk2

至此,两个 guest 都已经安装和配置完毕,现在可以通过 domain 0 对各自的虚拟磁盘进行多路访问。我的 VMM 现在显示:

图 18. 有 2 个 guest 的 VMM 主面板
有 2 个 guest 的 VMM 主面板
有 2 个 guest 的 VMM 主面板

拔掉一些电缆

为了确保这两个 guest 中都可以进行多路访问,我在每个 guest 中运行一个 IBM 内部 I/O 工作负载工具。它编写数据块,然后连续地在这 3 个虚拟磁盘上进行读取和验证。然后,我故意拔掉主机与交换机之间的一根 FC 电缆,以中断其中一条访问路径。这个 I/O 工具暂停了大约 5 秒钟,然后继续像通常一样活动。

为了模拟 SAN 交换机故障,我禁用了连接主机的另一个交换机上的一个端口,同样,I/O 工具继续正常运行。

最后,我禁用 DS4800 上的一个控制器,和预期的一样,I/O 工具继续正常运行。当然,在每次测试之间,我将环境恢复到正常状态,并等待几分钟,让多路驱动程序重新建立与断开的路径的连接。

结束语

在本文中,您看到了如何设置一个 Xen 环境,从而能够通过多路访问 IBM DS4800 存储服务器。您学习了当存储路径出现故障或者存储基础设施进行维护时,如何使用多路访问显著增加 Xen 虚拟机的正常运行时间。

如果 2 条路径还不能提供足够的可用性和带宽,那么您可以使用 4 条甚至多达 8 条路径!高端存储服务器必要时甚至可以智能地提供负载均衡访问路径。因此,如果您正在构建一个带有 SAN 存储的虚拟化环境,那么肯定应该考虑多路访问,以获得高度的可用性、可靠性和可服务性。


相关主题

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文
  • 在 “虚拟 Linux” (developerWorks,2006 年 12 月)中,了解虚拟化方法、架构和实现。
  • "用 coLinux 进行虚拟化" (developerWorks,2007 年 3 月)介绍了用于 Linux/Windows 虚拟化的 coLinux,并提供了另一种虚拟化的途径。
  • Downloads for DS4800 Midrange Disk System 提供了支持和下载,包括固件、存储管理和主机总线适配器软件,以及管理和诊断工具。
  • Xen.org 提供关于 Xen hypervisor 的最新信息,Xen hypervisor 提供了一组虚拟化特性集,面向 x86、x86_64、IA64、 PowerPC™ 和其他 CPU 架构的虚拟化特性集,以及各种 guest 操作系统,包括 Windows、Linux、Solaris 和各种版本的 BSD 操作系统。
  • 访问 developerWorks Linux 专区,查找面向 Linux 开发人员的更多参考资料,并阅读 最受欢迎的文章和教程
  • 查看 developerWorks 上所有的 Linux 技巧 Linux 教程

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=299826
ArticleTitle=实现 Xen 和 DS4800 多路存储
publish-date=04072008