Target实现(IP SAN)

Posted xth0331

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Target实现(IP SAN)相关的知识,希望对你有一定的参考价值。

先说明下,不建议在生产环境使用,写这个只是为了理解ISCSI以及Multipath* I/O 的工作方式;这次测试的操作系统是CENTOS6 ;没别的了懒得装 就先用这个,7系列可能包的名字有些不同, 根据情况百度吧!

技术分享图片

iSCSI目标创建

iSCSI目标可以是网络中的专用物理设备,也可以是网络存储服务器上的iSCSI软件配置的逻辑设备。目标是SCSI总线通信的终点。由发起者访问的目标上的存储由LUN定义。

创建iSCSI目标

  1. 安装 scsi-target-utils.

    yum install scsi-target-utils
  2. 打开iptables3260端口

    iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT
    service iptables save
  3. 启动并启用target服务

    service tgtd start
    chkconfig tgtd on
  4. 为LUN分配存储空间。

    fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x43eb8efd.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): *Enter*
    Using default response p
    Partition number (1-4, default 1): *Enter*
    First sector (2048-2097151, default 2048): *Enter*
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +250M
    Partition 1 of type Linux and of size 250 MiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
  5. 编辑/etc/tgt/targets.conf创建目标容器

cat /etc/tgt/targets.conf
...
default-driver iscsi
<target iqn.2015-06.com.example.test:target1>
 backing-store /dev/sdb1
 initiator-address 192.168.10.1
</target>

创建一个backing-store sdb1,允许192.168.10.1启动target,

iqn命名规则:

? iqn.*YYYY*-*MM*.*reverse.domain.name*:*OptionalIdentifier*.

  1. 重启target服务.

    service tgtd restart
    Stopping SCSI target daemon:     [ OK ]
    Starting SCSI target daemon:     [ OK ]
  2. 查看配置.

    tgt-admin --show
    Target 1: iqn.2015.06.com.example.test: server
     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
             Prevent removal: 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: 2147 MB, Block size: 512
             Online: Yes
             Removable media: No
             Prevent removal: No
             Readonly: No
             Backing store type: rdwr
             Backing store path: /dev/sdb1
             Backing store flags:
     Account information:
     ACL information:
         10.10.1.1

创建 iSCSI Initiator

iSCSI启动器是希望访问目标或服务器上的存储的客户端。该过程需要知道目标的IP地址。

创建 iSCSI Initiator

  1. 安装 iscsi-initiator-utils.

    yum install iscsi-initiator-utils
  2. 发现 target.使用target端ip.

    iscsiadm -m discovery -t sendtargets -p 192.168.1.2
    Starting iscsid:     [ OK ]
    192.168.1.2:3260,1 iqn.2015-06.com.example.test:target1

    显示了target端的iqn,login时需要此项.

  3. 连接到 target.

    iscsiadm -m node -T iqn.2015-06.com.example:target1 --login
    Logging in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.2,3260] (multiple)
    Login in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.2,3260] successful.
  4. 显示ISCSI磁盘名称.

    grep "Attached SCSI" /var/log/messages
    Jun 19 01:30:26 test kernel: sd 7:0:0:1 [sdb] Attached SCSI disk
  5. 创建个lvm玩.

    pvcreate /dev/sdb && vgcreate test /dev/sdb && lvcreate -n newtest -l 100%FREE test
  6. 挂载.

    mkdir /mnt/iscsiTest
    mount /dev/mapper/test-newtest /mnt/iscsiTest
  7. Make it persistent across reboots by editing the /etc/fstab file.

    blkid /dev/mapper/test-newtest
    /dev/sdb: UUID="b01cd289-0f48-4e7c-bf4b-3b822f0a4332" TYPE="ext4"
    vim /etc/fstab
    UUID=b01cd289-0f48-4e7c-bf4b-3b822f0a4332    /mnt/iscsiTest  ext4    _netdev 0 0

命令手册

名称

iscsiadm - open-iscsi管理实用程序

概要

SYNOPSIS
       iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I
       iface -t type -p ip:port [ -l ] ] | [ -o operation ] [ -n name ]  [  -v
       value ]

       iscsiadm  -m  node  [  -hV  ] [ -d debug_level ] [ -P printlevel ] [ -L
       all,manual,automatic ] [ -U all,manual,automatic  ]  [  -S  ]  [  [  -T
       targetname  -p  ip:port  -I  iface  ]  [  -l  |  -u | -R | -s] ] [ [ -o
       operation ]  [ -n name ] [ -v value ] [ -p ip:port ] ]

       iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel ]  [  -r
       sessionid | sysfsdir [ -R ] [ -u | -s ] ]

       iscsiadm  -m  iface  [  -hV ] [ -d debug_level ] [ -P printlevel ] [ -I
       ifacename ] [ [ -o  operation  ] [ -n name ] [ -v value ] ]

       iscsiadm -m fw [-l]

       iscsiadm -m host [ -P printlevel ] [ -H hostno ]

       iscsiadm -k priority

