一、	ISCSI概述
1.1、	介绍

本章主要介绍了基于IP SAN 的网络存储ISCSI ,iscsl技术以其低廉的构成和优秀的存储性能,博得了很多CIO和存储管理的喜爱,目前陆续进入企业应用领域,推动了企业的存储环境向集中式转变,虽然, 目前对于ISCSI因该在什么样的环境中使用还存在诸多争议,ISCSI的前途是光明的,在未来的存储世界中,将会占据重要位置。
1.2、	SCSI介绍
SCSI是小型计算机系统接口(Samll Computer System Inerface) 的简称,SCSI作用输入/输出接口,主要用于硬盘、光盘、磁带机、扫描仪、打印机等设备.
 
1.3、	FC介绍
FC是光纤通道(Fibre Channel)的简称,是一种适合于前兆数据传输的、成熟而安全的解决方案。与传统的SCSI技术相比,FC提供更高的数据传输速率,更远的传输距离,更多的设备连接支持、更稳定的性能,更简易的安装。

1.4、	DAS介绍
DAS是直接式存储(Direct-Attached Stroage)的简称,是指将通过scsi接口或者光纤通道直接连接到一台计算机上面,当服务器在地理上比较分散,很难通过远程进行互连时,DAS是比较好的解决方案。但是这种方式存储之能通过与连接的主机进行访问,不能实现数据与其它主机的共享。同时DAS会占用服务器的操作资源。如:CPU资源 I/O资源,数据量越大,占用的资源就越多。


1.5、	NAS介绍
网络接入存储 (Network-Attached Stroge)简称NAS,它通过网络交换机连接存储系统和服务器,建立专门用于数据存储的私有网络,用户通过TCP/IP协议访问数据,采用标准的文件协议如:NFS、HTTP、CIFS来实现基于文件级的数据共享,NAS存储是文件共享访问变得更加方便快捷,并且能很容易的增加存储容量,通过专业化与存储技术相结合,NAS为那些需要共享大量文件数据的企业提供一个高效的,高可靠、高性价比的决绝方案。但是NAS也有一定的局限性,它会受到网络带宽和网络拥堵的影响,在一定程序上限制了NAS的网络传输能力.

1.6、	SAN介绍
存储区域网络(Storage Area Network)简称SAN,它是通过光纤交换机,光纤路由器,光纤集线器等设备将磁盘阵列、磁带等存储设备与相关服务器连接起来的告诉专用子网。
SAN主要由3个部分组成:
连接设备(如、路由器、光纤交换机)
通信接口(如、SICI、FC)
通信协议(如、IP和SCSI) 这3个部分再加上存储设备和服务器构成了一个SAN系统。

1.7、	iSCSI概念
iscsi,即internet SCSI,是IETF制定的一项标准,用于将SCSI数据块映射为以太网数据包,它一种基于IP Storage的理论的新型存储技术,该技术将存储行业广泛应用SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN,简单的说iscsi就是在IP网络上运行SCSI协议的一种网络存储技术,

二、	iSCSI工作原理
2.1、iSCSI的组成
一个简单的iSCSI系统大概是由以下部分组成:
	iSCSI Initiator 或者iSCSI HBA
	iSCSI Target
	以太网交换机
	一台或者多台服务器
 

2.2、iSCSI Initiator

	iSCSI Initiator是一个安装在计算上的软件或者硬件设备,它负责与iSCSI存储设备进行通信iSCSI 服务器与iSCSI存储设备之间的连接方式有两种:
第一种基于软件的方式:是iSCSI Initiator(免费), 在iSCSI服务器上安装Initiator 后,Initiator软件可以将以太网卡虚拟为iSCSI卡,进而接受报和发送iSCSI数据报文,从而实现主机和iSCSI存储设备之间的iSCSI协议和TCP/IP协议传输功能。
第二种方式: 是硬件iSCSI HBA(Host Bus Adapter) HBA硬件卡,即iSCSI Initiator硬件。这种方式需要先购买iSCSI HBA卡,然后将其安装在iSCSI服务器上,从而实现iSCSI服务器与交换机之间、iSCSI服务器与存储设备之间的高效数据传输.
iSCSI适配卡大致分成两类,一为TOE HBA卡,一为iSCSI HBA卡,前者价格较便宜,后者效能极佳,但价格非常昂贵。代表性的厂商有Adaptec、Alacritech、Intel、LSI、Qlogic等,其中Intel专注于TOE HBA卡的开发

2.3、iSCSI Target 
iSCSI Target是一个可以用于存储数据的iSCSI磁盘阵列或者具有iSCSI功能的设备都可以被称为”iSCSI Target”,以为大多数操作系统都可以利用一些软件将系统转变为一个”iSCSI Target”。
 利用iSCSI target软件,可以将服务器的存储空间分配给客户机使用,客户机可以像使用本地硬盘一样使用iSCSI磁盘,包括对其进行分区、格式化及读写等。而且每个客户端可以向iSCSI磁盘写数据,户不干扰,而且不会破坏存储到服务器中的数据。同时,iSCSI对可以通过配置文件对权限进行限制。非常的灵活。
    我们知道,iSCSI使用了TCIP/IP协议进行通信的,因此,将iSCSI两端连接起来,仅仅需要一个以太网络就可以了,由此可知,iSCSI的存储性能和这个以太网有直接的关系,所以最好在iSCSI网络中使用千兆以太网交换机,劣质的网络设备会严重影响存储系统的性能,也就说,要为每个服务器配置高质量的千M以太网和千M交换机,并且提供两个链接,对于 ISCSI Target,应该为每个独立阵列中的两个独立端口配置一个设备交换机,最后将交换机连接起来,采用这种配置防止。其中一个交换机出现问题。另外一个任然可以保证数据的正常运行。
    
    
