ITPub博客

首页 > 数据库 > 数据库开发技术 > Openfiler+RAC的安装之五--在RAC 节点上配置 iSCSI 卷

Openfiler+RAC的安装之五--在RAC 节点上配置 iSCSI 卷

原创 数据库开发技术 作者:jolly10 时间:2012-08-10 09:15:21 0 删除 编辑

在本节中,我们将在两个 Oracle RAC 节点上配置 iSCSI 软件启动器。

这节的步骤需要在rac两上节点分别都做。

1.安装 iSCSI(启动器)服务

就 Oracle Enterprise Linux 5.4 来说,默认情况下不会安装 Open-iSCSI iSCSI 软件启动器。该软件包含在 1 号 CD 上的 iscsi-initiator-utils 程序包中。

[root@racnode1 ~]# mount -r /dev/cdrom /media/cdrom
[root@racnode1 ~]# cd /media/cdrom/Server
[root@racnode1 ~]# rpm -Uvh iscsi-initiator-utils-*
[root@racnode1 ~]# cd /
[root@racnode1 ~]# eject

确认 iscsi-initiator-utils 程序包现在已安装:

 [root@racnode1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})n"
| grep iscsi-initiator-utils
[@more@]

2.配置 iSCSI(启动器)服务

[root@racnode1 ~]# service iscsid start
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
[root@racnode1 ~]# chkconfig iscsid on
[root@racnode1 ~]# chkconfig iscsi on

检验配置是否正常工作:

[root@racnode2 Server]# iscsiadm -m discovery -t sendtargets -p openfiler-priv
10.10.10.34:3260,1 iqn.2006-01.com.openfiler:racdb.fra1
10.10.10.34:3260,1 iqn.2006-01.com.openfiler:racdb.data1
10.10.10.34:3260,1 iqn.2006-01.com.openfiler:racdb.crs2

在这里的时候发现在上节中配置的iqn.2006-01.com.openfiler:racdb.crs1 iSCSI target显示不了,所以干脆就重新建了iqn.2006-01.com.openfiler:racdb.crs2,重新map到/dev/racdbvg/racdb-crs1的LUN path上。

3.手动登录到 iSCSI 目标

