centos iscsi管理

[客戶端機器iscsi-initiator]

yum -y install iscsi-initiator-utils #安裝iscsi initiator客戶端程序,如果用centos系統自帶安裝,可以省去此步

service iscsi start               #開啓iscsi服務

==掃描ISCSI服務器==

[root@centos ~]# iscsiadm -m discovery --type sendtargets --portal 192.168.2.8

反饋結果:192.168.2.8:3260,1 iqn.2011-03.example.org.istgt:abc 

                          #紅色字體爲iscsi initiator名稱,登記過程中會用到

==登記ISCSI客戶端==

[root@centos iscsi]# iscsiadm -m node -T iqn.2011-03.example.org.istgt:abc -p 192.168.2.8 --login

                          #紅色字體輸入上一步中掃描到的名稱

反饋結果:Login session [iface: default, target: iqn.2011-03.example.org.istgt:abc, portal: 192.168.2.8,3260]

設置開機自動登記iscsi客戶端:

修改/etc/iscsi/iscsid.conf文件,將:

#node.startup = automatic 一行前面的#去掉改成

node.startup = automatic

 

==註銷==

[root@centos iscsi]# iscsiadm -m node -T iqn.2011-03.example.org.istgt:abc -p 192.168.2.8 --logout

察看分區

fdisk -l

設置自動掛載ISCSI分區:

方法一:

用編輯器打開/etc/fstab 例如:gedit /etc/fstab ,並在最後一行加入下列命令

/dev/sdb1        /mnt/soft      ext2       defaults        0              0       //如果是FAT分區,則將ext2改爲vfat。(這個選項很重要,如果沒有則無法成功自動掛載)

使用fdisk /dev/sdb命令爲sdb建立一個分區sdb1,並格式化:

mkfs.ext3 /dev/sdb1

設定加載點

[root@centos ~]# mdir /mnt/soft

[root@centos ~]# mount /dev/sdb1 /mnt/soft

用df查看文件系統是否已掛載成功

[root@centos ~]# df –Th

重啓iscsi服務

service iscsi restart

 

 

1、前言

        本文基於主要驗證軟件iSCSI實現機制,在linux操作系統上進行SCSI目標端(target,也

可以稱之爲服務端)和發起端(Initiator,也可以稱之爲客戶端)的安裝配置,測試iSCSI的通

訊過程,爲在實際的應用中將專用存儲設備配置規劃爲基於iSCSI架構的存儲網絡奠定基礎。


2、iSCSI簡介

      iSCSI可以簡單認爲“基於IP之上的SCSI通訊”,是一種在Internet 協議網絡上,特別是

在以太網上進行數據塊傳輸的標準,提供了可以在IP 協議上層傳輸SCSI指令和數據的表示規則,

其基本上是一個表示層協議。SCSI命令和響應在兩個具有iSCSI功能的設備之間發送,設備可以

是多用途的計算機或者特定用途的存儲設備。簡單地說,iSCSI 可以實現在IP網絡上傳遞和運行

SCSI 協議,使其能夠在諸如高速千兆以太網上進行數據存取,實現了數據的網際傳遞和管理,

基於iSCSI建立的存儲區域網(SAN)與基於光纖的FC-SAN相比,具有很好的性價比。由於IP

網絡的廣泛應用,iSCSI能夠在LAN、WAN甚至internet上進行數據傳送,打破了數據存儲的地域

限制。iSCSI繼承了SCSI協議,因此涉及的端點名稱相同,實質上,iSCSI只是定義瞭如何基於IP

網絡實現對SCSI命令和數據的傳遞機制,不是SCSI的升級或者改造。


在SCSI協議中包括兩類端點:

 >1 Initiator  -- 發起器或客戶端

 >2 Target     -- 目標器或服務端

SCSI-3 模型如下圖:


       發起器(Initiator)是一個在SCSI總線上觸發任務的設備,目標器是執行該任務的設備。計算

機的主機適配器(Adapter)是一個典型的發起器,磁盤驅動器則是一個典型的目標器。在SCSI規

範中沒有明確說明在SCSI配置中可以有多少個發起器和目標器,只是說明了它們的總的數目,這個

數目隨SCSI規範的版本不同而不同。一個最小的配置至少需要一個發起器和一個目標器。在本文中,