二、基于命令行的操作:

Target 10.0.0.201操作:
对于每个Target来说,主机的ID是唯一,
存储设备的LUN ID 是由ISCSI target来分配的。
ISCSI驱动器为了scsi请求和回应提供了一个通过IP网络传输的驱动.

# yum -y install scsi-target-utils
# /etc/init.d/tgtd start
# chkconfig tgtd on
# chkconfig --list tgtd

 
 
(1)模拟一个控制器 
# tgtadm  --lld iscsi --mode target --op new --targetname iqn.2014-07-03.com.sxkj.mydisk1 --tid 1 

--lld:表示驱动或者接口类型
--mode:target目标
--op:new 新建
--targetname:表示创建targename名称.iqn.xxxxxxx.mydisk1 前和尾部固定,中间自由定义.
--tid:标识号


#查看
# tgtadm --lld iscsi --mode target --op show
 
 
 
(2)在模拟控制器关联一个设备 
# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sdb

--lld:表示驱动或者接口类型
--mode:target目标
--op:new 新建
--tid:标识号
--lun:lun标识号
-b:指定设备号


 #查看
# tgtadm --lld iscsi --mode target --op show

(3)基于IP的授权
# tgtadm --lld iscsi --mode target --op bind --tid 1 -I 10.0.0.0/16

    取消授权
    #tgtadm --lld iscsi --mode target --op unbind --tid 1 -I 10.0.0.0/16
    
    删除一个逻辑卷
    #tgtadm --lld iscsi --mode target --op delete --tid 1 --lun 1
    
    删除一个target
    #tgtadm --lld iscsi --mode target --op delete --tid 1
    
 Initiator 10.0.0.202操作:    
 
# iscsi-iname
iqn.1994-05.com.redhat:d18ee3c506b 

# iscsi-iname -p iqn.2014-07-03.com.skkjgongda
iqn.2014-07-03.com.skkjgongda:fb66a38ae152

# vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2014-07-03.com.skkjgongda:fb66a38ae152 给自己的客户端取个固定的名字。


发现服务端Target
# iscsiadm -m discovery -t sendtargets -p 10.0.0.201


登录服务端:
# iscsiadm -m node -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201 -l
# iscsiadm -m node -o delete -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201

先退出登录。
# iscsiadm -m node -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201 -U all

在删除一个发现:
iscsiadm -m node -o delete -T iqn.2014-07-03.com.sxkj.mydisk1 -p 10.0.0.201
    
    
     
    
五、总结所有的步骤简单化精华


iscsi单机文件共享系统,也就说比如有服务端共享一个/sdb存储出来
每个客户端可以在/sdb里面使用一个分区.
比如客户端1可以使用fdisk /sdb 分一个/sdb1
比如客户端2可以使用fdisk /sdb 分一个/sdb2
比如客户端3可以使用fdisk /sdb 分一个/sdb3
如果客户端1和客户端2同时使用/sdb1就会出现内存奔溃的情况。这个一大BUG,

5.1、环境描述:
服务器端target 10.0.0.203 增加一块30G sisci硬盘
客户端:10.0.0.204
客户端:10.0.0.202


5.2、服务安装
(1)、安装服务
# yum -y install scsi-target-utils
(2)、修改配置文件
#vim /etc/tgt/targets.conf
<target iqn.2014-06-10.com.sxkj.mydisk1>
    backing-store /dev/sdb    #如果多个存储设备。直接加多一个backing-store
    incominguser alvin alvin123 #基于用户认证
    initiator-address 10.0.0.0/16 #基于IP授权访问
</target>



(3)、重启服务
# /etc/init.d/tgtd restart
(4)、查看是否成功
# tgtadm --lld iscsi --mode target --op show





5.3、客户端安装
(1)安装软件
# yum -y install iscsi-initiator-utils

(2)修改Initiator唯一标识号
跟target一样也需要一个唯一标识号。可以使用-p来更改,然后编辑配置文件永久修改
# iscsi-iname
# iscsi-iname -p iqn.2014-06.com.sxkjgongda
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:1c39abfdfa0  #给自己的客户端Initiator起个名字

(3)、修改配置文件
# vim /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP  #开启chap认证
node.session.auth.username = Alvin    #服务端target创建和绑定的用户
node.session.auth.password = alvin123  #服务端target创建的密码写进来

(4)、发现targe命令
# iscsiadm -m discovery -d 2 -t st -p 10.0.0.203

(5)、重启服务
# /etc/init.d/iscsi restart  是否可以看到共享磁盘?

(6)、可以使用fdisl对共享磁盘进行分区。然后挂在到本地