
分布式存储相对于集中式存储. 在介绍分布式存储之前,让我们看一下什么是集中式存储. 不久前,企业级存储设备都是集中式存储. 从集中化的概念可以看出所谓的集中式存储,即整个存储都集中在一个系统中. 但是集中存储不是单个设备,而是集中在系统中的多个设备. 以EMX的存储为例,整个存储系统可能需要几个机柜来存储.

图1集中存储的物理图
此存储系统中除了核心头(控制器),磁盘阵列(JBOD)和交换机以及其他设备以及辅助设备(例如管理设备)之外,还具有许多组件. 图2是集中式存储的基本.


图2集中式存储逻辑
在集中式存储中,通常包括一个磁头,它是存储系统的核心组件. 磁头中通常有两个控制器,这两个控制器实现了相互备份的功能,以避免硬件故障导致整个存储系统不可用. 头通常包括前端端口和后端端口. 前端端口用户为服务器提供存储服务,后端端口用于扩展存储系统的容量. 可以通过后端端口连接更多的存储设备,以形成一个非常大的存储资源池.
耳机是整个存储系统的核心组件,并且在其中实现了整个存储系统的高级功能. 控制器中的软件实现磁盘管理,将磁盘抽象为存储资源池,然后将其划分为LUN供服务器使用. 此处的LUN实际上是服务器上看到的磁盘. 当然,某些集中存储也是文件服务器本身分布式存储实现技术,并且可以为服务器提供共享文件服务. 无论如何,从上面我们可以看到集中存储的最大特征是统一的入口,所有数据都必须经过这个入口,这个入口是存储系统的头.
分布式存储是一个大概念,其中包含多种类型. 除了传统的分布式文件系统,分布式块存储和分布式对象存储外,它还包括分布式和分布式缓存. 本文仅限于传统的存储体系结构,例如分布式文件系统,并且不介绍.
分布式存储最初是由Google提出的,其目的是提供低成本服务器,以解决,高并发情况下的Web访问问题. 图3是Google分布式存储(HDFS)的简化模型. 在系统的整个体系结构中,服务器分为两种类型,一种称为名称节点,这种类型的节点负责管理管理数据(元数据),另一种称为数据节点,这种类型的服务器负责实际数据管理.


图3简化的HDFS架构
在上面显示的分布式存储中,如果客户端需要从文件读取数据,请首先从namenode(特定的datanode)获取文件的位置,然后从该位置获取特定的数据. 在这种架构中,名称节点通常是主部署和备用部署,而数据节点是由大量节点组成的集群. 由于元数据的访问频率和访问量远小于数据访问的频率和访问量,因此namenode通常不会成为性能瓶颈,并且datanode群集可以分散客户端请求. 因此,这种分布式存储架构可以通过水平扩展数据节点的数量来提高承载能力,即水平动态扩展的能力.
图片显示了Ceph存储系统的体系结构. 此体系结构与HDFS之间的区别在于,此体系结构中没有中央节点. 客户端计算通过设备映射关系写入的数据的位置,以便客户端可以直接与存储节点进行通信,从而避免了中央节点的性能瓶颈.


图4 Ceph无中心架构
Ceph存储系统架构的核心组件包括Mon服务,OSD服务和MDS服务. 对于块存储类型分布式存储实现技术,仅需要Mon服务,OSD服务和客户端软件. Mon服务用于维护存储系统的硬件逻辑关系,主要是服务器和硬盘等信息. Mon服务可确保通过群集提供服务. OSD服务用于管理磁盘并实现真正的数据读写. 通常,一个磁盘对应一个OSD服务.
客户端访问存储的一般过程是,客户端启动后,它将首先从Mon服务中获取存储资源布局信息,然后根据布局信息和名称计算所需数据的位置. 写入数据(包括特定的物理服务器信息和磁盘信息),然后直接传送位置信息以读取或写入数据.
与Ceph通过计算获得数据位置的方式不同,另一种方法是通过一致的散列获得数据位置. 一致性哈希的方法是将设备放入一个哈希环,然后将根据数据名称计算出的哈希值映射到哈希环的某个位置,从而实现数据的定位.


图5一致哈希的原理
图5是一致哈希的基本原理. 为了简单起见,本文以服务器上的磁盘为例. 为了确保在设备发生故障时数据分发的一致性和数据迁移的一致性,一致的哈希将磁盘划分为更多的虚拟分区,每个虚拟分区都是哈希环上的一个节点. 整个环的最大间隔是0到32位,并且它们是端对端连接的. 计算数据(或数据名称)的哈希值时,它必须落入哈希环的特定部分,然后在顺时针方向上必须找到一个节点. 然后,该节点就是存储数据的地方.
Swift中存储的整个数据定位算法均基于上述一致的哈希. 在Swift对象存储中,帐户名/容器名/对象名的三个名称构成一个位置标识符,并且可以通过唯一标识符来计算整数. 在存储设备方面,Swift构建了一个虚拟分区表. 该表的大小是在创建集群时确定的(通常为数十万). 该表实际上是一个数组. 这样,基于上面计算的整数值和该数组,可以通过一致的哈希算法确定整数在数组中的位置. 阵列中的每一项都是3数据副本(或其他副本)的设备信息(包括服务器和磁盘信息). 即,在以上计算之后,可以确定数据存储器的特定位置. 这样,Swift可以将请求重定向到设备进行处理.

图6 Swift数据定位
以上计算过程在称为Proxy的服务中执行,该服务可部署在群集中. 因此,可以共享请求的负载,而不会成为性能瓶颈.
本文介绍了3种最常见的分布式存储体系结构和存储格式. 其他存储架构基本上都是基于上述架构,并且没有太大变化. 因此,了解上述架构将对理解其他分布式存储有很大帮助. 由于篇幅所限,本文不是很详细,下面的文章将更详细地介绍每种体系结构的详细信息.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-186656-1.html
那持有的阿里巴巴要不要卖了
我们能不能少替对方考虑