將把發起器稱爲客戶端,將目標器稱爲服務端以方便理解。在iSCSI連接中,服務端(target)在網

絡上宣佈其存在,客戶端(initiator)綁定到一個服務端。

      iSCSI 服務端和客戶端的通訊就是一個在網絡上封包和解包的過程,在網絡的一端,數據包被封

裝成包括TCP/IP 頭、iSCSI 識別包和SCSI 數據三部分內容,傳輸到網絡另一端時,這三部分內容分

別被順序地解開。爲了保證安全,iSCSI 有約定操作順序。在首次運行時,客戶端(initiator)設備需

要登錄到服務端(target)中。任何一個接收到沒有執行登錄過程的客戶端的iSCSI PDU (iSCSI 

Protocol Data Units,iSCSI 協議數據單元)服務端都將生成一個協議錯誤,並且關閉連接。在關閉

會話之前,服務端可能發送回一個被駁回的iSCSI PDU。

       在工作時,iSCSI使SCSI數據塊由原來的SCSI總線連接擴展到internet上,這一過程有些產品通過

硬件來實現,這種硬件產品被簡稱爲TOE(TCP Offload Engine),隨着近年來服務器芯片技術的不斷

發展,服務器處理能力日益強勁,目前更爲普遍的是通過軟件來實現SCSI數據塊的封裝過程。這種軟件

通常被稱爲iSCSI Initiator軟件。軟件方式的iSCSI客戶端,通過普通以太網卡來進行網絡連接,iSCSI協議

的封裝和處理通過運行軟件實現,但是需要佔用CPU資源。


下圖是一個簡單的基於iSCSI架構示意:



iSCSI屬於端到端的會話層協議,它定義的是SCSI到TCP/IP的映射,即Initiator將SCSI指令和數據封

裝成iSCSI協議數據單元,向下提交給TCP層,最後封裝成IP數據包在IP網絡上傳輸,到達Target後通

過解封裝還原成SCSI指令和數據,再由存儲控制器發送到指定的驅動器,從而實現SCSI命令和數據在

IP網絡上的透明傳輸。它整合了現有的存儲協議SCSI和網絡協議TCP/IP,實現了存儲與TCP/IP網絡的

無縫融合。



3、iSCSI設備連接方式


根據主機端HBA卡、網絡交換機的不同,iSCSI設備與主機之間有三種連接方式,分別爲:

  • 以太網卡+initiator軟件方式

  • 硬件TOE網卡+initiator軟件方式

  • iSCSI HBA卡連接方式。

        第一種連接方式的服務器、工作站等主機使用標準的以太網卡,通過以太網線直接與以太網交換機連接,


iSCSI存儲也通過以太網線連接到以太網交換機上,或直接連接到主機的以太網卡上。在主機上安裝Initiator

軟件。安裝Initiator軟件後,Initiator軟件可以將以太網卡虛擬爲iSCSI卡,接受和發送iSCSI數據報文,

從而實現主機和iSCSI設備之間的iSCSI協議和TCP/IP協議傳輸功能。其他兩種方式與第一種方式的差別主要是

採用了專業的硬件設備,即TOE網卡和iSCSI HBA卡,將協議轉換工作交由專業設備來完成,減輕主機CPU的

負擔,提高系統執行效率。

本文所做的實驗,採用第一種連接方式。在《iSCSI 在Linux下的模擬實驗(二)》將說明相關軟件的

安裝配置過程。

4、iSCSI服務端配置

      本節主要說明在Linux環境下如何配置客戶端,以使用基於iSCSI的存儲設備,

由於手頭沒有專用的iSCSI存儲設備,採用在另一臺Linux機器上通過安裝部署iSCSI

服務端(target)軟件模擬一臺支持iSCSI協議的存儲設備,客戶端通過訪問這臺

設備來體驗iSCSI。

      本文使用的Linux爲Centos5.7,服務端管理軟件採用Linux SCSI target framework (tgt),

Linux SCSI target framework (tgt)旨在簡化不同的SCSI target驅動(iSCSI、光線通道、

SRP等)的建立和維護。其主要目標是無縫地集成到SCSI中間層,並且在用戶空間實現tgt

的大部分內容。tgt由內核空間(kernel-space)和用戶空間(user-space)代碼組成,如果

只關注iSCSI,則不涉及內核空間代碼,只是有用戶空間代碼。

