天天看點

RH436-3 ISCSI Configuration

  ISCSI Configuration

一、概述

1.   Redhat iscsi driver

  1.1  作用:提供主機通過ip傳輸存儲的能力

  1.2 iscsi和FC比較

<a target="_blank" href="http://blog.51cto.com/attachment/201109/155308122.png"></a>

2.   iscsi資料通路過程

 2.1 用戶端發送scsi指令到遠端儲存設備(服務端target)

 2.2 預設使用tcp/ip協定端口tcp:3260

 2.3 用戶端(initiator)

   2.3.1 通過discovery process方式通路請求到遠端存儲(指定存儲IP)

   2.3.2 必需按照提供iscsi取得的協定

   2.3.3 iscsi服務保證target裝置的持續性(iscsi每次啟動時都生效)

   2.3.4 軟體包:iscsi-initiator-utils-*.rpm

 2.4 伺服器端(target)

   2.4.1 允許一到多個block裝置可不用戶端(initiator)通路

   2.4.2 系統要求RHEL5.1以上版本

   2.4.3 軟體包:scsi-target-utils-*.rpm

3.   iscsi驅動功能

 3.1 支援頭部和資料的加密

 3.2 支援雙向CHAP認證

 3.3 支援流量控制

 3.4 支援多路徑

 3.5 支援動态target的發現

 3.6 支援target改變時異步同步

 3.7 及時資料支援

 3.8 動态驅動從配置

 3.9 系統重新開機或可自動挂載

4.   iscsi的裝置名

 4.1.  Linux會自動給iscsi配置設定一個裝置名

 4.2.  uuid和卷标的功能(這個不是很好的方法)

 4.3.  Udev;uuid和卷标時這個裝置名有可能在下次重新開機計算機的時候變化,是以最好使用udev。

5.   iscsi的挂載

l  1. netfs服務解決了網絡服務啟動在iscsi服務之前,但iscsi在系統啟動後也能正常工作的問題。因為netfs在iscsi之後啟動,重新挂載網絡的挂載服務。

l  2. 寫入寫入/etc/fstab中

eg:

[root@station9 ~]# vim /etc/fstab

/dev/VolGroup00/LogVol00  /                      ext3    defaults                     1 1

LABEL=/boot                            /boot               ext3    defaults                     1 2

tmpfs                                        /dev/shm         tmpfs   defaults                    0 0

devpts                                      /dev/pts            devpts  gid=5,mode=620   0 0

sysfs                                         /sys                     sysfs   defaults                      0 0

proc                                          /proc                   proc    defaults                    0 0

LABEL=SWAP-sda2                swap                    swap    defaults                   0 0

/dev/sdb1                              /data                     ext3    defaults,_netdev     0 0

#_netdev選型表示挂載網絡裝置,當有網絡時會重新挂載該裝置,保證當netfs服務未啟動時也能挂載。

6.   iscsi target的命名

 6.1.   iscsi名稱要求是完整辨別IQN(iscsi qualified name)

 6.2.   在全局上要求唯一

 6.3 .  IQN格式:iqn.&lt;data_code&gt;.&lt;reversed_domain&gt;.&lt;string&gt;[:&lt;substring&gt;]

   6.3.1  要求類型iqn

   6.3.2  data code:yyyy-mm

   6.3.3  反轉dns域名:sales.example.com的IQN應該是:com.example.sales

   6.3.4  自定義的唯一的磁盤名,建議通過":string"方式對分組

  eg:

iqn.2011-09.com.example.sales:sata.rack2.disk

二、iscsi target配置(伺服器端)

1.   啟動tgtd服務

[root@station9 ~]#tgtd start

[root@station9 ~]#chkconf tgtd on

#啟動tgtd服務,在做下面的操作之前一定要啟動tgtd服務,否則會因為連接配接不上報錯 

2.   建立target

[root@station9 ~]#tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2011-09:disk1

#建立id号為1的target,并命名為iqn.2011-09:disk1

3.  給target配置設定裝置

[root@station9 ~]#tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb1

#為id号為1的target配置設定裝置/dv/sdb1(也可為檔案),并為新裝置配置設定lun(邏輯單元号)。

4.綁定可通路target的IP

[root@station9 ~]#tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.32.0/24

#設定ACL通路權限,允許192.168.32.0/24網段可通路此target;允許所有可用-I ALL

#為保證系統生效,必須将以上指令寫入到開機腳本/etc/rc.d/rc.local中

5.  查詢target資訊

[root@station9 ~]# tgtadm --lld iscsi --mode target --op show

#查詢target,也可用tgt-admin -s

Target 1: iqn.2011-9:diskpub1

    System information:

        Driver: iscsi

        State: ready

    I_T nexus information:

    LUN information:

        LUN: 0                 