描述

       iscsiadm实用程序是一个允许发现的命令行工具
       登录到iSCSI目标,以及访问和管理开放源码,
       iscsi数据库。

       Open-iscsi不使用iSCSI RFC定义的术语节点,
       节点是单个iSCSI启动器或目标。Open-iscsi使用
       术语节点指向目标上的门户。

       对于会话模式,使用会话ID(sid)。一个会话的sid可以
       通过运行iscsiadm -m session -P找到。会话ID和sysfs
       路径目前不持续,部分由时间决定
       会话设置。

       请注意,许多节点和发现操作都要求
       iSCSI守护进程(iscsid)正在运行。

OPTIONS

       -d,-- debug = debug_level
              打印调试信息。debug_level的有效值为0
              到8。

       -h,-- help
              显示帮助文本并退出

       -I, - 接口[iface]
              interface参数指定要用于的iSCSI接口
              操作。iSCSI接口(iface)定义在
              的/ etc /的iSCSI / ifaces。对于硬件iSCSI(qla4xxx),iface配置
              必须具有硬件地址(iface.hwaddress = port的MAC
              地址)和driver / transport_name(iface.transport_name)。
              iface的名字是iface配置的文件名。对于
              软件iSCSI,iface配置必须具有硬件
              地址(iface.hwaddress)或网络层的接口名称
              (iface.net_ifacename),它必须具有
              驱动器/ TRANSPORT_NAME

              可用的驱动程序/ iscsi_transports是tcp(软件iSCSI
              通过TCP / IP),iser(软件iSCSI over infinniband)或qla4xxx
              (Qlogic 4XXXX HBA)。hwaddress是MAC地址或for
              软件iSCSI可能是特殊值“默认”
              指示启动器不将会话绑定到特定的会话
              硬件资源,而是允许网络或infinniband
              层决定做什么。没有必要创建一个iface
              配置默认行为。如果不指定iface,
              那么使用默认行为。

              如上所述,有一个特殊的iface名称是默认的。那里
              是三个其他 -  cxgb3i,bnx2i和iser,它不绑定
              会话到一个特定的卡,但会绑定会话
              cxgb3i,bnx2i或iser传输。这些是实验和
              不支持使用稳定的界面。

              在发现模式下,多个接口可以通过传递
              在多个I /  - 接口实例中。例如,

              “iscsiadm -m discovery -t st -p mytarget -I iface0 -I iface2”

              将直接使用iscsiadm设置节点数据库以创建记录
              这将通过传入的两个内容创建会话。

              在节点模式下,每个呼叫中只支持单个接口
              到iscsiadm。

              此选项对发现,节点和iface模式有效。

       -k,-- killiscsid = [priority]
              当前优先级必须为零。这将立即停止
              iscsid操作和关闭iscsid。它不注销任何
              会话。运行此命令与执行“killall”相同
              iscsid“,通常不能使用,因为如果iscsid
              正在进行错误恢复,或者iscsid是否存在错误
              没有运行,系统可能无法恢复。这个
              命令和iscsid的SIGTERM处理是实验性的。

       -l,-- login
              对于节点和fw模式,登录到指定的记录。发现
              模式,登录到所有发现的目标。

              此选项仅对发现和节点模式有效。

       -L,-- loginall == [all | manual | automatic]
              对于节点模式,使用节点或连接启动登录所有会话
              值得传入或全部运行,除了标记
              onboot,如果全部被传入。

              此选项仅对节点模式有效(它是有效的但不是
              功能用于会话模式)。

       -m, -mode  op 
              指定模式。  op必须是发现,节点,fw,主机
              iface或会话之一。

              如果没有指定其他选项:对于发现和   节点,全部显示各自的记录; 
              为会议,所有显示活动会话和连接; 
              对于fw,所有启动显示固件值; 
              对于主机,所有iSCSI主机都是
              显示; 对于iface,所有的ifaces都设置在/ etc / iscsi / ifaces中
              被显示。

       -n,-- name = name   在记录中
              指定字段   名称。用于更新
              运营商。

       -o,-- op = op 
              指定数据库操作符op。op必须是新的,删除,
               更新或显示之一。

              此选项对于除fw以外的所有模式均有效。删除不应该
              用于运行会话。如果iscsiadm会停止
              会话,然后删除记录。

              new为给定的门户(IP地址)创建一个新的数据库记录
              和端口号)。在发现模式下,iscsiadm将创建新的
              目标返回的门户的记录。

              删除删除指定的recid。在发现节点中,如果是iscsiadm
              正在执行发现,它将删除门户的记录
              不再退回。

              更新   将使用名称将recid更新为指定的值。
              在发现节点中,如果iscsiadm正在执行发现
              不需要recid,   name    和   value   参数。更新
              操作将对目标返回的门户进行操作,
              并将使用配置文件中的info更新节点记录
              和命令行。

              show是node,discovery和iface的默认行为
              模式。当没有传入命令时也会使用它
              会话模式和一个运行的sid被传入。   名称和值是
              当与show一起使用时,被忽略。

       -p,-- portal = ip [:port] 
              使用ip-address ip和port的目标端口,默认端口
              值为3260。

              此选项仅对发现或节点操作有效
              与新的操作员。

              这应该与节点模式下的--target一起使用,以指定
              open-iscsi文档被称为节点或节点记录。
              注意:open-iscsi使用单词节点,不匹配
              iSCSI RFC的iSCSI节点术语。

       -P,--   print = printlevel
              如果在节点模式下以树形式打印节点。如果在会话模式
              以树形式打印会话。如果在发现模式下打印
              节点树形式。

       -T,--targetname = TARGETNAME 
              使用目标 TARGETNAME。

              这应该与节点模式中的--portal一起使用来指定
              open-iscsi文档被称为节点或节点记录。
              注意:open-iscsi使用单词节点,不匹配
              iSCSI RFC的iSCSI节点术语。

       -r,   -- sid  = sid |  sysfsdir 
              使用会话ID   sid。会话的sid可以从中找到
              在会话模式下运行iscsiadm和--info参数。

              可以使用包含会话的sysfs路径,而不是sid。
              例如使用以下之一:
              /sys/devices/platform/hostH/sessionS/targetH:B:I/H:B:I:L,
              /sys/devices/platform/hostH/sessionS/targetH:B:I, or
              /sys/devices/platform/hostH/sessionS,

              sid  |  sysfsdir 仅用于会话模式。

       -R,--   rescan
              在会话模式下,如果sid也通过重新扫描会话。如果
              没有通过重新扫描所有正在运行的会话。

              在节点模式下,重新扫描通过目标运行的会话,
              门户,iface元组传入。

       -s,-- stats
              显示会话统计信息

       -S,--show
              显示记录时,不要隐藏屏蔽值,例如
              CHAP密码(密码)。

              此选项仅对节点和会话模式有效。

       -t,-- type = type 
              类型必须是sendtargets(或缩写为st),   slp,   isns   或
               fw。目前只支持sendtargets,fw和iSNS,请参阅
              DISCOVERY TYPES部分。

              此选项仅对发现模式有效。

       -u,-- logout
              注销指定的记录。

              此选项仅对节点和会话模式有效。

       -U,-- logoutall == [全部,手动,自动]
              注销所有会话与节点或conn启动值传递
              在或所有运行的sesssion,除了标记在启动,如果一切都是
              传入

              此选项仅对节点模式有效(它是有效的但不是
              功能用于会话模式)。

       -v,-- value = value 
              指定与更新运算符一起使用的值。

              此选项仅对节点模式有效。

       -V,-- version
              显示版本并退出