tgt軟件的具體介紹請參加http://stgt.sourceforge.net/。


 1)安裝服務端tgt軟件

       在Linux下(至少是Red Hat系列下),tgt軟件名稱爲scsi-target-utils,安裝
    比較簡單,執行 yum scsi-target-utils即可,當然需要配置好yum所需的參數。
    安裝完成後,執行rpm -qi scsi-target-utils,查看對此包的說明,結果如下:

    

    安裝後的文件包括(通過命令rpm -ql scsi-target-utils查看):

       /etc/rc.d/init.d/tgtd              --tgt管理服務守護進程
       /etc/sysconfig/tgtd
       /etc/tgt/targets.conf              --tgt配置文件
       /usr/sbin/tgt-admin                --Linux SCSI Target 配置工具
       /usr/sbin/tgt-setup-lun            --Linux SCSI Target 建立Target工具
                                            是tgtadm管理工具的子集,主要完成
                                            Target創建,增加設備到Target已經
                                            控制哪些客戶端可以訪問Target
       /usr/sbin/tgtadm                   --Linux SCSI Target 管理工具
       /usr/sbin/tgtd                     --Linux SCSI Target 主程序
       /usr/sbin/tgtimg                   --Linux SCSI Target 映像文件管理工具
       /usr/share/doc/scsi-target-utils-1.0.14
       /usr/share/doc/scsi-target-utils-1.0.14/README
       /usr/share/doc/scsi-target-utils-1.0.14/README.iscsi   --比較好的配置說明文件
       /usr/share/doc/scsi-target-utils-1.0.14/README.iser
       /usr/share/doc/scsi-target-utils-1.0.14/README.lu_configuration
       /usr/share/doc/scsi-target-utils-1.0.14/README.mmc
       /usr/share/man/man8/tgt-admin.8.gz
       /usr/share/man/man8/tgt-setup-lun.8.gz
       /usr/share/man/man8/tgtadm.8.gz


 2)配置tgt
      

         在安裝完tgt軟件後,需要進行配置,主要包括建立target,爲target添加lun,設置

訪問target的控制策略等。

     在SCSI協議中,目標器(target)是基本的訪問單元,一個服務器或專業存儲設備可以

提供 一個或多個目標器(target),目標器target內可以包括多個LUN,LUN的概念比較複雜,

在SCSI規範中,LUN代表物理外圍設備和執行SCSI命令所需的邏輯電路,在這裏可以將其理解

爲基本的存儲單元,即從存儲設備中分配的具有明確大小的存儲,劃分LUN 一般由存儲設備提供

的管理程序完成,LUN與存儲採用的RAID級別無關。

      建立target包括兩種方法,基於命令方式和基於配置文件方式,其中配置文件爲/etc/tgt/targets.conf。