#lun 0預設為控制器,配置設定lun時隻能從1開始

            Type: controller

            SCSI ID: IET     00010000

            SCSI SN: beaf10

            Size: 0 MB

            Online: Yes

            Removable media: No

            Backing store type: rdwr

            Backing store path: None

        LUN: 1

            Type: disk

            SCSI ID: IET     00010001

            SCSI SN: beaf11

            Size: 5124 MB

            Backing store path: /dev/sdb1

    Account information:

    ACL information:

        192.168.32.0/24

三、    移除target

1.   取消iscsi initiator綁定

[root@station9 ~]#tgtadm --lld iscsi --mod target --op unbind --tid 1 --initiator-address 192.168.32.0/24 

2.   查詢要移除裝置的lun号

[root@station9 ~]# tgtadm --lld iscsi --mod target --op show

        LUN: 0

       #/dev/sdb1的lun号為1

3.   從target中移除裝置

[root@station9 ~]#tgtadm --lld iscsi --mod logicalunit --op delete --tid 1 –lun 1

#移除lun号為1的裝置/dev/sdb1

 #lun為1的/dev/sdb1裝置已經移除

4.    移除target

[root@station9 ~]# tgtadm --lld iscsi --mod target --op delete --tid 1

#移除id号為1的target,即名稱為iqn.2011-9:diskpub1裝置被移除

四、    iscsi initiator配置(用戶端)

全局配置檔案:/etc/iscsi/iscsid.conf

1.   發現指定IP的target裝置。

