本文是参照 高俊峰 老师的 构建高性能Linux服务器的视频写的。希望能给有需要的人一点帮助,同时也是为了方便自己。


1、存储的一些概念和术语:

SCSI:小型计算机系统接口(Small Computer System Interface)

FC:光纤通道(Fibre Channel)

DAS:直连式存储(Direct-Attached Storage)

NAS:网络接入存储(Network-Attached Storage)

SAN:存储区域网络(Storage Area Network)


2、认识ISCSI:

iSCSI=Internet Small Computer System Interface

iSCSI 是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于Ip Storage理论的新型存储技术,该技术是将存储行业广泛应用的SCSI接口与IP网络技术相结合,可以在IP网络上构建SAN存储区域网络,简单地说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术



3、ISCSI技术的优势:

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

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

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

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


4、ISCSI构架:

4.1、控制器架构:

采用专用的数据传输芯片、专用的RAID数据校验芯片、专用的高性能Cache缓存和专用的嵌入式系统平台,是一个核心全硬件的设备。

优点:具有较高的安全性和稳定性。

缺点:核心处理器全部采用硬件,制造成本较高。

适用环境:可以用于对性能的稳定性和高可用性具有较高要求的在线存储系统,例如:中小型数据库系统,大型数据库备份系统,远程容灾系统等。


4.2、ISCSI连接桥架构:

连接桥架构分为两个部分:

*前端的协议转换器;

*后端存储

前端协议转换部分一般是硬件设备,只有协议转换功能,没有RAID检验和快照、卷影复制等功能,因此,创建RAID组、创建LUN等操作必须在存储设备上完成。

后端存储一般采用ISCSI磁盘阵列和FC存储设备

随着iscsi技术的成熟,连接桥架构的ISCSI设备越来越少了。


4.3、PC架构:

也就是将存储设备搭建在PC服务器上,通俗的说就是选择一个性能良好、可支持多块硬盘的PC服务器,然后选择一款成熟的存储端管理软件(ISCSI Target),并将其安装在这台PC服务器上,这样就将一个普通的PC服务器变成了一台ISCSI存储设备了。最后通过PC服务器的以太网卡对外提供ISCSI数据传输服务。

客户端主机可以安装iscsi客户端软件(ISCSI Initiator)通过以太网连接PC服务器共享出来的存储空间。

PC架构的典型图例如下:




5、iSCSI存储连接方式:

5.1、以太网卡+initiator软件方式:

服务器、工作站等主机使用标准的以太网卡,通过以太网线直接与交换机连接,iSCSI存储也通过以太网线连接到以太网交换机上,或直接连接到主机的以太网卡上,在主机上安装Initiator软件。

优点:在现有网络基础上即可完成,成本低;

缺点:消耗客户端主机部分资源。

适用环境:在低I/O和低宽带性能要求的应用环境中。


5.2、硬件TOE网卡+Initiator软件方式:

具有TOE(TCP Offload Engine)功能的智能以太网卡,可以将网络数据流量的处理工作全部转到网卡的集成硬件中完成。客户端主机可以从繁忙的协议转换中解脱出来。

优点:采用TOE卡后可以大幅度的提高数据和传输速率,降低了客户端主机的资源消耗。

缺点:需要购买TOE功能的网卡,成本较高。


5.3、ISCSI HBA卡连接方式:

也就是在客户端主机上安装专业的iSCSI HBA适配卡,从而实现主机与交换机之间、主机与存储之间的高效的数据交换。

优点:数据传输性能最好

缺点:需要购买ISCSI HBA适配卡,成本较高。

TOE网卡和ISCSI HBA的市场价格都比较贵,如果主机较少的话还可以接受,如果网络主机比较多,成本消耗很大。



6、ISCSI系统的组成:

一个简单的ISCSI系统大致有以下几部分组成:

* iSCSI initiator或者iSCSI HBA(在客户端安装的软件或硬件)

* iSCSI Target(安装在服务器端)

* 以太网交换机

* 一台或是多台服务器


6.1、ISCSI Target概念:

一个可以被用于存储数据的iscsi磁盘阵列或者具有iscsi功能的设备都可以被称为“ISCSI Target”。

利用iSCSI Target软件,可以将服务器的存储空间分配给客户机使用,客户机就可以像使用本地硬盘一样使用iscsi硬盘。

目前大多数iscsi Target软件都是收费的。不过,也有一些linux平台开源的iscsi Target软件。例如:iSCSI Enterprise Target。


6.2、iSCSI initiator概念:

iSCSI initiator是一个安装在计算机上的一个软件或是一个硬件设备,它负责处理同iscsi存储设备进行通信。

iSCSI服务器与iSCSI存储设备之间的连接方式有两种:

第一种是基于软件的方式,即软件iSCSI initiator

第二种是基于硬件的方式,即硬件iSCSI initiator

iSCSI initiator 软件一般都是免费的,Centos和RHEL对iSCSI initiator支持非常不错,现在的Linux发行版本都默认已经自带了iSCSI initiator。



7、iSCSI技术实现原理图:


基本实现过程:

iSCSI协议定义了在TCP/IP网络发送、接收block(数据块)级的存储数据的规则和方法。

发送端将SCSI命令和数据封装到TCP/IP包中再通过网络转发,接收端收到TCP/IP包之后,将其还原为SCSI命令和数据并执行,完成之后将返回的SCSI命令和数据再次封装到TCP/IP包中再次发送回发送端。整个过程在用户看来:使用远端的存储设备就像访问本地的SCSI设备一样简单。