接下来我们继续介绍iSCSI相关的内容。
1. SCSI协议
SCSI最早发明于1982年,一路走来有多个不同的标准,比如SCSI-1,SCSI-2和SCSI-3等等。不同标准的速度不同,硬件的接口也不尽相同。如图是不同的SCSI接口。
SCSI不仅仅是一种接口,更是一套完整的协议,它实现了计算机的主机与外围设备通信的协议。这样,计算机主机就可以与这些外围设备交互数据了。这其中比较典型的如与硬盘和光驱等交互数据。
2. iSCSI协议
采用这种粗苯的线缆来传输数据并不方面,于是有了iSCSI。iSCSI基于以太网来传输SCSI指令,以太网的连接非常方便,自然设备的访问也变得方便了。
以太网是如何承载SCSI指令的呢?其实原理很简单,就是将SCSI指令封装为数据包,然后通过TCP协议传输。如图所示,所谓的iSCSI协议可以理解为一个应用层的协议,其内容为各种SCSI指令。
我们知道TCP协议是CS架构的,iSCSI协议自然也是CS架构的,iSCSI的整体架构如图所示。iSCSI通常是用来访问存储设备的,存储设备为服务端,而计算服务器为客户端。在iSCSI中有专有名词,客户端软件通常被称为initiator,也就是启动器;而服务端软件则被称为target,目标器。基于iSCSI协议,当主机连接到存储时,在主机就可以看到一个磁盘,该磁盘与本地磁盘没有任何差别。
这样,在主机端就可以基于该磁盘来格式化文件系统,并将数据放到磁盘上。当对磁盘进行读写等访问时,这时读写请求就会经过启动器转化为SCSI指令发送到服务端,服务端解析并处理后给启动器端返回应答。
由于协议基于以太网,因此主机和存储之间可以通过交换机形成一个非常复杂的网络。那么主机对存储资源的访问也就变得非常灵活了。
3. 基于RDMA的iSCSI
iSCSI协议已经非常好了,但是由于基于以太网协议需要在用户态和内核态拷贝内存,这不仅要占用CPU资源,还会导致IO延迟增大。为了进一步提升iSCSI的性能,于是有了基于RDMA的iSCSI,也就是iSER。
iSER的全称是iSCSI Extensions for RDMA,可以看出它是基于RDMA的iSCSI扩展协议。它主要还是利用RDMA技术,本质上还是封装的SCSI指令。如图所示,当在启动器端写数据时,数据直接从该端的内存发送到目标器端的CPU中进行处理,最终持久化到目标器的持久化存储中。也就是跳过了启动器端CPU的处理。
基于上述技术,使得启动器访问目标器的延时得到了大幅的降低,性能自然也会有相应的提高。
4. 性能对比
前面废话一大堆,具体性能是怎么样的呢?我们看一下SNIA的测试数据。下面这个是IO响应延迟的数据,可以看到基于iSER的延迟大幅下降。
带宽方面,基于iSER则大幅增加。因此目前基于RDMA技术的iSCSI在性能方面有着非常明显的优势。
本文简要介绍了iSCSI的发展史,从SCSI说起,到基于以太网的iSCSI,最后介绍了基于RDMA技术的iSCSI。通过本文的介绍,希望大家对iSCSI有所了解。