ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Informix Dynamic Server MACH 11 配置Linux 共享磁盘

Informix Dynamic Server MACH 11 配置Linux 共享磁盘

原创 Linux操作系统 作者:ArtCode 时间:2009-04-27 15:30:38 0 删除 编辑

简介

从 11.50.xC1 开始,IBM Informix Dynamic Server (IDS) 引入了一组称为 Multi-node Active Cluster for High Availability (MACH 11) 的高可用性和集群特性。其中一个特性是支持 Shared Disk (SD) 从服务器。SD 从服务器与主服务器共享磁盘,但是不维护物理数据库的拷贝。本文讲解如何在 Ubuntu Linux 上配置真正的共享磁盘和 SD 从服务器。按照这个过程,您应该能够定制 Ubuntu Linux 上的共享磁盘和 SD 从服务器。

本文提供示例配置的背景信息、描述构建这个配置的需求并讲解配置过程。

背景

本文描述的示例配置使用 Internet SCSI (iSCSI) Storage Area Network (SAN) 为 IDS 提供共享磁盘。下面简要解释 iSCSI 相对于其他方法的优势。

IDS MACH 11 功能需要同时访问共享区块(chunk)上的多个 IDS 实例。这允许在不同的机器上运行 IDS 实例。对于存储在文件系统上的区块(cooked 设备),解决方案是集群文件系统(例如 GFS 和 OCFS)。对于存储在磁盘设备上的区块(原始设备),可以使用 Storage Area Networks(例如 Fibre Channel 或 iSCSI)。因为集群文件系统会给 IDS 操作带来不必要的性能开销和管理负担,本文使用 SAN 作为区块的存储方法。

Fibre Channel (FC) 是一种高性能的 SAN 实现技术。在使用 FC 时,常常能够实现每个 FC 链路 100MB/s 到 400MB/s 的带宽,800MB/s 的带宽也已经能够实现了。但是,FC SAN 的实现相当复杂且昂贵。

对于带宽需求比较低的应用程序,可以用 Internet SCSI (iSCSI) 实现 SAN。在使用 iSCSI 时,通过标准的 1000BASE-T (Gigabit Ethernet) 网络传输 SCSI 命令,提供的理论带宽是每个 Gigabit Ethernet 链路 125MB/s。还可以用 10 Gigabit Ethernet 提供更高的带宽。iSCSI SAN 的实现比较简单且便宜,因为它基于常用的标准组件。对于测试和开发环境,简单性和低成本是重要的优点。

需求

下图显示示例配置的网络结构。


图 1. 示例配置的网络结构
示例配置的网络结构

在示例配置中,在三台标准 PC 机上安装 Ubuntu 8.04 LTS Server Edition。包含多个磁盘的机器(Piero)作为专用的磁盘阵列。另外两台机器运行 IDS 11.50.UC2DE;一台是主服务器(mach1),另一台是 SD 从服务器(mach2)。

现有的 Gigabit Ethernet 适配器连接到一个 Gigabit Ethernet 交换机,它们具有私有 IP 地址。这个私有网络专门为 iSCSI 数据 (SAN) 保留。网络组件还必须支持 jumbo 帧 (MTU=9000)。在 Ubuntu 中,可以在 /etc/network/interfaces 文件中为 SAN 的 Gigabit Ethernet 适配器设置 mtu 9000 选项。可以使用 ifconfig 命令查看 MTU 的当前设置。

每台机器还有另一个连接 LAN 的 Ethernet 适配器。

配置 iSCSI

本节描述如何为示例配置配置 iSCSI。

注意:对于 Ubuntu 8.04 之外的其他 Linux 发行版(比如 Red Hat 或 SUSE),应该能够建立相似的配置。尤其是,Red Hat Enterprise Linux 5 提供了一个用于设置 iSCSI 目标的 scsi-target-utils 包(基于 tgt 项目)。

在目标机器上安装 iscsitarget

在 SAN 中,提供磁盘的机器称为目标。在 SAN 中的目标机器上,安装 Ubuntu 包 iscsitarget(iSCSI Enterprise Target 用户空间工具)。

配置 iSCSI Enterprise Target Daemon

在目标机器的 /etc/ietd.conf 文件 (iSCSI Enterprise Target Daemon) 中,指定可以共享的磁盘或分区。例如:

Target iqn.2008-07.com.ibm.munich.target:shared.disk1
	Lun 0 Path=/dev/sda5,Type=blockio
			

在上面的示例中,iqn.2008-07.com.ibm.munich.target:shared.disk1 是磁盘的符号目标名。类型 blockio 把这个磁盘设置为直接块 I/O 模式,没有页面缓存。

在修改 /etc/ietd.conf 之后,必须重新启动 iSCSI Enterprise Target Daemon 以使修改生效:

/etc/init.d/iscsitarget restart
			

也可以使用 ietadm (iSCSI Enterprise Target Administration Utility) 命令动态地修改配置,这样就不需要重新启动。

可以在 /proc/net/iet/volume 和 /proc/net/iet/session 文件中看到当前的配置。

在启动器机器上安装 open-iscsi

