本文是《数据存储通识课》合集的一部分,本合集希望通过一系列文章科普数据存储相关技术内容。同时,本系列文章不仅仅是科普,还会进行有深度解析,理论结合实现,从代码实现层面进行剖析。欢迎关注“数据存储张”,老张是深耕存储十几载,就业于存储No1公司的资深工程师。
无论是个人PC或者普通服务器主板与硬盘之间的连接,还是大型集群中计算节点与存储系统之间都需要某种方式进行连接。以计算机内部的硬盘为例,通常基于SATA或者SAS方式进行连接。而计算节点与外部存储之间的连接方式要多一些,比较常见的如以太网、FC或者IB网络。无论哪种方式,这些连接方式有很多共同的地方,也就是使用的数据传输协议。对于传输协议的理解可以参考计算机与计算机互联的网络协议。
存储协议本身是非常复杂的,而且盘根错节很容易搞混。传统存储协议从大类上包括文件系统系统协议和块存储协议,文件系统系统协议包括如NAS和Samba等,块存储协议则以SCSI协议为基础。如果包括对象存储协议S3和Redis等非标准协议,存储的协议就更加复杂了。
单就块存储协议来说也是非常复杂的,比如我们常见的iSCSI、FC和FCoE等,差异和关系让人摸不到头脑。如下是SCSI协议的整体架构图,可以看到SCSI协议本身是一个协议族,包含的协议非常之多,大多数人不知从何入手。本文我们就以块存储协议为主介绍一下相关的协议。