iSCSI存储系统知识
一、概述
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:
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概念解析:
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 存储系统四大架构:
控制器系统架构:
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协议
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节点内的一系列网络端口,提供跨越端口的会话连接支持。