上一期我们提到,存储系统从内置磁盘-外置DAS-FC SAN主存储的演进,有如从原始社会、奴隶制社会到封建社会的进步,生产力(IO能力和容量扩展能力)得到了极大的解放,同时,生产关系(可靠性和容错性)也取得了很大的进步:
- 从RAID1进步出了RAID5,RAID6等高级RAID特性;
- 从双主控进步到4/8/16主控,主控间通过PCIE或IB等高速通道互联,实现主控的N N冗余;
- 主控集成专用协处理器来实现数据重删的Hash算法和数据压缩的霍夫曼编码等算法;
但是,FC SAN有一个致命的缺陷:
FC SAN网络,传输的实际上是SCSI命令字,内容是LUN磁盘卷ID、LBA编址的磁盘扇区号等底层信息。因此,所有的FC SAN读写操作,实际上是同步阻塞操作。
什么是同步阻塞操作呢?
让我们用著名古典名著里面的故事举一个例子。
假设西门庆进京(明朝是南京)做买卖,需要在12306上购买一张从山东曲阜东站到南京南站的车票,12306的APP层向数据库发起请求,查看山东枣庄站到南京南站的车票数量,并将数量减1,西门庆占位成功。
同时,著名老司机横路敬二,想从枣庄到徐州去见网友波多新垣结衣,需要购买枣庄到徐州东的车票。显然,由于横路敬二和西门庆不可能共享一个座位,因此,横路敬二的购票操作,会被西门庆的购票所阻塞。如果使用了集中式FC存储,且存储设备与主机直接的往返时间过长,会导致购票体验严重下降。
出于这点考虑,FC SAN对传输时延极其敏感,对传输的错误或丢包更是零容忍(丢失SCSI命令字会导致数据库以为数据已经落盘,但数据实际没有落盘,会造成数据库逻辑错误)。因此,在大规模多地域,甚至跨城市的情况下,主机访问远端存储设备是难以实现的,如同封建社会的分封制、郡县制束缚了工业化的社会大生产一样。
然而,在互联网的环境下,远端主机访问存储设备又是不得不面对的问题。
因此,NAS(Network Attached Storage)出现了。
NAS的访问是通过NFS(Network File System)、CIFS(Common Internet File System)等方式,以文件为单位,在TCP/IP上,承载存储数据的传输,也就是常说的文件共享等方式。NFS的访问方式为文件,也就是说,NFS网关/服务器上维护块设备上的文件系统,并通过TCP/IP承载的协议对外提供服务,如下图所示:
由于远端主机是通过文件方式,如利用open()等POSIX API访问NAS服务器上共享的文件,可以自主选择打开文件的类型,不会造成阻塞其他应用或其他客户端实例对文件的访问,因此,NAS可以跨越丢包率高、时延大的互联网访问,从而让文件存储的共享范围打破了数据中心的边界,如同资本主义社会破除了封建土地所有制,开启了文艺复兴、启蒙运动、宗教改革等生产关系变革,为蒸汽机革命、煤钢复合体等工业化铺平道路那样。
资本主义在几百年的历史中完成了对世界翻天覆地的改造,使得人类的生产力指数提升。然而,工业大生产是社会化的,而割裂的私有制的生产资料实际上妨碍了生产力的进步。1929年经济危机以及两次世界大战等事件,也使得欧洲游荡的幽灵真正降临人间……
2008年以后,随着云计算从设想变为现实,我们发现,单台存储设备的IO能力,无论如何难以满足数以万计的计算节点的请求。究其根本原因,是因为集中式的存储难以满足分布式计算的横向扩展需求,正如基于生产资料私有制的生产关系束缚了生产力的进一步发展那样。
在云计算的驱动下,存储系统也开始打破私有制的藩篱,向社会主义公有制演进。
请期待下期。