首先說明基於命令的方式,這裏採用的命令爲tgtadm。tgtadm用來監控和修改Linux SCSI 目標器軟件的
相關參數和對象,如targets、volumes等。tgtadm的詳細說明請參加《tgtadm 命令參考》。
      
     【一】命令方式配置Target的流程及相關命令如下:
      
      <1> 建立一個target
           tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2012-01.cn.nayun:test-01
           
           建立target需要提供target ID和名稱,在一個網絡內,target名稱必須是唯一的,主要採用

           iqn-type格式和eui-type 格式表示,在Linux中主要用iqn-type格式,iqn是Internet限定名

         (Internet Qualified Name)的簡稱。iSCSI target命名採用“iqn.yyyy-mm.<反向的域名>:標識名”

          的形式,在上例中,所建立的target名稱爲iqn.2012-01.cn.nayun:test-01,其中cn.nayun爲

          nayun.cn的反向,採用域名反向的方法主要是爲了防止重名。

      <2> 查看所建立的target信息

          tgtadm --lld iscsi --op show --mode target
          
          命令執行完成後,顯示如下信息:
          Target 1: iqn.2012-01.cn.nayun:test-01
          System information:
              Driver: iscsi
              State: ready
          I_T nexus information:
          LUN information:
              LUN: 0
                  Type: controller
                  SCSI ID: IET     00010000
                  SCSI SN: beaf10
                  Size: 0 MB, Block size: 1
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: null
                  Backing store path: None
                  Backing store flags: 
          Account information:
          ACL information:

          在建立一個target後,其默認將建立LUN編號爲0的控制器,這個LUN不能被刪除。

          I_T nexus information 顯示Initiator與此Target的連接關係,只有在連接時才能

          顯示相關信息,本例中因爲沒有連接,所有沒有信息顯示。LUN information顯示

          此Target所包含的各個LUN的相關屬性。 Account information顯示此Target綁定

          的帳號信息,ACL information則顯示此Target的訪問控制策略。

       <3> 向Target中添加LUN

          tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb   
          
          將本機的第二塊硬盤作爲一個LUN添加到建立的Target中,此命令完成後,再執行

          tgtadm --lld iscsi --op show --mode target
          在顯示出Target信息中,增加了新加入的LUN1的信息,具體如下:
          
          Target 1: iqn.2012-01.cn.nayun:test-01
          System information:
              Driver: iscsi
              State: ready
          I_T nexus information:
          LUN information:
              LUN: 0
                  Type: controller
                  SCSI ID: IET     00010000
                  SCSI SN: beaf10
                  Size: 0 MB, Block size: 1
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: null
                  Backing store path: None
                  Backing store flags: 
              LUN: 1
                  Type: disk
                  SCSI ID: IET     00010001
                  SCSI SN: beaf11
                  Size: 537 MB, Block size: 512
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: rdwr
                  Backing store path: /dev/sdb
                  Backing store flags: 

          Account information:
          ACL information:

      <4> 設置target的訪問控制策略
          
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL  --網內所有Initiator均可訪問
            tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.210      --允許某個IP地址訪問
            tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.1.0/24     --允許某個網絡訪問 

          
          添加上述一個訪問控制後,再查看一下target信息,

          tgtadm --lld iscsi --op show --mode target
          

          Target 1: iqn.2012-01.cn.nayun:test-01
          System information:
              Driver: iscsi
              State: ready
          I_T nexus information:
          LUN information:
              LUN: 0
                  Type: controller
                  SCSI ID: IET     00010000
                  SCSI SN: beaf10
                  Size: 0 MB, Block size: 1
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: null
                  Backing store path: None
                  Backing store flags: 
              LUN: 1
                  Type: disk
                  SCSI ID: IET     00010001
                  SCSI SN: beaf11
                  Size: 537 MB, Block size: 512
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: rdwr
                  Backing store path: /dev/sdb
                  Backing store flags: 
          Account information:
          ACL information:
              192.168.1.0/24
              192.168.1.210

          可以看到,在ACL information部分列出了可訪問此Target的Initiator列表。
              
      <5> 訪問帳號操作
          建立新帳號
          tgtadm --lld iscsi --op new --mode account --user scott --password tiger
          顯示帳號信息
          tgtadm --lld iscsi --op show --mode account
          將一個帳號與一個Target綁定(bind)
          tgtadm --lld iscsi --op bind --mode account --tid 1 --user scott
          
          將帳號與Target綁定後再查看Target信息:
          Target 1: iqn.2012-01.cn.nayun:test-01
          System information:
              Driver: iscsi
              State: ready
          I_T nexus information:
          LUN information:
              LUN: 0
                  Type: controller
                  SCSI ID: IET     00010000
                  SCSI SN: beaf10
                  Size: 0 MB, Block size: 1
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: null
                  Backing store path: None
                  Backing store flags: 
              LUN: 1
                  Type: disk
                  SCSI ID: IET     00010001
                  SCSI SN: beaf11
                  Size: 537 MB, Block size: 512
                  Online: Yes
                  Removable media: No
                  Readonly: No
                  Backing store type: rdwr
                  Backing store path: /dev/sdb
                  Backing store flags: 
          Account information:
              scott
          ACL information:
              192.168.1.0/24
              192.168.1.210


          可以看到在Account information下顯示出本Target綁定的帳號。
          
          上述配置完成後,則SCSI Initiator即可訪問和連接所定義的Target。
    
     【二】通過配置文件的方式配置Target
     
          通過tgtadm命令建立的target相關配置,在關閉機器後將不保存,通過配置文件的
          方式則可以保存Target相關信息,在系統重啓時,tgtd守護進程從配置文件中提取
          配置信息,根據配置信息建立相應的Target。
          Linux SCSI target framework (tgt)使用的配置文件爲/etc/tgt/targets.conf,
          此配置文件採用XML格式保存Target配置信息,將上述通過tgtadm命令建立的Target
          在配置文件中的表示形式如下:
          
          <target iqn.2012-01.cn.nayun:test-01>
                backing-store /dev/sdb
                incominguser scott tiger
                initiator-address 192.168.1.0/24
                initiator-address 192.168.1.210
         </target>


         每一個Target的定義在<target></target>對中進行說明,具體屬性包括:
         backing-store :Target包含的LUN對應的存儲設備、分區或邏輯卷。
         incominguser  :定義iSCSI接入認證設置,包括用戶名和密碼
         initiator-address:允許連接Target的客戶端(Initiator)主機或網絡地址。
         
         配置完成後,重新啓動tgtd服務,系統將自動根據配置文件中的設置,建立對應
         的Target。可通過tgtadm --lld iscsi --mode target --op show進行查看。查看
         某個具體Target的信息,使用tgtadm --lld iscsi --mode target --op show --tid n
         命令,其中的n是指對應的Target ID號。
         
         至此,Target設置完成,可以提供服務了。關於配置文件具體內容將在另一篇文章
         中進行說明,這裏不再贅述。
 3)Linux SCSI target framework (tgt) 的管理命令
        
      tgt主要通過以下幾個命令進行Target的管理:
      <1> tgtadm
          tgtadm用來監控和修改關於Linux SCSI target software的任何內容,包括targets, volumes等。
         
      <2> tgt-admin
          tgt-admin是一個對Target和luns進行持久化配置的工具。它使用tgtadm命令進行Target
          創建、刪除和顯示等操作。
      <3> tgt-setup-lun
          建立Target,增加設備到Target中,定義可以連接到此Target的客戶端(Initiator)。這個
          工具就是一個腳本,主要的操作也是通過tgtadm完成