发现 类型

       iSCSI定义了3种发现类型:SendTargets,SLP和iSNS。

       发送目标
              一种本地iSCSI协议,允许每个iSCSI目标发送一个
              启动器的可用目标列表。

       SLP(     可选)iSCSI目标可以使用服务定位协议
              (SLP)宣布可用的目标。发起者可以
              可以直接实现SLP查询,也可以使用单独的工具
              获取有关可用目标的信息。

       iSNS    iSNS(Internet存储名称服务)记录有关信息
              较大网络中的存储卷。利用iSNS,
              使用iSNS服务器的地址必须在iscsid.conf中设置
              “isns.address”值,iscsiadm必须在发现模式下运行
              与“isns”发现类型。

              open-iscsi中的iSNS支持是实验性的。iscsid.conf
              设置,iscsiadm语法和节点DB布局可能会改变。

       fw      几个NIC和系统包含一个迷你iSCSI启动器
              可用于启动。获取用于启动fw的值
              选项可以使用。做fw发现,不存储
              持久记录在节点或发现DB中,因为
              值存储在系统或NIC的资源中。

              执行fw发现将打印门户,像其他
              发现方法。查看其他设置,如CHAP值和
              启动器设置,就像在节点模式下一样,运行“iscsiadm”
              -m fw“。

              open-iscsi中的fw支持是实验性的。设置和
              iscsiadm语法和输出格式可能会改变。

       iscsiadm支持iSNS  (isns)或SendTargets  (st)   发现类型。
       SLP实施正在开发中。

例子

       发现给定IP地址的目标:

            iscsiadm  - 模式发现--type sendtargets --portal 192.168.1.10

       登录,必须使用发现找到的节点记录ID:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --login

       登出:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --logout

       列表节点记录:

            iscsiadm  --mode node

       显示给定节点记录的所有数据:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260

FILES

/etc/iscsi/iscsid.conf
启动时由iscsid和iscsiadm读取的配置文件。
/etc/iscsi/initiatorname.iscsi
启动时由iscsid和iscsiadm读取的包含iSCSI InitiatorName和InitiatorAlias的文件。
/var/lib/iscsi/nodes/
此目录包含具有目标的节点。
/var/lib/iscsi/send_targets
此目录包含门户。

以上是关于Target实现(IP SAN)的主要内容,如果未能解决你的问题,请参考以下文章

linux系统上IP SAN的实现

Linux下IP SAN共享存储操作记录

centos7新特性6

34补3-2 Linux系统上IP SAN的实现

网络存储服务ip-san搭建

Cent OS 6上实现IP SAN存储