[root@station2 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.32.39:3260

192.168.32.39:3260,1 iqn.2011-9:diskpub1

# -p : iSCSI target 的IP,iSCSI預設使用的port 是3260

2.   連結(挂載)發現的target

[root@station2 ~]#iscsiadm -m node -T iqn.2011-9:diskpub1 -p 192.168.32.39:3260 -l

Logging in to [iface: default, target: iqn.2011-9:diskpub, portal: 192.168.32.39,3260]

Login to [iface: default, target: iqn.2011-9:diskpub, portal: 192.168.32.39,3260]: successful。

#-T : 指定target_iqn_name

-l: login,保證系統重新開機後,iscsi自動連結target裝置并生效。 

3.   查詢是否連結

[root@station2 ~]# fdisk -l

Disk /dev/vda: 42.9 GB, 42991616000 bytes

255 heads, 63 sectors/track, 5226 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/vda1   *           1          13      104391   83  Linux

/dev/vda2              14        5226    41873422+  8e  Linux LVM

Disk /dev/sda: 5124 MB, 5124317184 bytes

158 heads, 62 sectors/track, 1021 cylinders

Units = cylinders of 9796 * 512 = 5015552 bytes

Disk /dev/sda doesn't contain a valid partition table

#以上顯示/dev/sda裝置為iscsi連結裝置 

4.   Target端查詢是否連結

        I_T nexus: 1

            Initiator: iqn.1994-05.com.redhat:e3e44fad96d1

            Connection: 0

                IP Address: 192.168.32.32

#通過target端檢視iSCSI Initiator:192.168.32.32已經連接配接

五、    登出或移除iscsi initiator設定

1.   臨時登出

[root@station2 ~]# iscsiadm -m node -T iqn.2011-9:diskpub1 -p 192.168.32.39:3260 -u

Logging out of session [sid: 1, target: iqn.2011-9:diskpub1, portal: 192.168.32.39,3260]

Logout of [sid: 1, target: iqn.2011-9:diskpub1, portal: 192.168.32.39,3260]: successful

#-u: (logout) 臨時登出,重新iscsi服務後連結又會生效,

#顯示/dev/sda裝置删除了 

[root@station2 ~]# service iscsi restart

Stopping iSCSI daemon:

iscsid 已死,但 pid 檔案仍存                               [确定]

Starting iSCSI daemon:                                     [确定]

                                                           [确定]

設定 iSCSI 目标:Logging in to [iface: default, target: iqn.2011-9:diskpub1, portal: 192.168.32.39,3260]

Login to [iface: default, target: iqn.2011-9:diskpub1, portal: 192.168.32.39,3260]: successful

                                                          [确定]

#以上顯示target裝置有重新連結了 

#找到target裝置/dev/sda 

2.   永久移除

[root@station2 ~]# iscsiadm -m node -T iqn.2011-9:diskpub1 -p 192.168.32.39:3260 -o delete

-o delete : 可以永久移除掉Target的連結,需重新啟動iSCSI生效.

六、    iscsi chap身份驗證

iscsi除了指定IP做ACL,還可以透過user/password (CHAP-Challenge Handshake Authentication Protocol(使用MD5的加密驗證) )來做身分驗證。

1.   iscsi CHAP驗證種類

 1.1 單向CHAP驗證:在此安全性等級,隻有目标Target會做驗證

 1.2 互相( Mutual ) CHAP驗證:在此安全性等級,目标Target與啟動器Initiator皆會被彼此做驗證.

 1.3 Reverse CHAP驗證:一般的CHAP使用one-way hash,密碼檔無法回朔,但是使用Reverse CHAP是可以的 

2.   iscsi單向CHAP驗證

預設iSCSI 采用了單向CHAP(Challenge Handshake Authentication Protocol) 的身分驗證方式,基本上是一種以MD5 的加密驗證方式.方式如下:

 2.1. 在雙方(Target/Initiator) 建立連線後,Target 送出"challenge" 的訊息告知Initiator 要做身分驗證.

 2.2. Initiator 會将使用者密碼(md5碼加密)給Target 端.

 2.3. Target端将密碼和Initiator發送的密碼做比對,如果比對正确,這身份驗證即成立,否則中斷此次連結做.

 2.4. 在正常連線過程中會不時重複做1~3 的CHAP 身分驗證.

3.   iscsi單向CHAP配置

3.1. target端配置

 3.1.1 建立target并為其配置設定裝置

[root@station9 ~]# tgtadm --lld iscsi --mod target --op new --tid=1 -T iqn.2011-09.com.example.station9:disk1

[root@station9 ~]# tgtadm --lld iscsi --mod logicalunit --op new --tid 1 --lun 1 -b /dev/sdb1

[root@station9 ~]# tgtadm --lld iscsi --mod target --op bind --tid 1 -I ALL

l 3.1.2 建立CHAP驗證帳号(與系統帳号無關)

[root@station9 ~]# tgtadm --lld iscsi --mode account --op new --user redhat --password redhat123

 #建立帳号redhat密碼為redhat123,password 和username 的最大限制是256 字元

[root@station9 ~]# tgtadm --lld iscsi --mode account --op bind --tid 1 --user redhat

 #将帳号redhat綁定到tid為1的target

Target 1: iqn.2011-09.com.example.station9:disk1

        redhat

        ALL

3.2. initiator端配置

  3.2.1修改iscsi配置檔案,添加CHAP驗證帳号

[root@station2 ~]# vim /etc/iscsi/iscsid.conf

node.session.timeo.replacement_timeout = 20   #預設延遲時間120太長,

node.session.auth.authmethod = CHAP           #開啟CHAP驗證

node.session.auth.username = redhat           #CHAP帳号,與target中一樣

node.session.auth.password = redhat123

 3.2.2 連結target

192.168.32.39:3260,1 iqn.2011-09.com.example.station9:disk1

[root@station2 ~]# iscsiadm -m node -T iqn.2011-09.com.example.station9:disk1 -p  192.168.32.39:3260 -l

Logging in to [iface: default, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]

Login to [iface: default, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]: successful 

4.   互相(Mutual)HAP incoming / outgoing驗證

互相( Mutual ) CHAP驗證: CHAP的認證端可為Target(Incoming Authentication)或是Initiator(Outgoing Authentication)任一端來認證.也就是說Target(Incoming Authentication)是由Target端為Initiator認證.這樣的認證方式可以允許多個Initiator來連接配接到Target.而Initiator(Outgoing Authentication)是由Initiator來認證Target端。

剛剛已經設定過Incoming 的認證方式,現在要透過"tgtadm" 來建立Outgoing 的認證

4.1. target端建立outgong帳号

[root@station9 ~]# tgtadm --lld iscsi --op new --mode account --user out_redhat --password out_redhat123

[root@station9 ~]# tgtadm --lld iscsi --mode account --op bind --tid 1 --user out_redhat –outgoing

        I_T nexus: 5

        out_redhat (outgoing)

4.2. initiator配置

node.session.timeo.replacement_timeout = 20  

node.session.auth.authmethod = CHAP          

node.session.auth.username = redhat          

node.session.auth.username_in = out_redhat   

#initiator端驗證帳号,和target裝置的outgoing帳号一樣

node.session.auth.password_in = out_redhat123 

七、    initiator配合udev自動挂載iscsi

1.   建立iscsi裝置資訊擷取腳本

[root@station2 scripts]# vim /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_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##*.}"

2.   建立udev政策檔案

[root@station2 scripts]# vim /etc/udev/rules.d/99-iscsi.rules

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

#為iscsi裝置生成軟連接配接/dev/Myiscsi%n

3.   測試檢視

[root@station2 scripts]# iscsiadm -m node -T iqn.2011-09.com.example.station9:disk1 -p 192.168.32.39:3260 -u

Logging out of session [sid: 1, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]

Logout of [sid: 1, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]: successful

#取消iscsi target裝置挂載

[root@station2 scripts]# service iscsi restart

設定 iSCSI 目标:Logging in to [iface: default, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]

Login to [iface: default, target: iqn.2011-09.com.example.station9:disk1, portal: 192.168.32.39,3260]: successful

#重新開機iscsi服務,重新挂載iscsi target裝置

[root@station2 scripts]# ll /dev/Myiscsi

lrwxrwxrwx 1 root root 3 09-22 22:06 /dev/Myiscsi -&gt; sda

#udev政策配置生效

本文轉自netsword 51CTO部落格,原文連結:http://blog.51cto.com/netsword/671371

繼續閱讀