SCSI 即小型计算机系统接口(Small Computer System Interface;简写:SCSI),一种用于计算机和外部设备之间(硬盘、光驱、软驱、打印机等)系统级接口的独立处理器标准。SCSI是一种智能的通用接口标准,它是各类计算机和外部设备之间的接口标准。前端
iSCSI是由Cisco和IBM发起的,它将SCSI命令封装在TCP/IP包里,并使用一个iSCSI帧头。它基于IP协议栈,假设以不可靠的网络为基础,依靠TCP恢复丢失的数据包。数据库
背景:后端
相比直连存储,网络存储解决方案可以更加有效地共享,整合和管理资源。从服务器为中心的存储转向网络存储,一直依赖于数据传输技术的发展,速度要求与直连存储至关,甚至更高,同事须要克服并行SCSI固有的局限性。缓存
全部数据在没有文件系统格式化的状况下,都以块的形式存储于磁盘上。并行SCSI将数据以块的形式传送至存储,可是,对于网络它的用处至关有限,由于线缆不能超过25m,并且最多链接16个设备;安全
光纤通道(FC,Fiber Channel,跑FC协议)是目前SAN的主导架构,它在专门的高速网络上分离存储资源。光纤通道协议与互联技术起源于知足高性能传送块数据的需求,同时克服直连存储的链接和距离限制。一般光纤通道设备链接距离可达到10000米,甚至数十万米,而且对于链接在SAN之上的设备没有数量要求。服务器
与SAN不一样,NAS将数据以文件的形式传输而且能够直接链接至IP网络。部署NAS设备传送数据库块数据,使用基于SCSI的光纤通道协议,比Server Message Block(SMB)协议更加高效。网络
iSCSI是一种使用TCP/IP协议,在现有IP网络上传输SCSI块命令的工业标准,它是一种在现有的IP网络上无需安装单独的光纤网络便可同时传输消息和块数据的突破性技术。iSCSI基于应用很是普遍的TCP/IP协议,将SCSI命令/数据块封装为iSCSI包,再封装至TCP 报文,而后封装到架构
IP 报文中。iSCSI经过TCP面向链接的协议来保护数据块的可靠交付。因为iSCSI基于IP协议栈,所以能够在标准以太网设备上经过路由或交换机来传输。并发
iSCSI架构依然遵循典型的SCSI模式:性能
随着光纤通道的发明,initiator和target之间的SCSI线缆已被光纤线缆所代替。
如今随着iSCSI的出现光纤线缆又被价格低廉的网线和TCP/IP网络所替代。
虽然现有的光纤存储网络具备高吞吐量的优点,与其余厂商之间的互通性还是一个短板。而基于成熟的TCP/IP协议的iSCSI网络,不只免于互通性限制并且在安全性等方面具有优点。同时,因为千兆以太网的增量部署,iSCSI的吞吐量也会随之增长,与光线通道匹敌甚至超越光线通道。
iSCSI SAN组件与FC SAN组件相相似。包括如下部件:
iSCSI Client/Host:
系统中的iSCSI客户端或主机(也称为iSCSI initiator),诸如服务器,链接在IP网络并对iSCSI target发起请求以及接收响应。每个iSCSI主机经过惟一的IQN来识别,相似于光纤通道的WWN。
要在IP网络上传递SCSI块命令,必须在iSCSI主机上安装iSCSI驱动。推荐经过GE适配器(每秒1000 megabits)链接至iSCSI target。如同标准10/100适配器,大多数Gigabit适配器使用Category 5 或Category 6E线缆。适配器上的各端口经过惟一的IP地址来识别。
iSCSI Target:
iSCSI target是接收iSCSI命令的设备。此设备能够是终端节点,如存储设备,或是中间设备,如IP和光纤设备之间的链接桥。每个iSCSI target经过惟一的IQN来标识,存储阵列控制器上(或桥接器上)的各端口经过一个或多个IP地址来标识。
本机与异构IP SAN:
iSCSI initiator与iSCSI target之间的关系如图1所示。
本例中,iSCSI initiator(或client)是主机服务器,而iSCSI target是存储阵列。此拓扑称为本机iSCSI SAN,它包含在TCP/IP上传输SCSI协议的整个组件。
与之相反,异构IP SAN,以下图所示,包含在TCP/IP与光纤交换结构传输SCSI的组件。
为了实现这一点,须要在IP与光纤通道之间安装链接桥或网关设备。链接桥用于TCP/IP与光纤通道之间的协议转换。
所以iSCSI主机将存储看作iSCSI target。直接链接光纤通道target的服务器必须包含HBA而不是iSCSI主机的网络适配卡。iSCSI主机可以使用NIC或HBA。
控制器系统架构:
iSCSI的核心处理单元采用与FC光纤存储设备相同的结构。即采用专用的数据传输芯片、专用的RAID数据校验芯片、专用的高性能cache缓存和专用的嵌入式系统平台。打开设备机箱时能够看到iSCSI设备内部采用无线缆的背板结构,全部部件与背板之间经过标准或非标准的插槽连接在一块儿,而不是普通PC中的多种不一样型号和规格的线缆连接。
控制器架构iSCSI存储内部基于无线缆的背板连接方式,彻底消除了连接上的单点故障,所以系统更安全,性能更稳定。通常可用于对性能的稳定性和高可用性具备较高要求的在线存储系统,好比:中小型数据库系统,大型数据的库备份系统,远程容灾系统,网站、电力或非线性编辑制做网等。
链接桥系统架构:
整个iSCSI存储系统架构分为两个部分,一个部分是前端协议转换设备,另外一部分是后端存储。结构上相似NAS网关及其后端存储设备。
前端协议转换部分通常为硬件设备,主机接口为千兆以太网接口,磁盘接口通常为SCSI接口或FC接口,可链接SCSI磁盘阵列和FC存储设备。经过千兆以太网主机接口对外提供iSCSI数据传输协议。后端存储通常采用SCSI磁盘阵列和FC存储设备,将SCSI磁盘阵列和FC存储设备的主机接口直接链接到iSCSI桥的磁盘接口上。iSCSI链接桥设备自己只有协议转换功能,没有RAID校验和快照、卷复制等功能。建立RAID组、建立LUN等操做必须在存储设备上完成,存储设备有什么功能,整个iSCSI设备就具备什么样的功能
PC系统架构:
即选择一个普通的、性能优良的、可支持多块磁盘的PC(通常为PC服务器和工控服务器),选择一款相对成熟稳定的iSCSI target软件,将iSCSI target软件安装在PC服务器上,使普通的PC服务器转变成一台iSCSI存储设备,并经过PC服务器的以太网卡对外提供iSCSI数据传输协议。
在PC架构的iSCSI存储设备上,全部的RAID组校验、逻辑卷管理、iSCSI 运算、TCP/IP 运算等都是以纯软件方式实现,所以对PC的CPU和内存的性能要求较高。另外iSCSI存储设备的性能极容易收PC服务器运行状态的影响。
PC+NIC系统架构
PC+iSCSI target软件方式是一种低价低效比的iSCSI存储系统架构解决方案,另外还有一种基于PC+NIC的高阶高效性iSCSI存储系统架构方案。
这款iSCSI存储系统架构方案是指在PC服务器中安装高性能的TOE智能NIC卡,将CPU资源较大的iSCSI运算、TCP/IP运算等数据传输操做转移到智能卡的硬件芯片上,由智能卡的专用硬件芯片来完成iSCSI运算、TCP/IP运算等,简化网络两端的内存数据交换程序,从而加速数据传输效率,下降PC的CPU占用,提升存储的性能。
iSCSI协议是让SCSI在TCP协议之上工做的传输协议,是一种SCSI远程过程调用模型到TCP协议的映射。SCSI命令加载在iSCSI请求之上,同时SCSI状态和响应也由iSCSI来承载。iSCSI一样使用请求响应机制。
在iSCSI 配置中,iSCSI 主机或服务器将请求发送到节点。 主机包含一个或多个链接到IP 网络的启动器,以发出请求,并接收来自iSCSI 目标的响应。
每一个启动器和目标都指定了一个惟一的iSCSI 名称,如 iSCSI 限定名 (IQN) 或扩展的惟一标识(EUI)。 IQN 是 223 字节的 ASCII 名称。EUI 是 64 位标识。iSCSI 名称表明全球惟一命名方案,该方案用于标识各启动器或目标,其方式与使用全球节点名(WWNN) 来标识光纤通道光纤网中设备的方式相同。
iSCSI 目标是响应 iSCSI 命令的设备。iSCSI 设备能够是诸如存储设备的结束节点,或者能够是诸如IP 与光纤通道设备之间的网桥的中间设备。每一个iSCSI 目标由惟一的iSCSI 名称标识。
要经过 IP 网络传输 SCSI 命令,iSCSI 驱动程序必须安装到iSCSI 主机和目标中。驱动程序用于经过主机或目标硬件中的网络接口控制器(NIC) 或 iSCSI HBA 来发送iSCSI 命令和响应。
为实现最佳性能,请使用传输速度为每秒 1000 兆位 (Mbps) 的千兆以太网适配器在iSCSI 主机和 iSCSI 目标间进行链接。
iSCSI 命令封装:
发起端和目标端之间以消息的形式进行通讯。PDU(Protocal Data Unit)就是用来传输这些消息的。
iSCSI 协议就是一个在网络上封包和解包的过程,在网络的一端,数据包被封装成包括TCP/IP头、iSCSI识别包和SCSI数据三部份内容,传输到网络另外一端时,这三部份内容分别被顺序地解开。iSCSI 系统由一块 SCSI 卡发出一个 SCSI 命令,命令被封装到第四层的信息包中并发送。
接收方从信息包中抽取SCSI 命令并执行,而后把返回的SCSI命令和数据封装到IP信息包中,并将它们发回到发送方。系统抽取数据或命令,并把它们传回SCSI子系统。全部这一切的完成都无需用户干预,并且对终端用户是彻底透明的。 为了保证安全,iSCSI 有本身的上网登陆操做
顺序。在它们首次运行的时候,启动器(initiator)设备将登陆到目标设备中。
任何一个接收到没有执行登陆过程的启动器的iSCSI PDU目标设备都将生成一个协议错误,并且目标设备也会关闭链接。在关闭会话以前,目标设备可能发送回一个被驳回的iSCSI PDU。这种安全性是基本的,由于它只保护了通讯的启动,却没有在每一个信息包的基础上提供安全性。
还有其余的安全方法,包括利用IPsec。在控制和数据两种信息包中,IPsec 能够提供总体性,实施再次(replay)保护和确认证实,它也为各个信息包提供加密。
iSCSI 会话:
iSCSI 会话创建于一个initiator与一个target之间,一个会话容许多个TCP链接,而且支持跨链接的错误恢复。大多数通讯仍是创建在SCSI基础之上的,例如,使用R2T进行流量控制。
iSCSI添加于SCSI之上的有:当即和主动的数据传输以免往返通讯;链接创建阶段添加登陆环节,这是基于文本的参数协商。
创建一个iSCSI会话,包括
命名阶段:肯定须要访问的存储,以及initiator,与FC不一样,命名与位置无关;
发现阶段:找到须要访问的存储;
登陆阶段:创建于存储的链接,读写以前首先进行参数协商,按照TCP链接登陆。
iSCSI有两大主要网络组件。
第一个是网络团体,网络团体表现为可经过IP网络访问的一个驱动或者网关。一个网络团体必须有一个或者多个网络入口,每个均可以使用,经过IP网络访问到一些iSCSI节点包含在网络团体中。
第二个是网络入口,网络入口是一个网络团队的组件,有一个TCP/IP的网络地址可使用给一个iSCSI节点,在一个ISCSI会话中提供链接。一个网络入口在启动设备中间被识别为一个IP地址。一个网络入口在目标设备被识别为一个IP地址+监听端口。
iSCSI支持同一会话中的多个链接。在一些实现中也能够作到同一会话中跨网络端口组合链接。端口组定义了一个iSCSI节点内的一系列网络端口,提供跨越端口的会话链接支持。