DSM 概念

分布式共享存储(Distributed shared storage system)系统是将分散的存储系统通过网络连接起来的系统,兼有紧密耦合分布式系统容易编程和松散耦合分布式系统容易扩充规模的优点,程序设计人员不必考虑数据分配,编程工作是单机情况的简单扩充,进程迁移和动态分配实现简单,而且,可以和松散耦合一样扩大系统规模,当增加处理器的数目时不必考虑CPU之间的通信。

简介

随着处理器及存储速度物理极限的渐渐接近,用多处理器来增强计算机的能力变得越来越有吸引力。

目前,紧密祸合的共享存储多处理器和松散祸合的分布式存储多处理器较为流行。

一个紧密藕合的多处理器系统包括多个CPU及一个全局的物理存储,是单个CPU系统的一个自然扩展,比较容易编程。

但是,这种类型的多处理器存在一个很严重的瓶颈:

通过一条公共总线访问主存,限制了系统规模,而且过多地增加了总线的负担(当然,为解决上述问题,也有通过多条公共总线访问主存的)。

松散祸合分布式存储多处理器却没有这个问题。

通过一个高速的互联网络连接起来的一些独立计算机组成了这种系统。

如果设计人员精心设计网络的拓扑结构,这个系统往往可以比一个紧密祸合系统包含更多数量级的处理器。

但是,这种系统井发执行的所有通信都必须在网络上进行,编程模式局限于信息传输方式,增加了编写程序的难度。

分布式共享存储(DSM)系统兼有紧密祸合分布式系统容易编程和松散藕合分布式系统容易打充规模的优点。

所以,从20世纪8()年代初开如,DSM 就一直是一个很活跃的研究领域。

特点

编程的简易性

分布式共享存储系统是在松散耦合的分布式环境下,实现的一个虚拟的MIMD-SM模型,在这个模型中的并行计算、进程间通信是通过动态读取共享存储器中的共享数据进行的,进程间的通信和共享数据对程序员透明,减轻了程序设计者的负担

可移植性

就目前的软件技术发展水平,我们在设计、实现及使用分布式系统上没有太多的经验,专门为分布式系统编写的软件更是非常的少.

所以,分布式系统的一个研究目标就是能够把现有的适合于单机的操作系统移植到分布式系统中.

使用“共享存储”是解决“分布式系统软件危机”的一种重要方法.由于在分布式系统中,程序可见的地址空间是给松散耦合处理器提供的一个虚拟地址空间,所以面向单一空间的现有的软件可以很方便地移植到使用共享存储方式的分布式系统中.

相反,如果使用纯粹的松散耦合系统,则所有的软件都必须经过艰难的过程才能够移植过来.

廉价性

分布式系统必然需要大量的存储.和紧密耦合系统相比,分布式存储的好处是可通过若干相对容量较小的存储的叠加来代替单个海量存储器,从而降低了成本.可以说,这一特点也是继承了分布式系统的廉价性的特点.

大规模模型

分布式系统存在的硬件瓶颈在于通信网络的容量.分布式共享存储的使用,一方面降低了使用单个总线进行数据传输所带来的过载问题;

另一方面也会依赖于现有网络的带宽,网络的可能饱和约束着分布式共享存储系统的发展.

但是,随着硬件技术的发展,通信网络的容量和速度瓶颈正在逐步消除,这一工业变革必然对分布式共享存储系统产生影响.

由于采用了分布式共享存储的方式,则处理机的数量可以更容易地扩充,从而可以在更大规模的环境下建立分布式系统.

分布式存储系统对进程的影响在多处理机系统中,两个或者多个进程之间对象的共享非常重要,许多情况下都是一个问题由一组在不同CPU上并行运行的协同进程共同解决的.

这些进程可能需要不断访问共同的缓存、表或者其他数据结构.操作系统允许这种共享的发生十分必要.

共享的另一个重要用途是进程的创建.传统创立进程的方法是复制所有必要的页面,然后将这些拷贝映射到子进程的地址空间.如果没有采用共享存储,则必须在每一个处理机的存储器上拷贝一个父进程的拷贝,这样导致对整个系统的存储器浪费过大.

设计方法

分布式共享存储系统的研究目标及问题类似于对多处理器高速缓存、网络文件系统、多处理器存储访问及分布式数据库管理系统的研究.

由于种种相似性,这些领域中的许多算法和经验可以应用于分布式共享存储系统.

实现方式

一般而言,分布式共享存储系统由下述3种方法实现.

  1. 硬件实现,将传统的缓冲技术扩展为较大规模的结构.

  2. 操作系统及库实现.通过虚拟存储管理机制实现共享和一致性.

  3. 编译器实现.通过编译器,将共享访问自动转换成并发和耦合单元.

这3种方法都以工作站或者微机的公共网络、专用消息传输机、定制硬件甚至异构系统的方式设计.

考虑问题

具体来说,设计分布式共享存储系统需要考虑以下几方面问题.

共享地址空间的结构和粒度

共享地址空间结构是指存储器中共享数据的布局方法,它依赖于应用程序类型,地址空间可以是平面的、分段的或物理的.粒度是指共享单元的大小,可以是字节、字、页或者复杂的数据结构.

一致性协议

一致性问题的关键是保证读操作时总是返回最近修改的值.

如果共享数据没有拷贝,那么存储一致性就没有问题,但是这样就会产生系统瓶颈并丢失并行性这一优点.

为了增加并行性,系统通常允许复制共享数据.

复制导致了一致性协议的复杂性.控制复制有两种协议:写无效和写更新协议.在写无效方式下,一块数据可能有多个只读副本,但只有一个可写副本,每进行一次写操作,除了一个有效以外,其他副本都无效;在写更新方式下,每次写都要对所有的副本进行更新.

同步

在并发访问的情况下,为维护共享数据的一致性,除一致性协议以外,还需要对访问共享数据的活动进行同步,例如通过信号量,事件计数或者加锁等方式来实现同步.

替换策略

在允许数据迁移的系统中,当共享数据占满了缓存器的有效空间时,必须决定将那些数据移出,同时,还要考虑移向何方.

异构性

如何实现对两个具有不同体系结构的存储器享是很难解决的问题,两个存储器对基本数据类型有不同的表达方式(比如采用数制编码方式不同)等,此类问题仍在探索中.

关键问题

目前,分布式共享存储系统研究中涉及的几个关键性问题包括:

  • 一致性算法.分布式共享存储研究的关键就是对存储访问的一致性,而一致性算法一直是研究人员关注的焦点.

  • 线程分配算法.已有的分布式共享存储系统大多采用单线程的机制,而对多线程分布式共享存储系统中的通信开销和线程分配问题还处在探索阶段.

  • 可靠性.分布式系统因为通过网路传输数据,那么可靠性就是一个很突出的问题.

  • 性能评测.评测分布式系统的性能对于进一步改进工作、验证已有的成果有着很大的益处.

  • 数据传输速度.加快分布式共享存储系统的数据传输,对于加快运算速度有着至关重要的作用.

  • 文件系统的集成.只有在操作系统中把分布式共享存储技术、存储器管理和文件系统结合起来,才能充分发挥分布共享存储技术所具有的能力.

拓展阅读

分布式共享存储系统