[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.10.10.34 -l

[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.10.10.34 -l[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.10.10.34 -l

4.配置自动登录

确保在计算机引导(或 iSCSI 启动器服务启动/重启)时,客户端将自动登录到上面列出的每个目标。

[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs2 -p 10.10.10.34 --op update -n node.startup -v automatic
[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 10.10.10.34 --op update -n node.startup -v automatic
[root@racnode2 Server]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 10.10.10.34 --op update -n node.startup -v automatic

5.创建永久性本地 SCSI 设备名称

[root@racnode2 Server]# (cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" "; print $9 " " $10 " " $11}')
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs2-lun-0 -> ../../sdb
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdc
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-2 -> ../../sdd


通过上面,我们可以看到每个iSCSI target被分别挂载到sdb,sdc,sdd上 但是每次重新引导服务器时,该映射都可能有所不同。它是自动登录到以随机方式配置的每个目标,并将这些目标映射到下一个可用的本地 SCSI 设备名称。 所以对于有个多target的时候,target1现在是/dev/sdc,下一次可能就是/dev/sdd . 因此,如果无法预测重新引导后的 iSCSI 目标映射,依赖于使用本地 SCSI 设备名称是不现实的。

在这里,我们就需要使用udev的动态管理工具。udev 提供了一个动态设备目录,使用一组可配置的规则通过符号链接指向实际设备。当 udev 收到设备事件(例如,客户端登录到 iSCSI 目标)时,就会根据 sysfs 中提供的可用设备属性匹配其配置好的规则以便识别设备。匹配规则可以提供其他设备信息或指定设备节点名和多个符号链接名,并指示 udev 运行其他程序(例如,一个 SHELL 脚本)作为设备事件处理过程的一部分。

首先创建规则文件:

[root@racnode2 Server]# more /etc/udev/rules.d/55-openiscsi.rules


KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+=
"iscsi/%c/part%n"


然后在服务器上创建一个目录,用于存储udev脚本:

[root@racnode1 ~]# mkdir -p /etc/udev/scripts

接下来,在两个 Oracle RAC 节点上创建 UNIX shell 脚本 /etc/udev/scripts/iscsidev.sh

[root@racnode2 Server]# more /etc/udev/scripts/iscsidev.sh
#!/bin/sh
# FILE: /etc/udev/scripts/iscsidev.sh

BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetnam
e"
target_name=$(cat ${file})
# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
exit 1
fi

# Check if QNAP drive
check_qnap_target_name=${target_name%%:*}
if [ $check_qnap_target_name = "iqn.2004-04.com.qnap" ]; then
target_name=`echo "${target_name%.*}"`
fi

echo "${target_name##*.}"

创建 UNIX SHELL 脚本后,将其更改为可执行文件:

[root@racnode2 ~]# chmod 755 /etc/udev/scripts/iscsidev.sh

在rac节点上重新启动iSCSI服务,来验证一下,是否重启后iSCSI target还是对应之前的分区号:

[root@racnode1 ~]# service iscsi stop
[root@racnode1 ~]# service iscsi start
[root@racnode2 Server]# ls -l /dev/iscsi/*
/dev/iscsi/crs2:
total 0
lrwxrwxrwx 1 root root 9 Aug 10 01:07 part -> ../../sdb

/dev/iscsi/data1:
total 0
lrwxrwxrwx 1 root root 9 Aug 10 01:07 part -> ../../sdc

/dev/iscsi/fra1:
total 0
lrwxrwxrwx 1 root root 9 Aug 10 01:07 part -> ../../sdd

6.在 iSCSI 卷上创建分区

现在,我们需要在每个 iSCSI 卷上创建一个占用整个卷大小的主分区。这一步只需要在一个节点做即可。

使用上一节中通过 udev 创建的本地设备名称在每个 iSCSI 目标上创建一个主分区:

  • /dev/iscsi/crs2/part
  • /dev/iscsi/data1/part
  • /dev/iscsi/fra1/part

[root@racnode1 ~]# fdisk /dev/iscsi/crs2/part
Command (m for help): n
Command action
e extended
p primary partition (1-4)

p
Partition number (1-4): 1
First cylinder (1-1012, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-1012, default 1012): 1012

Command (m for help): p

Disk /dev/iscsi/crs1/part: 2315 MB, 2315255808 bytes
72 heads, 62 sectors/track, 1012 cylinders
Units = cylinders of 4464 * 512 = 2285568 bytes

Device Boot Start End Blocks Id System
/dev/iscsi/crs1/part1 1 1012 2258753 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

其它两个分区步骤略。

完成了之后需要验证一下:

[root@racnode2 ~]# partprobe
[root@racnode2 ~]# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 6527 52323705 8e Linux LVM

Disk /dev/sdb: 2315 MB, 2315255808 bytes
72 heads, 62 sectors/track, 1012 cylinders
Units = cylinders of 4464 * 512 = 2285568 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 1012 2258753 83 Linux

Disk /dev/sdd: 9563 MB, 9563013120 bytes
64 heads, 32 sectors/track, 9120 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sdd1 1 9120 9338864 83 Linux

Disk /dev/sdc: 9563 MB, 9563013120 bytes
64 heads, 32 sectors/track, 9120 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 9120 9338864 83 Linux

最后,您应该在两个 Oracle RAC 节点上运行以下命令,以验证 udev 为每个新分区创建了新的符号链接:

[root@racnode1 ~]# (cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" "; print $9 " " $10 " " $11}')
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs2-lun-0 -> ../../sdb
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs2-lun-0-part1 -> ../../sdb1
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdc
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0-part1 -> ../../sdc1
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-2 -> ../../sdd
ip-10.10.10.34:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-2-part1 -> ../../sdd1

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

请登录后发表评论 登录
全部评论

注册时间:2008-02-20

  • 博文量
    263
  • 访问量
    772959