CentOS 6.6 安装 ISCSI

服务器 struggling 1388次浏览 0个评论

一,ISCSI简介

iSCSI,即internet SCSI,又称为IP-SAN,是IETF制订的一项标准,用于将SCSI数据块映射成以太网数据包。iSCSI是一种基于TCP/IP 的协议,用来建立和管理IP存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。SCSI 结构基于C/S模式,其通常应用环境是:设备互相靠近,并且这些设备由SCSI 总线连接。

iSCSI 的主要功能是在TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。

从根本上说,iSCSI协议是一种跨过IP网络来传输潜伏时间短的SCSI数据块的方法。

完整的iSCSI系统的拓扑结构如下:

041650184024895

与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

<code>
把原来只用于本机的SCSI协同透过TCP/IP网络传送,使连接距离可作无限的地域延伸;

连接的服务器数量无限(原来的SCSI-3的上限是15);

由于是服务器架构,因此也可以实现在线扩容以至动态部署。
</code>

ISCSI的协议结构:

iscsi

二,搭建基于 IP SAN 的 ISCSI 存储系统

<code>
规划: 

环境: CentOS 6.6 32位

服务器端 IP: 192.168.1.43

客户端 IP : 192.168.1.111

共享磁盘:  /dev/sdb

</code>

1,配置服务器端

<code>
[root@localhost ~]# yum -y install scsi-target-utils   #安装服务器端软件

[root@node1 iscsi]# rpm -ql scsi-target-utils
/etc/rc.d/init.d/tgtd
/etc/sysconfig/tgtd
/etc/tgt/targets.conf      #配置文件
/usr/sbin/tgt-admin
/usr/sbin/tgt-setup-lun
/usr/sbin/tgtadm
/usr/sbin/tgtd
/usr/sbin/tgtimg
/usr/share/doc/scsi-target-utils-1.0.24
/usr/share/doc/scsi-target-utils-1.0.24/README
/usr/share/doc/scsi-target-utils-1.0.24/README.iscsi
/usr/share/doc/scsi-target-utils-1.0.24/README.iser
/usr/share/doc/scsi-target-utils-1.0.24/README.lu_configuration
/usr/share/doc/scsi-target-utils-1.0.24/README.mmc
/usr/share/man/man5/targets.conf.5.gz
/usr/share/man/man8/tgt-admin.8.gz
/usr/share/man/man8/tgt-setup-lun.8.gz
/usr/share/man/man8/tgtadm.8.gz

[root@localhost ~]# lsmod  |grep scsi
mptscsih               31330  1 mptspi
mptbase                86744  2 mptspi,mptscsih
scsi_transport_spi     19726  1 mptspi   			#高级驱动程序
</code>

iscsi可以使用命令或配置文件进行配置,我们首先使用命令行来进行配置:

<code>
[root@node1 iscsi]# service tgtd  start
Starting SCSI target daemon:                               [  OK  ]

[root@node1 iscsi]# ss -tlnp |grep 3260   #其监听在3260端口
LISTEN     0      128                      :::3260                    :::*      users:(("tgtd",11882,5),("tgtd",11885,5))
LISTEN     0      128                       *:3260                     *:*      users:(("tgtd",11882,4),("tgtd",11885,4))

[root@localhost ~]# tgtadm -L iscsi -o  new -m  target -t 1 -T iqn.2015-08.com.feiyu.testsan:1     #创建一个target,-t指定TID,-T指定名称
</code>

iqn表示“ISCSI Qualified Name”,简称iqn。