访问 SAN 中的磁盘的机器称为启动器。在每台启动器机器上,安装 Ubuntu 包 open-iscsi(高性能的独立于传输方法的 iSCSI 实现)。

对于示例配置,不修改 iscsid (Open-iSCSI daemon) 的默认值。iscsid 配置是在 /etc/iscsi/iscsid.conf 文件中定义的。

定义启动器访问磁盘

使用 iscsiadm 命令定义启动器可以访问哪些磁盘。

发现目标机器的 IP 地址上的目标:

iscsiadm --mode discovery --type sendtargets --portal 192.168.0.100
			

列出发现的节点记录:

iscsiadm --mode node
			

把节点记录的 startup 值设置为 automatic(在 /etc/iscsi/iscsid.conf 中设置的默认值是 manual)。可以为各个节点记录单独设置 startup 值,也可以设置所有节点记录的 startup 值。在每次执行发现操作之后,都要设置 startup 值。

下面的示例设置一个节点记录的 startup 值:

iscsiadm -m node --targetname iqn.2008-07.com.ibm.munich.target:shared.disk1 \ 
    --op=update --name=node.startup --value=automatic --portal 192.168.0.100
			

下面的示例设置所有节点记录的 startup 值:

iscsiadm -m node --op=update --name=node.startup --value=automatic \ 
    --portal 192.168.0.100
			

在 startup 值为 automatic 的情况下,登录所有目标(重新启动之后自动登录):

iscsiadm --mode node --portal 192.168.0.100 --loginall automatic
			

定义持久的设备路径

现在,内核可以看到新磁盘了,但是在 /proc/partitions 中无法区分设备的映射和目标名。因此,应该使用持久的设备路径。这个路径由 udev (dynamic device management) 自动生成。例如:

/dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0
			

设置分区。例如:

fdisk /dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0
			

分区 1 的路径是:

/dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0-part1
			

如果从多个启动器登录同一目标名,那么可以看到一个共享的磁盘分区,它表现为具有相同路径的块设备。

配置 IDS

本节描述如何为示例配置配置 IDS。

安装 Ubuntu 包

在主服务器 (mach1) 和 SD 从服务器 (mach2) 的 Ubuntu 8.04 操作系统上安装下面的包:

  • bc
  • gcc-3.3-base
  • libaio1
  • libstdc++5
  • pdksh
  • rpm

创建和启用权限

IDS 要求为区块设置特定的权限。在这一步中,使用 udev 为共享磁盘和本地磁盘设置权限。

创建一个新的规则文件 /etc/udev/rules.d/99-informix-permissions.rules,它定义共享磁盘和本地磁盘的权限。例如:

###
# iSCSI shared disks by-path
ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p"
ENV{DEVTYPE}=="partition", 
ENV{ID_PATH}=="ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk*", WNER="informix", GROUP="informix", MODE="0660"

# local disks
KERNEL=="sda7",         WNER="informix", GROUP="informix", MODE="0660"
###
			

必须通过使用 udevtrigger 命令或重新启动来启用这些规则。

另外,建议使用符号链接为设备创建更简单的路径。例如:

/home/informix/chunks/shared.disk1 -> /dev/disk/by-path/\ 
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0-part1
			

创建和配置 IDS 实例

在主服务器 (mach1) 和 SD 从服务器 (mach2) 上创建 IDS 实例。

对于这两台机器,把 ONCONFIG 文件的 ROOTPATH 参数设置为相同的共享磁盘:

ROOTPATH /home/informix/chunks/shared.disk1
			

另外,更新这两台机器的 INFORMIXSQLHOSTS 文件,添加它们之间的通信所需的条目:

demo_on         onsoctcp    mach1    9088
demo_on_sds1    onsoctcp    mach2    9088
			

对于 SD 从服务器机器,在 ONCONFIG 文件中添加以下条目:

SDS_ENABLE 1
SDS_TEMPDBS sds1temp,/home/informix/chunks/sds1temp,2,0,2048
SDS_PAGING /home/informix/chunks/sds1page1,/home/informix/chunks/sds1page2
			

启动 IDS 实例

用以下命令在主服务器 (mach1) 上启动 IDS 实例:

oninit -iv
                                    

在 mach1 机器上启动 IDS 实例之后,把它定义为主服务器:

onmode -d set SDS primary demo_on
			  

用以下命令在 SD 从服务器 (mach2) 上启动 IDS 实例:

oninit -v
                                    

可以用以下命令检查每个实例的状态:
onmode -g sds
			

结束语

本文描述的配置展示了 IDS 极其出色的性能。在运行一个简化的 TPC-B 基准测试时,没有发现本地磁盘和共享磁盘的性能有显著差异。

本文描述了在 Ubuntu Linux 的一个特定版本上设置和配置 iSCSI 共享磁盘的过程,有助于设置和运行 IDS SDS。对于 Linux 操作系统的其他发行版,参照这里的过程并稍加调整即可。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-591936/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 整理混乱数据
请登录后发表评论 登录
全部评论

注册时间:2008-08-05

  • 博文量
    269
  • 访问量
    555705