5、iSCSI客戶端(Initiator)配置

      
   在Linux 2.6內核中提供了iscsi驅動,iSCSI 驅動(driver)使主機擁有了通過IP網絡訪問存儲
   的能力,驅動在主機(Initiator)和服務端(Target)間使用iSCSI協議在TCP/IP網上傳輸SCSI
   請求和響應,在構建上,iSCSI驅動與TCP/IP棧、網絡驅動和網絡接口卡(NIC)結合,其等同於
   SCSI或光纖通道卡適配器驅動對主機總線卡(HBA)的作用。驅動採用採用模塊的方式,具體模塊
   包括iscsi_tcp, libiscsi, libiscsi_tcp。
   
   在具體使用時,Linux用戶空間組件初始化iSCSI驅動,具體的文檔和例子可在http://open-iscsi.org
   網站上獲取。本文即採用open-iscsi提供的iscsi-initiator-utils工具作爲iSCSI用戶空間組件,此軟
   件作爲iSCSI連接的發起端,實現主機與存儲基於iSCSI協議的訪問。
   
   下面具體說明initiator的安裝和使用。
   
   1)Initiator安裝
      iscsi-initiator-utils已經打包在各個Linux distribution中,可以在安裝操作系統是選擇安裝或者
      操作系統安裝完成後,進入到安裝介質目錄,執行rpm -ivh iscsi-initiator-utils進行安裝。如果
      配置好yum repository,則執行yum install iscsi-initiator-utils進行安裝。
      
      安裝完成後他,通過rpm -qi iscsi-initiator-utils查看軟件的介紹:
      Name        : iscsi-initiator-utils        Relocations: (not relocatable)
      Version     : 6.2.0.872                         Vendor: CentOS
      Release     : 10.el5                        Build Date: Fri 22 Jul 2011 01:19:09 PM CST
      Size        : 2589266                          License: GPL
      Signature   : DSA/SHA1, Sat 13 Aug 2011 05:24:56 AM CST, Key ID a8a447dce8562897
      URL         : http://www.open-iscsi.org
      Summary     : iSCSI daemon and utility programs
      Description :
      The iscsi package provides the server daemon for the iSCSI protocol,
      as well as the utility programs used to manage it. iSCSI is a protocol
      for distributed disk access using SCSI commands sent over Internet
      Protocol networks.
      
      安裝的文件包括:
      /etc/iscsi
      /etc/iscsi/iscsid.conf       --initiator配置文件
      /etc/rc.d/init.d/iscsi       
      /etc/rc.d/init.d/iscsid
      /sbin/brcm_iscsiuio
      /sbin/iscsi-iname
      /sbin/iscsiadm               --initiator管理工具
      /sbin/iscsid
      /sbin/iscsistart
      /usr/include/fw_context.h
      /usr/include/iscsi_list.h
      /usr/include/libiscsi.h
      /usr/lib/libfwparam.a
      /usr/lib/libiscsi.so
      /usr/lib/libiscsi.so.0
      /usr/lib/python2.4/site-packages/libiscsimodule.so
      /usr/share/doc/iscsi-initiator-utils-6.2.0.872
      /usr/share/doc/iscsi-initiator-utils-6.2.0.872/README
      /usr/share/man/man8/brcm_iscsiuio.8.gz
      /usr/share/man/man8/iscsi-iname.8.gz
      /usr/share/man/man8/iscsiadm.8.gz
      /usr/share/man/man8/iscsid.8.gz
      /usr/share/man/man8/iscsistart.8.gz
      /var/lib/iscsi
      /var/lib/iscsi/ifaces
      /var/lib/iscsi/isns
      /var/lib/iscsi/nodes
      /var/lib/iscsi/send_targets
      /var/lib/iscsi/slp
      /var/lib/iscsi/static
      /var/lock/iscsi


   2)Initiator守護進程
      open-iscsi包括兩個守護進程iscsid和iscsi,其中iscsid是主進程,iscsi進程則主要負責
      根據配置,在系統啓動時進行發起端(Initiator)到服務端(target)的登錄,建立發起端
      與服務端的會話,使主機在啓動後即可使用通過iSCSI提供服務的存儲設備。
      
      iscsid進程實現iSCSI協議的控制路徑以及相關管理功能。例如守護進程(指iscsid)可配置
      爲在系統啓動時基於持久化的iSCSI數據庫內容,自動重新開始發現(discovery)目標設備。
      
   3)Initiator配置     
      
      1> iSCSI initiator 名稱設置
         initiator名稱用來唯一標識一個iSCSI Initiator端。保存此名稱的配置文件爲
         /etc/iscsi/initiatorname.iscsi,命名規則可採用iqn-type格式,利用
         iscsi-iname命令可產出一個名稱,將此名稱輸入到initiatorname.iscsi配置
         文件即可。
      2> iSCSI Initiator配置
         iSCSI Initiator的配置文件爲/etc/iscsi/iscsid.conf,在iSCSI initiator 
         的scsid進程啓動和執行iscsiadm命令時,將讀取這個配置文件的內容,獲取
         與SCSI目標進行交互的相關信息,主要的配置內容包括:
         
         CHAP Settings 組
           本組下的各個設置項主要用來指定Initiator與target驗證方式及相關信息
         
         設置節點會話的驗證模式
         node.session.auth.authmethod = CHAP
         CHAP(Challenge Handshake Authentication Protocol ),默認爲不驗證(none)
         
         設置會話target驗證initiator的CHAP用戶名及對應的密碼
         node.session.auth.username = scott
         node.session.auth.password = tiger
         
         設置會話initiator驗證target的用戶名及其對應的密碼
         #node.session.auth.username_in = username_in
         #node.session.auth.password_in = password_in
         
         設置initiator發現target的驗證模式,默認爲不驗證(none)
         discovery.sendtargets.auth.authmethod = CHAP
         
         設置發現會話(discovery session)target驗證initiator的CHAP用戶名及對應的密碼
         discovery.sendtargets.auth.username = scott
         discovery.sendtargets.auth.password = tiger


         設置發現會話(discovery session)initiator驗證target的CHAP用戶名及對應的密碼
         #discovery.sendtargets.auth.username_in = username_in
         #discovery.sendtargets.auth.password_in = password_in


         通過上述配置項,可以看到iSCSI的主要驗證方式是CHAP,並且驗證是雙方向的,在本例
         中,因爲在目標端設置的驗證帳號,所以只設定了target驗證initiator所需要的用戶名
         和密碼。


         超時(Timeouts)設置組:
            本組設置initiator與target端交互的時間限制。
         
         重試(retry)設置組:
            本組設置iscsid重試登錄節點的次數。
            
         會話和設備排隊深度(session and device queue depth)設置組:
            設置session排隊命令的數量,設置設備隊列深度
         
         iSCSI設置(iSCSI settings)組:
            啓用或禁止R2T(Ready to Transmit)流控,啓用後,initiator在發送任何數據前必
            須等待 一個R2T命令,默認爲禁止(no)。
            node.session.iscsi.InitialR2T = Yes|no
             
            啓用或禁止立即數據(immediate data ),禁止後,initiator不隨着SCSI 命令PDU發
            送未請求的數據。默認爲啓用(Yes)
            node.session.iscsi.ImmediateData = Yes|No         
          
   3)initiator相關命令介紹
      open-iscsi initiator-utils提供的管理命令爲iscsiadm
      此命令包括discovery、node、session幾種模式,分別處理不同的情況。在服務器能夠使用
      Target提供的存儲空間前,必須在服務器上通過Initiator軟件執行以下步驟:
      發現目標設備-->登錄目標設備-->與目標設備建立會話,下面分別說明通過各個命令進行說明。
      
      (1)發現目標設備(Target),使用iscsiadm discovery模式,命令格式如下:
            iscsiadm -m discovery [ -P printlevel ] 
                                  [ -t type -p ip:port [ -l ] ] | 
                                  [ [ -p ip:port ] [ -l | -D ] ]
            命令示例:
            iscsiadm -m discovery -t sendtargets -p 192.168.1.211:3260
            返回信息:192.168.1.211:3260,1 iqn.2012-01.cn.nayun:test-01
                      192.168.1.211:3260,1 iqn.2012-01.cn.nayun:test-02
            
            此命令查詢目標門戶(Portal)爲192.168.1.211:3260上的目標,查找成功後,返回相應
            的target ID,同時在 /var/lib/iscsi/send_targets 和 /var/lib/iscsi/nodes目錄下記
            錄相應的門戶和節點信息。/var/lib/iscsi目錄下的內容採用dbm數據庫方式存儲,所有版
            本的linux以及大多的unix都隨系統帶有一個基本的,但是卻很高效的數據存儲程序集合,
            被成爲dbm數據庫。適合於相對比較靜態的索引化數據。其實就是一個索引化的文件存儲系統。
            這些信息稱之爲initiator discoverydb,可以通過iscsiadm相關操作進行管理。
            使用iscsiadm -m node命令,可以查看到發現的節點記錄。 
            
            備註:iSCSI node是一個在網絡上可用的SCSI設備標識符,在open-iscsi中利用術語node表示
                  目標(target)上的門戶(portal)。一個target可以有多個portal,portal 由IP地址
                  和端口構成。 
            
        (2)在完成目標發現後,即可以登錄到相應的節點,使用目標設備提供的存儲空間。
            node相關命令如下:
            iscsiadm -m node [ -P printlevel ] [ [ -T  targetname -p ip:port  ] [ -l | -u | -R | -s] ] 
                             [ [ -o operation ]  [ -n name ] [ -v value ] [ -p ip:port ] ]
            命令示例:
            iscsiadm -m node -T iqn.2012-01.cn.nayun:test-01 -l 
            執行成功,返回如下信息: 
            Logging in to [iface: default, target: iqn.2012-01.cn.nayun:test-01, portal: 192.168.1.211,3260]
            Login to [iface: default, target: iqn.2012-01.cn.nayun:test-01, portal: 192.168.1.211,3260] successful.
            執行失敗,返回如下信息:
            iscsiadm: Could not login to [iface: default, target: iqn.2012-01.cn.nayun:test-02, portal: 192.168.1.211,3260].
            iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)
            iscsiadm: Could not log into all portals
            出現上述提示,需要檢查target與initiator的驗證配置是否對應。
            
            登錄成功後。在/sys/devices/platform目錄下將自動生成一個hostX目錄,其中X是一個編號,每次有可能不同,在
            此目錄下包含相關的session和connection信息。
            
            在服務端(target)可以查看登錄情況,使用如下命令:
            tgt-admin --show
            顯示如下信息:
            Target 1: iqn.2012-01.cn.nayun:test-01
            System information:
                Driver: iscsi
                State: ready
            I_T nexus information:
                I_T nexus: 1
                    Initiator: iqn.2012-01.cn.nayun:initiator-212
                    Connection: 0
                        IP Address: 192.168.1.212
            LUN information:
                LUN: 0
                    Type: controller
                    SCSI ID: IET     00010000
                    SCSI SN: beaf10
                    Size: 0 MB, Block size: 1
                    Online: Yes
                    Removable media: No
                    Readonly: No
                    Backing store type: null
                    Backing store path: None
                    Backing store flags: 
                LUN: 1
                    Type: disk
                    SCSI ID: IET     00010001
                    SCSI SN: beaf11
                    Size: 537 MB, Block size: 512
                    Online: Yes
                    Removable media: No
                    Readonly: No
                    Backing store type: rdwr
                    Backing store path: /dev/sdb
                    Backing store flags: 
            Account information:
            ACL information:
                192.168.1.0/24
                192.168.1.210


            在I_T nexus information部分顯示了連接信息。
         
         (3)登錄目標節點成功後,即建立了initiator與target之間的會話(session),同時target提供的存儲設備
              也掛載到主機中,在/dev目錄下生成一個新的設備文件類似於sdb、sdc等。查看session命令格式如下:
              iscsiadm -m session [ -P printlevel  [ -r sessionid | sysfsdir [ -R ] [ -u | -s ] ]    
              
              命令示例:  
              iscsiadm -m session -P 3
              返回如下信息:
              iSCSI Transport Class version 2.0-871
              version 2.0-872
              Target: iqn.2012-01.cn.nayun:test-01
              Current Portal: 192.168.1.211:3260,1
              Persistent Portal: 192.168.1.211:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.2012-01.cn.nayun:initiator-212
                Iface IPaddress: 192.168.1.212
                Iface HWaddress: <empty>
                Iface Netdev: <empty>
                SID: 10
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 8192
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                ************************
                Attached SCSI devices:
                ************************
                Host Number: 11 State: running
                scsi11 Channel 00 Id 0 Lun: 0
                scsi11 Channel 00 Id 0 Lun: 1
                        Attached scsi disk sdc          State: running


              備註:ISCSI會話用來標識到某個具體SCSI I_T連接的所有TCP連接。同一個會話裏可能有一個或多個連接。
              當initiator通過默認端口或指定端口與target建立連接時,登錄過程就開始了,initiator和target互相
              認證並建立安全協議。在登錄階段,ISCS Iinitiator和target會協商建立多種連接屬性。
              
          (4)使用target提供的存儲盤
              登錄到target後,即可使用fdisk等工具像使用本地磁盤一樣對磁盤進行分區,並mount到相關目錄下進行
              文件的存取。
          (5)註銷登錄
              使用一下命令註銷登錄:      
              iscsiadm -m node -T iqn.2012-01.cn.nayun:test-01 -p 192.168.1.211 -u
              Logging out of session [sid: 1, target: iqn.2012-01.cn.nayun:test-01, portal: 192.168.1.211,3260]
              Logout of [sid: 1, target: iqn.2012-01.cn.nayun:test-01, portal: 192.168.1.211,3260] successful.


         (6)其他操作
              刪除一個目標(/var/lib/iscsi/nodes目錄下)
              iscsiadm -m node -o delete -name iqn.2012-01.cn.nayun:test-01
              刪除一個目標(/var/lib/iscsi/send_targets目錄下)
              iscsiadm --mode discovery -o delete -p 192.168.1.211:3260
              查看某個sendtargets portal記錄 
              iscsiadm -m discoverydb -p 192.168.1.211:3260 -t st -o show 
               # BEGIN RECORD 2.0-872
               discovery.startup = manual
               discovery.type = sendtargets
               discovery.sendtargets.address = 192.168.1.211
               discovery.sendtargets.port = 3260
               discovery.sendtargets.auth.authmethod = CHAP
               discovery.sendtargets.auth.username = scott
               discovery.sendtargets.auth.password = ********
               discovery.sendtargets.auth.username_in = <empty>
               discovery.sendtargets.auth.password_in = <empty>
               discovery.sendtargets.timeo.login_timeout = 15
               discovery.sendtargets.use_discoveryd = No
               discovery.sendtargets.discoveryd_poll_inval = 30
               discovery.sendtargets.reopen_max = 5
               discovery.sendtargets.timeo.auth_timeout = 45
               discovery.sendtargets.timeo.active_timeout = 30
               discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章