Openfiler+RAC的安裝之五--在RAC 節點上配置 iSCSI 卷

jolly10發表於2012-08-10

在本節中,我們將在兩個 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章