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 �CTh

重启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


你可能感兴趣的:(iSCSI)