l 增加的存储设备的可用性,通过failover实现高可用性
l 通过link链路的聚合大大提高存储设备的吞吐量
ISCSI协议简介
SCSI协议是一套工业标准的通讯协议,用于连接IO设备到服务器或者工作站。ISCSI是基于IP协议上的存储网络解决方案,将SCSI命令通过IP网络进行传输,ISCSI协议使得用户通过以太网络将磁盘设备映射到服务器或者工作站的本地,在本地机器上,用户可以实现这些设备的数据块级的访问。
太多图片了,无法显示,尽请访问我的豆丁文档:
ISCSI协议:
l 运行于现有的以太网络上
l 用现存的管理工具来管理IP网络
l 可以用于连接到FC或者ISCSI的SAN环境之中
一个ISCSI网络有ISCSI initiator和ISCSI target组成,iSCSI initiator是ISCSI网络的客户端,iSCSI target是任何设备,用来相应客户端的请求。ISCSI initiator使用ISCSI协议通过IP网络连接到target端。
ISCSI协议的实现是位于SCSI之下,处于TCP/IP的顶端,每个session允许多个TCP的连接;这些都便于并行开发和提供错误恢复,另外,对于SCSI,这些命令可以login(连接到TCP session)和logout(断开TCP session)。
ISCSI的命名有点类似SCSI—命名使用全局唯一命名方式,DNS系统提供IP名字解析。ISCSI target可以共享通用IP地址和端口,initiators和target可以拥有多个IP地址。
ISCSI中,磁盘阵列或者存储资源就是实实在在的一个IP地址,一般情况下,一个物理网络端口是一个匿名的入口项,存储阵列就是一个网卡或者以太网的端口号,另外,一个物理端口可以被分配给多个IP地址。
Solaris的ISCSI initiator支持以下两种类型的服务方式:
l 静态配置(Static configure)定义一个IP地址、端口以及ISCSI target名字
l 推送目标服务(Send target)允许initiator在入口项后查询支持的所有targets
何为ISCSI多路径
通常,多路径是为存储提供一个高可用性的冗余方法,就是为一个目标存储提供至少两条物理路径。多路径允许在部件失效情况下进行重路由,使得存储资源具有高可用性而得到访问,多路径也允许数据在并行路由情况下得到访问,使得存储资源得到更高的吞吐量。
Solaris 10支持以下两种网络多路径方式:
l IPMP负载分摊—对外的网络流量可以在几个网卡之间分摊流量
l 网络聚合—network trunking多个物理网卡被当做一个卡,这些卡结合起来,提高流量和可用性
SUN的多路径软件(MPxIO)允许合并多个SCSI层的路径,就像iSCSI设备通过两个不同的iSCSI target名字映射同一个LUN一样,另外,一个FC路径和一个ISCSI 路径也可以被MPxIO软件进行合并。
Solaris 10 操作系统支持ISCSI 设备的多路径选项
Solaris存储协议栈中,多路径下的ISCSI设备可以在不同的级别上实现,以下图显示了Solaris的块IO栈:
ISCSI已经嵌入Solaris的IP协议栈中,包括:
l 通过TCP/IP的IP多路径(IPMP)
l IPMP之上,ISCSI提供用MC/S实现的本地化的多路径
l 更高层次的实现,Solaris提供的多路径软件
IP多路径IP Multipath
IPMP是solaris系统固有的网络多路径工具,在网络协议栈上的IP层进行操作,IPMP提供了fail-over和聚合功能。
实现IPMP,系统管理员需选择几个网卡,把他们置于同一个子网上,组成一个逻辑的IPMP组。IPMP多路径守护进程监控这些网卡端口的健康状态,并能配置成监控特定的ISCSI targets的连接状况。在网卡(端口)失败情况下,同一子网的另外一个网卡(端口)可以分配到失败网卡的MAC地址,这样,ISCSI的连接将继续而不会被中断。
ISCSI固有的多路径特点
ISCSI技术规范阐明了实现物理连接冗余的需求,类似FC SANS环境中支持的多路径,也就是ISCSI技术规范中支持所定义的多路径。
在TCP/IP中,连接描述为两个端口之间的通讯,会话就是initiator和target之间的一个联系,也可以拥有一个或者多个入口项。每个会话多个连接(Multiple Connections per Session MC/S)允许initiator portals到targets portals之间的通讯处于一个坐标状态。Targets portals和initiator portals的冗余都被支持,LINK聚合也被支持。
MC/S是比较成熟的一个机制,也支持很多错误处理方式。错误恢复允许命令从失败的连接中快速恢复,但是SCSI层中对错误是不太注意处理的,通常的ISCSI设备商不支持MC/S,老版本的Solaris 10也不支持这个特性。
SUN Multipathing 软件(MPxIO)
MPxIO软件是solaris自带的一个软件部件,提供对存储多个物理路径的支持,MPxIO是当前solaris对FC连接多个物理路径多路径支持的功能。MPxIO在传输层进行操作实现多路径,支持FC、InfiniBand和ISCSI的多路径。
FC和iscsi磁盘使用MPxIO注册为LUN,对每一个设备,在scsi协议层通过查询唯一的SCSI LUN号,MPxIO为同一的LUN匹配所有路径,MPxIO软件将同一设备的所有重复路径合并。
ISCSI initiator驱动检测设备,通过验证SCSI设备的target号区别所有目标盘,并进行注册,target port识别号有以下两个部分组成:
l Target node name目标节点名
l Target portal group tab(TPGT)目标入口组标志
这两个部分是连接在一起的,类似以下识别号:
iqn.1921-02.com.sun.12432+[1]
iqn.1921-02.com.sun.12432是目标节点名,1是目标入口组标志TPGT。
ISCSI initiator为每一个LUN,每一个独立的target port识别号用MPxIO注册一个实例。
MPxIO 和多个SCSI target portals的ID号
在Solaris initiator支持的ISCSI 多路径支持比较欠缺的情况下,MPxIO也许是一个比较理想的解决方案,为了使得MPxIO支持ISCSI target,target必须支持配置为每一个入口配置不同SCSI target号ID。一种方法可以这样做,如下图所示,就是将入口项分配为多个target portal group,这样TPGT可以使得target port能拥有唯一的ID。
另外一种方法比较简单,就是每个入口项拥有不同的ISCSI目标名,为创建唯一的名字,阵列供应商可以选择以上两种方法。
MPxIO with Dual SCSI/FC Bridges
MPxIO也可以用于存在两个ISCSI到FC的桥接的情况下,如下图所示:
正如前面所述,ISCSI技术规范规定,需要为每个设备分配唯一名字,因而每个LUN拥有不同的target ID号。ISCSI在MPxIO表现为实例,MPxIO匹配唯一的SCSI LUN ID ,其实他们为同一内容。
MPxIO用于拥有不同传输路径的同一设备
因为MPxIO是在传输层上实现的协议,因而MPxIO能够支持这种情况的设备,如下图所示,一个LUN到主机拥有FC和ISCSI的路径,MPxIO将合并这些所有路径:
阵列的LUN0拥有IP和FC的两条路径,MPxIO将这两条不同的路径进行整合,使得主机都能访问该LUN,阵列亦支持FC和ISCSI连接。注意,在这种配置中,MPxIO执行缺省的负载均衡,在一个对称访问的设备中,一般使用轮询的方式进行负载均衡,因此,IO请求都是在两个链路中激活的链路中进行。
总结
基于目前solaris中所支持的多路径方式,在选择多路径必须考虑以下几点:
l MPxIO支持target端口聚合和高可用性:
----本地ISCSI targets,分配不同的target port IDs
----两条ISCSI到FC的桥接
----通过ISCSI和FC的连接的混合配置
l IPMP用于主机端的冗余设置
ISCSI主机服务器配置中,具有多个物理网卡,那么这多个物理网卡应该配置成IPMP方式。