配置linux iscsi san client
4.1、安裝 iSCSI(啟動器)服務
這個安裝包在系統的安裝包裡。 找到iscsi-initiator-utils-6.2.0.871-0.10.el5.x86_64.rpm包。 安裝上。
[root@centos ~]# rpm -Uvh iscsi-initiator-utils-6.2.0.871-0.10.el5.x86_64.rpm
1:iscsi-initiator-utils ########################################### [100%]
[root@centos ~]# rpm -qa | grep iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.871-0.10.el5
2.2 配置 iSCSI(啟動器)服務
剛才已經安裝了initiator 包。 現在我們來啟動initiator 服務(iscsid),并使其在系統引導時自動啟動。在配置 iscsi 服務自動啟動,使其在系統啟動時自動登入 iSCSI 目标。
[root@centos ~]# service iscsid start
[root@centos ~]# chkconfig iscsid on
[root@centos ~]# chkconfig iscsi on
用iscsiadm指令檢查網絡存儲伺服器上的所有可用目标:
[root@centos ~]# iscsiadm -m discovery -t sendtargets -p 192.168.0.188
手動登入 iSCSI 目标
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.ocr -p 192.168.0.188 -l
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.oradata -p 192.168.0.188 -l
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.hisdata -p 192.168.0.188 -l
斷開ISCSI登入狀态
[root@rac1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.ocr -p 192.168.0.188 -u
配置自動登入
在計算機引導(或 iSCSI 啟動器服務啟動/重新啟動)時,用戶端将自動登入上面列出的每個目标。和上面描述的手動登入過程一樣,不過在這裡加了2個參數。
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.ocr -p 192.168.0.188 --op update -n node.startup -v automatic
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.oradata -p 192.168.0.188 --op update -n node.startup -v automatic
[root@centos ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.hisdata -p 192.168.0.188 --op update -n node.startup -v automatic
4.3 建立永久性本地 SCSI 裝置名稱
檢視/dev/disk/by-path 檔案,來确定檔案被映射到了哪個檔案上:
[root@centos by-path]# ls /dev/disk/by-path -al
需要使用udev的動态管理工具。udev 提供了一個動态裝置目錄,使用一組可配置的規則通過符号連結指向實際裝置。當 udev 收到裝置事件
(例如,用戶端登入到 iSCSI 目标)時,就會根據 sysfs 中提供的可用裝置屬性比對其配置好的規則以便識别裝置。比對規則可以提供其他裝置資訊或指定裝置節點名和多個符号連結名,
并訓示 udev 運作其他程式(例如,一個 SHELL 腳本 )作為裝置事件處理過程的一部分。
4.3.1. 建立新的規則檔案
建立檔案 /etc/udev/rules.d/55-openiscsi.rules,它隻包含一行用于接收事件的名稱-值對。還将定義一個調出 SHELL 腳本 (/etc/udev/scripts/iscsidev.sh),用于處理事件。
55-openiscsi.rules檔案配置非常重要,特别是檔案權限屬性方面,必須要確定正确
[root@centos ~]# more /etc/udev/rules.d/55-openiscsi.rules
# /etc/udev/rules.d/55-openiscsi.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c" , OWNER="grid", GROUP="asmadmin", MODE="0660"
4.3.2. 建立在接收該事件時将調用的 UNIX SHELL 腳本
(1)先在伺服器上建立一個目錄,用于存儲 udev 腳本:
[root@centos ~]# mkdir -p /etc/udev/scripts
檢查/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname的路徑是否正确
(2)在伺服器上建立 UNIX shell 腳本 /etc/udev/scripts/iscsidev.sh:
[root@centos ~]# 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/session*/targetname"
target_name=$(cat ${file})
# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
exit 1
fi
echo "${target_name##*.}"
說明:我們先看一下這個腳本的作用:
[root@centos]# more /sys/class/iscsi_host/host2/device/session1/iscsi_session:session1/targetname
iqn.2006-01.com.san
從這個指令,我們可以看出,這個腳本就是擷取target 的名稱的。 而規則将根據這個腳本傳回的target 名稱的最後一個字元串,來在相應的目錄的下建立對應的檔案。
簡單點就是根據target來做一個映射。 因為target 名稱是唯一的,是以這個映射名稱也是唯一的。 這就避免了映射到不同的系統目錄,而到時共享資料不可用。
(3)将剛才建立的shell腳本修改為可執行檔案:
# chmod 755 /etc/udev/scripts/iscsidev.sh
(4)在伺服器上重新啟動 iSCSI 服務:
[root@centos ~]# service iscsi stop
[root@centos ~]# service iscsi start
(5)驗證
[root@centos]# ls -l /dev/iscsi/*
lrwxrwxrwx 1 root root 6 Oct 28 14:16 /dev/iscsi/san -> ../sdc
因為這裡我們用udev 配置,它就保證了iscsi目标映射到唯一的裝置。 我們在使用的時候使用這個唯一的映射/dev/iscsi/san 即可。
對用戶端這個映射做一個解釋。 因為開始對這塊也有點模糊。
存儲的配置隻幹一件事,就是給我提供一個target。 這個target 是在存儲上做的映射。 伺服器通過initiator 去連存儲。
然後把這個target 映射到自己的下一個可用裝置上,如 /dev/sdc。 如果隻有一個target. 那麼沒有任何問題。
每次initiator連上後都會把這個target 映射到/dev/sdc上。 但是如果有多個target, 那麼這裡就出了問題。
因為initiator的連接配接是随機的。 可能A先連接配接,那A就會映射到/dev/sdc上。 如果B先連接配接,B就會映射到/dev/sdc上。 這就是問題的所在。
Udev 的動态管理很好的解決了這個問題。 我們通過腳本加規則的設定,用腳本來擷取每個target的名稱,然後在規則裡用每個target 最後一個字元串,在我們指定的目錄建立一個裝置。
這樣,因為規則是唯一的。 是以每個裝置都是唯一的。 我們就可以使用這個唯一的裝置,而不會出現問題。 比如實驗中的/dev/iscsi/san. 這個就是一個絕地位置。
要檢視各個iscsi的資訊:
iscsiadm -m session -P 3