目录

Target实现(IP SAN)

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

https://blog-image.nos-eastchina1.126.net/a2GD2mDjeh.jpg?imageslim

iSCSI目标创建

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

创建iSCSI目标

  1. 安装 scsi-target-utils.

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

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

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    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创建目标容器

1
2
3
4
5
6
7
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服务.

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    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.

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

    1
    2
    3
    
    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.

    1
    2
    3
    
    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磁盘名称.

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

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

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

    1
    2
    3
    4
    
    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管理实用程序

概要

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
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

描述

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
       iscsiadm实用程序是一个允许发现的命令行工具
       登录到iSCSI目标,以及访问和管理开放源码,
       iscsi数据库。

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

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

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

OPTIONS

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
       -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
              显示版本并退出

发现类型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
       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实施正在开发中。

例子

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
       发现给定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
1
2
3
4
5
6
7
8
/etc/iscsi/iscsid.conf
启动时由iscsid和iscsiadm读取的配置文件。
/etc/iscsi/initiatorname.iscsi
启动时由iscsid和iscsiadm读取的包含iSCSI InitiatorName和InitiatorAlias的文件。
/var/lib/iscsi/nodes/
此目录包含具有目标的节点。
/var/lib/iscsi/send_targets
此目录包含门户。