<code>
[root@localhost ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2015-08.com.feiyu.testsan:1
    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: 
    Account information:
    ACL information:
</code>

然后设定LUN(Logical Unit Number,逻辑单元号),服务器端只需要创建好分区,不需要格式化:

<code>
[root@localhost ~]# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/sdb5    #创建一个LUN,-m表示模式,-l :LUN ,-b: 设备

[root@localhost ~]# tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.0.0/16

[root@node1 iscsi]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2015-08.com.feiyu.testsan:1
    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: 2107 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb5
            Backing store flags: 
    Account information:
    ACL information:

[root@node1 iscsi]# tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.0.0/16  #设定共享区
[root@node1 iscsi]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2015-08.com.feiyu.testsan:1
    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: 2107 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sda5
            Backing store flags: 
    Account information:
    ACL information:
        192.168.0.0/16

[root@localhost ~]# tgtadm -L iscsi -o new -m logicalunit -t 1 -l 2 -b /dev/sdb6   #绑定第二个LUN
</code>

2,配置客户端

<code>
[root@node1 ~]# yum install -y iscsi-initiator-utils  #安装客户端


[root@node1 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2013-05.com.feiyu`" > /etc/iscsi/initiatorname.iscsi   #生成iqn
[root@node1 iscsi]# echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi   #定义别名

[root@node1 iscsi]# ls
initiatorname.iscsi  iscsid.conf
[root@node1 iscsi]# cat initiatorname.iscsi   #查看所定义的数据
InitiatorName=iqn.2015-08.com.feiyu:10834bd52221
InitiatorAlias=initiator1

[root@node1 ~]# service iscsi start     #启动服务,需要启动两个服务
[root@node1 ~]# service iscsid start
[root@node1 ~]# chkconfig iscsi on
[root@node1 ~]# chkconfig iscsid on
</code>

若出现以下错误,可能由于服务器端的防火墙没有关!

<code>
[root@node1 ~]# iscsiadm -m  discovery -t st -p 192.168.1.43
Starting iscsid:                                           [  OK  ]
iscsiadm: cannot make connection to 192.168.1.43: No route to host

[root@node1 ~]# iscsiadm -m  discovery -t st -p 192.168.1.43  #进行探测
192.168.1.43:3260,1 iqn.2015-08.com.feiyu.testsan:1

[root@node1 ~]# iscsiadm -m node -T iqn.2015-08.com.feiyu.testsan:1 -p 192.168.1.43 -l    #登录节点
Logging in to [iface: default, target: iqn.2015-08.com.feiyu.testsan:1, portal: 192.168.1.43,3260] (multiple)
Login to [iface: default, target: iqn.2015-08.com.feiyu.testsan:1, portal: 192.168.1.43,3260] successful.

[root@node1 ~]# fdisk -l  #登录成功可以看到多了一块硬盘,

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006d052

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2354    18598912   83  Linux
/dev/sda3            2354        2610     2057689    5  Extended
/dev/sda5            2354        2610     2057657+  83  Linux

Disk /dev/sdc: 10.7 GB, 10742183424 bytes    -------> iscsi设备
64 heads, 32 sectors/track, 10244 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
</code>

为磁盘创建分区并格式化。

<code>
[root@node1 ~]# mke2fs -t ext4 /dev/sdc1
</code>

若使用两个客户端,不要同时挂载同一个文件系统,它是单机的,不支持同时使用。可以将其分为多个分区,不同客户端挂载不同分区。

<code>
[root@node1 mnt]# iscsiadm -m node -T iqn.2015-08.com.feiyu.testsan:1 -p 192.168.1.43 -u    #登出
Logging out of session [sid: 1, target: iqn.2015-08.com.feiyu.testsan:1, portal: 192.168.1.43,3260]
Logout of [sid: 1, target: iqn.2015-08.com.feiyu.testsan:1, portal: 192.168.1.43,3260] successful.

[root@node1 mnt]# ls  /var/lib/iscsi/     #此文件夹下存放所有信息
ifaces  isns  nodes  send_targets  slp  static

[root@node1 ~]# iscsiadm -m node -T iqn.2015-08.com.feiyu.testsan:2 -p 192.168.1.43 -o delete   #删除探测到的信息
</code>

3,服务器端从配置文件中设定,在文件中设置比较简单

<code>
[root@localhost ~]# tgtadm -L iscsi -o unbind -m target -t 1 -I 192.168.0.0/16  #解除绑定
[root@localhost ~]# tgtadm -L iscsi -o show -m target   #查看iscsi信息

[root@localhost ~]# tgtadm -L iscsi -o delete -m logicalunit -t 1 -l 2   #将target1上的LUN2 delete掉
 
[root@localhost ~]# tgtadm -L iscsi -o delete -m target  -t 1   #删除target

[root@localhost tgt]# vim targets.conf    #添加以下配置

<target iqn.2015-08.com.feiyu.testsan:2>
    backing-store /dev/sdb4
</target>

[root@localhost tgt]# service tgtd  restart
Stopping SCSI target daemon:                               [  OK  ]
Starting SCSI target daemon:                               [  OK  ]
[root@localhost tgt]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2015-08.com.feiyu.testsan:2
    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: 0 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb4
            Backing store flags: 
    Account information:
    ACL information:
        ALL

[root@localhost tgt]# vim targets.conf  #设置访问控制权限		
		
<target iqn.2015-08.com.feiyu.testsan:2>
    backing-store /dev/sdb4
    initiator-address 192.168.0.0/16
</target>

[root@localhost tgt]# service tgtd  restart
[root@localhost ~]# tgtadm -L iscsi -o show -m target   #查看iscsi信息
</code>

说明:

1,服务端配置管理工具tgtadm的使用:

<code>
tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]...
</code>

(1)、添加一个新的 target 且其ID为 [id], 名字为 [name]:

<code>
--lld [driver] --op new --mode target --tid=[id] --targetname [name]
</code>

(2)、显示所有或某个特定的target:

<code>
--lld [driver] --op show --mode target [--tid=[id]]
</code>

(3)、向某ID为[id]的设备上添加一个新的LUN,其号码为[lun],且此设备提供给initiator使用。[path]是某“块设备”的路径,此块设备也可以是raid或lvm设备。lun0已经被系统预留:

<code>
--lld [driver] --op new --mode=logicalunit --tid=[id] --lun=[lun] --backing-store [path]
</code>

(4)、删除ID为[id]的target:

<code>
--lld [driver] --op delete --mode target --tid=[id]
</code>

(5)、删除target [id]中的LUN [lun]:

<code>
-lld [driver] --op delete --mode=logicalunit --tid=[id] --lun=[lun]
</code>

(6)、定义某target的基于主机的访问控制列表,其中,[address]表示允许访问此target的initiator客户端的列表:

<code>
--lld [driver] --op bind --mode=target --tid=[id] --initiator-address=[address]
</code>

(7)、解除target [id]的访问控制列表中[address]的访问控制权限:

<code>
--lld [driver] --op unbind --mode=target --tid=[id] --initiator-address=[address]
</code>

例如:

(1)创建一个target:

<code>
# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2013-05.com.magedu:tsan.disk1
</code>

(2)显示所有:

<code>
# tgtadm --lld iscsi --op show --mode target
</code>

(3)显示刚创建的target:

<code>
# tgtadm --lld iscsi --op show --mode target --tid 1
</code>

(4)创建LUN,号码为1:

<code>
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sda5
</code>

(5)开放给192.168.0.0/24网络中的主机访问:

<code>
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 172.16.0.0/16
</code>

其中的-I相当于–initiator-address

2、iscsiadm工具的使用:

iscsiadm是个模式化的工具,其模式可通过-m或–mode选项指定,常见的模式有discovery、node、fw、session、host、iface几个,如果没有额外指定其它选项,则discovery和node会显示其相关的所有记录;session用于显示所有的活动会话和连接,fw显示所有的启动固件值,host显示所有的iSCSI主机,iface显示/var/lib/iscsi/ifaces目录中的所有ifaces设定。

<code>
iscsiadm -m discovery [ -d debug_level ] [ -P printlevel ] [ -I iface -t type -p ip:port [ -l ] ] 

iscsiadm -m node [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ [ -T tar-getname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] 

-d, --debug=debug_level   显示debug信息,级别为0-8;

-l, --login

-t, --type=type  这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示允许每个iSCSI target发送一个可用target列表给initiator;

-p, --portal=ip[:port]  指定target服务的IP和端口;

-m, --mode op  可用的mode有discovery, node, fw, host iface 和 session

-T, --targetname=targetname  用于指定target的名字

-u, --logout 

-o, --op=OPEARTION:指定针对discoverydb数据库的操作,其仅能为new、delete、update、show和nonpersistent其中之一;

-I, --interface=[iface]:指定执行操作的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;
</code>

例:

<code>
# iscsiadm -m discovery -t sendtargets -p 192.168.0.11

# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -l

# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -u

# iscsiadm -m node -T iqn.2010-8.com.example.ts:disk1 -p 192.168.0.11:3260 -o delete
   </code>

查看会话相关信息:

<code>
# iscsiadm -m session -s
</code>




DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址