存储技术的总结

集中式存储

集中式存储带来管理上的便利,在利用率、扩展性、可用性、数据可靠和安全性、备份恢复和容灾上有很大的优势。

目前的存储技术主要分3类:DAS(Direct Attached Storage,直连存储)、NAS(Network Attached Storage网络存储)和SAN(Storage Area Network存储区域网络)。

DAS是块级存储服务,在结构上存储直接与服务器连接,中间没有中转机构,代表产品是磁盘阵列。磁盘/阵列与服务器其它硬件之间通过SATA(Serial Advanced Technology Attachment)/IDE(Integrated Drive Electronics)/SCSI(Small Computer System Interface)等接口进行连接,直接插在主板/RAID卡,或通过某种延长线(如光纤)外置,只在服务器就近范围内,如同一机柜或多个邻近机柜使用。

NAS是文件级存储服务,在结构上通过网络与服务器连接。NAS具备文件系统处理能力,NAS和服务器之间,使用的协议包括CIFS(Common Interface File System,windows的网上邻居和共享)/SAMBA(SMB,Server Message Block)、NFS(Network File System)、FTP(File Transfer Protocol)等。NAS产品通常是软硬件一体的产品,包括存储和管理系统。服务器与NAS之间通过普通的TCP/IP网络连接,没有特别的网络硬件需求,可在广域网上使用。

SAN是针对块级别的提供存储服务,在结构上通过高速网络与服务器连接。SAN具备DAS和NAS的优点:在体系结构上采用DAS的块级服务,在扩展能力和管理上采用与NAS的网络集中模式。SAN使用FC(Fibre Channel,光纤通道)、FCIP(FC over IP)、iSCSI(Internet SCSI)、Infiniband等协议与服务器连接,使用Gbps级别以上的网络。根据不同的协议和接口,SAN可分类为FC SAN(FC)、IP SAN(FCIP、iSCSI)和IB SAN(Infiniband)。受网络等因素限制,SAN可在数据中心内使用。

SAN在实施时,除了存储设备,还需要一系列的软硬辅助设备和架构设计。包括:
专门的存储网络:存储网络应与业务网络分离,为防止单点故障而采用多路/冗余设计,网络应经严格压力测试,依据业务需要,延迟在10毫秒级别内,单服务器带宽在100Mbps以上,才能满足一般的业务需求,高IO业务要求更高。
专门的交换机:FC需要使用专门的交换机;服务器采用iSCSI,存储采用FC-SAN,需要具备iSCSI-FC转换功能的交换机;Infiniband需要使用专门交换机。
专门的协议软件/硬件:块级数据传输涉及到大量小数据包,处理FC/iSCSI/Infiniband等协议需要专门软件、硬件。在服务器端,需要HBA(Host Bus Adapter)卡,HBA卡有存储和计算能力,作用是将内部总线协议(如PCI)与FC/iSCSI/Infiniband等协议进行转换,使得对访问SAN与访问普通的硬盘一样,不对服务器增加额外的计算负担。IP-SAN还可以软件+普通硬件方式实现:iSCSI可采用initiator软件和普通网卡实现,initiator软件模拟出iSCSI卡,再通过普通Gbps网卡发送iSCSI数据,这种方式投入成本低,占用CPU高,在低IO环境下使用;iSCSI还可采用initiator软件和TOE(Traffic Offload Engine)网卡,TOE带存储和处理能力,将TCP/IP流量的处理工作转到网卡上处理,降低CPU的负载,iSCSI层的工作仍然由于CPU处理。Infiniband是交换式(PCI为共享式,多个部件共享总线)的总线结构,包括HCA(Host Channel Adapter,连接内存控制器和TCA),TCA(Target Channel Adapter,连接IO设备和HCA,把网卡、SCSI控制器等数据发给HCA),IB Link(HCA和TCA之间的部分,如光纤、光纤交换机),它是独立的完整交换式IO子系统。
多路径软件:为防止单点故障,服务器备有多个接口硬件,即服务器到SAN之间有多条路径(物理上可为单一存储或多个存储)。路径如何选择,IO流量如何分配,路径故障时如何切换,是由多路径软件来处理。

SAN上的功能:
块设备LUN(logical Unit Number):SAN拿出一些存储容量,向服务器提供一个逻辑块设备(硬盘),这个设备通过LUN号来识别。LUN的可用容量大小受服务器系统的文件系统限制(FAT 4GB,FAT32 32GB-2TB,MBR NTFS 2TB,GPT NTFS 16TB,ext3根据块大小2-32TB,ext4 1EB)。LUN的数量受系统限制,在windows上单HBA卡支持8个总线(bus),总线上支持128个目标(target),目标上可识别254个LUN,理论上单个HBA卡最大支持260996个LUN。
镜像:从LUN拷贝建立相同的镜像。
快照:记录当前LUN状态,可回滚到此状态。
备份:通过LAN备份到其它SAN,备份到其它数据中心。

分布式存储

一开始时分布式存储被称为穷人的存储方案,但现在因算法和网络的发展,已成为云计算基础设施中主要的存储方式。

基本思想:将存储的数据同时在k个服务器上保存n份,以解决单点失败的问题。分布式存储的核心是算法,包括元数据管理、一致性管理、再均衡、分布式算法等。在分布式存储中,一般把硬件看作是不可靠的通用介质,需要通过多副本的方式,在概率上减少出现存储问题的可能性。

以ceph为例。ceph是统一存储的方案,支持块、文件、对象存储。ceph的核心是RADOS(reliable automatic distributed object store),通过少量的几个MAP和CRUSH算法来计算数据的位置。ceph与其它存储方式不一样的是,它更依赖于计算的方式,而不是通过查表的方式,来确定数据的位置,这使得尽可能地去掉对保存元数据的中心结点的依赖(文件存储仍然需要元数据以加快检索速度)。
ceph的组成:OSD(object store demond),MDS(metadata server),Monitor。Monitor维护存储集群的状态表,包括monitor map、osd map、placement group map、CRUSH map。OSD保存数据,处理数据复制、备份、再均衡等,并向monitor提供监控信息,集群中至少需要两个OSD(在2副本配置下)。MDS保存ceph文件存储的元数据信息。