摘要

近年来,云存储和对象存储是存储界新兴的两门技术。云存储平台由一系列大规模的相互关联的数据服务器组成,为用户提供稳定而且巨大的存储空间。在传统的存储设备中文件单纯以数据块的形式存放在存储设备中。存储设备维护从逻辑数据块到物理数据块的映射。存储设备管理数据块,但是并不能识别文件,和文件相关联的元数据只是文件系统的一部分。用户对文件的请求被传达到设备,但是用户对服务质量的需求并没有反映到设备上,在设备调度的时候并没有正确反映出用户需求。这篇文章主要是想从服务质量的角度,使用面向对象的分析方法来讨论集群和网格存储系统的设计。这里集合了多篇看似不同类型的文章在不同方向上所做的努力,想找到一种唯一的存储平台。这种存储平台下,所有的数据被组织到一起供人类分析和轻易使用。当前,一些深刻的变革正在发生,设备变成了智能设备,数据对象也有了自主的思想和行为。但是这些对象的群体性行为却很少被提及。构想中的系统,在这样一个由多种不同类型的对象组成的生态系统中引入了群体意识。由单纯的块存储发展到对象存储,存储设备认识了数据对象,现在我们把所有数据对象当作一个群体,更进一步来优化存储系统。在构想中的系统中,我们考虑的是存储系统对服务质量的满足,而不单单是提高吞吐量。

1. 服务质量的分类

存储服务的质量是在早期的存储系统中没有明确的一个概念。存储系统发展到现在存储容量和性能得到了很大的提升,但是围绕着存储系统的应用也是同步增长并对存储系统提出了更高的甚至是无上限的要求。现今的存储系统的应用表现在几个方面:一是应用呈现多样化,如,视频、游戏、文档、邮件、即时消息保存、博客、微博客等等;二是客户数量增多,现代人更多的接触网络使得网络应用迅速普及,同时对分布式或者云存储云计算等提出了更高的要求。面对这样庞大的数据请求,我们必需对它们进行一定的分类。人类在看待纷繁复杂的客观世界的时候,也是对各种事物先进行分类,并根据分类给予定义。正所谓名不正则言不顺。

事实上在早期的存储中,对数据请求也是有一定在分类的,只不过对这些所有请求可能都划归为了一类,进行了统一的操作和管理。传统的文件系统在进行文件服务的时候并不意识到是由哪个应用在发起请求,而在下端则进行了统一的磁盘调度管理。对文件检索以及分布式的文件系统更是没有做足工作。后来在NAS的基础上出现几种网络文件系统,并针对特定的应用环境做过一定的优化。但是其本质思想仍然和传统的文件系统一样,不能应对多样化的服务质量需求。由于文件数量爆发性增长,对文件检索的要求越来越越高,检索也从文件级别深入到语义级别,传统的文件系统在文件检索方面同样表现不好。现今的存储架构中,网络以成为其中非常重要非常关键的一个组成部分。带宽作为一种资源和存储资源一样,也要受到重视。一个存取请求应该连同对服务质量的需求一起发送给存储设备,让存储系统能在后台对资源做出一个最优的调度策略。

对于现今复杂而不断变化的存储系统及前端请求,使用面向对象的设计与开发方法可能更有效并且更易于使用和扩展。在对象存储系统中,数据对象的请求要比块级请求或者文件请求能传送更多的信息给下层,包括服务质量需求等,同时又给了更多的调度自由给下层,所以下层可以更好的来优化调度。在传统的存储架构中,当多个客户同时发起文件请求或者块级请求时,作为存储设备并不知道这些请求对服务质量的要求,通常只对先到达的请求做出响应,这显然不能满足多种应用下多种服务质量的需求。在应用对象存储的系统模型中,可以对服务质量大致做三个级别的区分:

  1. 对象级服务质量。对象级服务质量是针对最一般类型的服务质量需求说的。例如,对于一个视频文件对象,最一般的操作就是文件的播放,这一操作需要保证从存储设备到客户端一个比较稳定的4M/s的数据传输带宽。
  2. 对话级服务质量。同样对于视频文件来说,我们定义了最一般的播放操作的服务质量需求,这时给它一个4M/s的带宽已经足够了。但是对于视频文件的复制、上传和下载等操作,我们还需要定义特定的对话级的服务质量,在这种请问下可能需要分配不同的带宽。由于这种特殊的服务质量需求只存在于这种特殊的对话期,所以命名为对话级服务质量。
  3. 操作级服务质量。一个对话中可能要完成很多个操作。在更特殊的情况下,客户应用程序可能会在特定操作下请求一定量的数据,而这种操作可能有一个特定的服务质量需求,可以给此种操作定义操作级服务质量。

这里定义了三个级别的服务质量,对于具体的文件对象来说又可以灵活运用。在此基础上可以加上权限管理,例如对于一般权限只给予对象级服务质量,而对话级和操作级服务质量需要更高的客户权限。另外,部分客户可能需要统计意义上的服务质量,例如他们可能需要一定时间内的平均带宽或者平均响应时间。还要注意到,服务质量的级别和服务质量的属性是相互独立的。例如,上面对于视频文件的服务质量更多的考虑到带宽和带宽波动,但是对于一个游戏服务器更多的可能还要考虑到延迟。对于不同的服务质量属性可以在不同的服务质量级别上给予不同的定义,这相当于一个二维或多维的数组。

在给不同种服务质量属性在不同服务质量级别给予定义后,一个客户在请求某一个文件对象时,同时会告知对象存储设备他对服务质量的要求。对象存储设备在对客户权限进行验证并批准该请求后,在满足服务质量的前提下还要在后台做一定的资源调度上的优化。

2. 数据进化与动态资源管理

2.1 数据对象的进化

数据对象在其出生到死亡的生存期内并不是一成不变的,而是不断发展变化的。我们称这种发展变化的行为为数据进化。数据进化主要表现在三个,这三个方面也是数据对象的三个行为:

  1. 数据更新。客户在使用数据对象的时候会进行数据的更改。这一行为在分布式的架构中变得有些复杂。如果有多个用户在同时更新数据对象,如果数据对象分布在多个存储设备上,如果数据对象在多个存储服务器上存在镜像,在这些情况下简单的数据更新将不能满足需要,必需制定一个数据更新的规则来约束用户行为。我们可以把数据对象分解成很多小的数据对象,分别存储在不同的存储介质上,这样就可以增加在读取数据时的并行度。另外,在这种方式下,如果多个用户同时请求修改数据,可以把各个小的数据对象的修改权限分配给各个用户,每个小的数据对象在同一时刻只能有一个用户获得修改权限。当服务器得到各个用户的修改行为后,再更新服务器上的数据,同时把各个用户的修改行为发布给当前请求该数据对象的用户更新各用户得到的数据。
  2. 数据生存状态变化。数据对象在生存于存储介质上的。在分布式系统中,一个数据对象可能被分解为许多小的数据对象分散的存储在不同的存储介质上。也可能在多个存储服务器上留有数据的镜像。数据对象有其一定的健壮性,当数据对象在不同的存储设备上有多个备份或者有较多的冗余编码,我们就可以认为这个数据对象是健壮的。一个数据对象越健壮,数据遭到丢失或者破坏后恢复的可能性越大,但同时要对这个数据对象做任何更改也将更加困难。数据对象的健壮性也跟其所生存的存储设备的健壮性有关。一个数据对象在生存期内其健壮性是可能根据需要或系统运行状态发生变化的。对一个数据对象的访问除开网络带宽等,在存储设备上的访问速度也会影响读写性能。冗余编码越多可能造成的读写时的计算开销越大,也使I/O性能降低。把数据对象分解为小块数据对象存储可增加读写时的并行度,对提高I/O性能很有帮助,但是会减小多个I/O之间的并行度。数据在存储介质中的连续性会影响寻址的速度,但是也要视情况而定。当用户请求一个视频对象时,一般只需要4M/s的带宽,远远小于一个存储系统的带宽。这时把视频数据对象连续存放在存储设备中以减小寻道时间意义也不大,因为在为该视频对象请求服务的同时存储系统必然还要服务其它的客户请求。找到真正需要连续访问的数据可能才是行之有效的选择。
  3. 属性变化。数据对象属性的变化可能有很多方面。数据对象的属性包括了一些和数据检索相关的属性,这些属性造成了数据对象的语义相关性。这种语义可能是人为添加的,比如标签,也可能是系统经过数据深入挖掘自动生成的主义相关。

2.2 基于瓶颈的带宽控制

一个存储系统所拥有的资源主要有存储介质和网络带宽。要设计一个自适应的存储系统云,就要根据系统运行状态自动调整资源的调度。而调度的依据就是找到系统运行的瓶颈,并且找到系统优化的方法。必需有一种机制能把系统各部分的运行状态反馈给控制系统。

可能产生瓶颈的地方主要包括三个部分:客户端网络带宽、系统网络带宽和存储设备带宽。对各个瓶颈段分析如下:

  1. 如果客户端网络带宽的总和大于存储系统的网络带宽,那么瓶颈就在系统带宽上。解决的办法只有减小数据质量,或者减小分配给客户的带宽,或者在存储系统云中的其它服务器上生成数据镜像,由其它服务器同时提供数据服务。
  2. 如果瓶颈出现在存储设备上,就得增加数据访问的并行性,数据对象分解成很多小的数据对象并且尽量让数据对象连续存放在存储介质上。
  3. 如果瓶颈出现在客户端网络带宽上,则可相应减小分配给客户的带宽,让系统有更多的带宽给其它客户服务。

2.3 数据对象的自我迁移和复制

一个数据对象可以自己动态的复制和移动自己(的身体),由系统自己决定是否这样做,而不是由特殊的工具。为了满足新的性能表现,可靠性、健壮性和效率等要求,一个数据对象可以自发的移动自己到新的设备上、或者在新的设备上制作一个副本或者重组自己在某个设备上的数据块分布情况等。

设备对象和数据对象的关系并不是谁从属于谁,而是一个数据对象寄生在设备对象上。我们可以用一个比较形象的例子来说明这个问题。我们把数据对象比作一个集体,一个集体由多个个人组成,正如把数据对象分成小的数据对象分开存放一样;设备对象就像房子,由多个单间房子一起组成一栋楼,由多栋楼组成一个楼群,这些就像更高级的设备对象。我们把人可以一起住进单间房子里,但是召唤这些人的时候他们必需得从一间房子里出来,必然花更多时间。如果每个人分开住,召唤的时候他们一次就可以全部从房子里出来。但是如果这些房子都在一栋楼上,他们可能在楼道发生拥挤,这时可以把他们分开住进不同的楼房子。这个调度过程完全由这个集体的领导完成,由这个集体自己优化,用户要做的只需要去请求这个集体。如果在远处的某个用户要请求这个集体,那么在这个路程上就得花费不少代价,这时就可以在离这个用户比较近的公寓制作和一个这个集体一样的副本,这个过程也由这个集体自己决定。一个能自动完成这些调度的数据对象就是一个智能的数据对象。

数据对象不仅应该被视为有独立个体行为的对象,它同时还应该有其群体行为。优秀的数据对象才得到更多的进化,才能占据更优的存储设备。

2.4 发生数据转移复制的几种情况

数据对象能做的调节就是移动和复制自身,来提高性能以满足一定的用户需求。发生数据转移或复制的情况有下面几种:

  1. 磁盘调度效率降低。不论数据是以什么形态组织在存储设备上,随着存储设备使用时间的变长,都会导致数据对象在磁盘上的分布变得散乱。这将会导致磁盘寻道时间变长,影响磁盘工作效率。数据对象要自发的定期整理碎片,或者在一定条件的触发下整理磁盘碎片。
  2. 数据服务器太远。分布式存储系统就是要让使用者无论在何处都可以快速的访问相关的数据资源。由于使用者的地理位置的不同,可能某个用户要访问远处的某个数据对象,网络的传输将会影响用户得到的性能。数据对象要识别这种因为地域差异导致的性能下降,统计用户使用情况后再决定是否在离用户较近的服务器上创建一个同样的自身拷贝或者决定是否将自身移动到这个服务器上。当前社会人口流动性大增,用户可能在某一地域性服务器上存放了个人数据。但是当他移动到别一地域时,这一数据就变成了远程数据,对其访问将受到远距离网络传输的影响。数据对象需要能根据访问者的这种数据变化,积极的移动到用户所在地域的服务器上。或者如果用户跨跃较大的地域,就应该在不同地域的服务器上创建相同的数据副本。当然,这一数据对象的移动或者副本的创建也可以在受权的条件下完成,或者可以在用户手动操作的情况下完成。
  3. 存储设备对象对数据块的存储位置优化。对于磁盘调度来说把数据对象完全按顺序存放也许并不是最优的性能优化办法。例如,对于视频文件的播放需要4M/s的数据传输率已经足够,不一定要保证数据连续存放就可以达到这个传输速率。如果有两个视频文件都需要4M/s的传输速率,而磁盘连续访问的数据传输速度正好可以达到8M/s,这时何不把两个视频文件切碎后交叉存放,这样在磁盘连续访问的时候就可以同时很好的服务两个用户请求。如何实现数据块最优化排序在算法上存在一定的难度。是找到语义相关联对象还是找到性能需求相吻合的对象放在一起还需要争论。

2.5 设备对象的属性

在设计这样一个分布式对象存储系统的时候,是使用虚拟存储设备还是真实存储设备呢?使用虚拟存储设备相对于使用物理存储设备没有的好处有:虚拟存储设备的容量是可以变动的;它的生存环境也是可以夸多个物理存储设备;可靠性等都可以优于物理存储设备。但是使用虚拟存储设备将会在系统层次上多加一层,并增加系统复杂度,所以并不一定是很好的选择。增加虚拟存储设备这样一个中间层抽象,由于其属性的不确定性,反倒给数据对象识别宿主的属性带来困扰。所以放弃虚拟存储设备这样一个中间层可能是更好的选择。而且虚拟存储技术的相关理论还可以很好的运用到数据对象和设备对象的设计中来。在构想中的系统里,数据对象是有其自主行为的。它们识别设备对象,根据设备对象的属性来选择是否“寄宿”。设备对象同样拥有管理数据对象的一定的权力。所以我们有必要给多种多样的存储设备分类,并确定它们的属性。我们认为存储系统总是处于工作状态,所以更多的要分析其动态性能而不是其静态性能。

  1. 剩余容量。我们分析的是剩余容量而不是设备总的容量,总的容量并不是数据对象能否存储在设备中的判断依据。
  2. 剩余存储带宽。同上面一样,我们需要的是获知剩余的存储带宽。但是这是一个无法准确预计的值。存储总带宽是跟用户请求相关的,和数据在物理存储设备上的分布情况有关。要想得到一个合理的估计需要得到一定的统计数据。
  3. 剩余网络带宽。存储设备总是接在网上的,用户通过网络访问数据对象。网络带宽也是存储系统的资源之一。网络带宽也同样是个不确定的值,跟当前网络的阻塞请问有关。要尽量避免阻塞,合理的利用网络。
  4. 位置属性。网络速度具有一定的区域性质。存储设备的位置也会影响数据对象的访问。

以上属性是由存储系统中的设备对象中总结而来,但是并不是每一种调和对象都包含上面所有属性。设备对象大致包括:单盘对象、RAID对象(包括RAID1、RAID2等,这些RAID对象有它们特殊的级别属性),光纤对象(在有光纤组成的存储系统中,光纤同网络一样是存储系统中一种需要适当分配和调度的资源),网络设备对象等。

3. 对象存储集群架构

我认为,当前存储系统的架构,在硬件结构的组织上没有发生太大变化。对存储所做的努力大部分集中在其逻辑结构上,集中在其资源管理的算法上。为了能够支持从任何地方任何时间访问数据对象,我们把数据服务器按地域组织。每个地域包含一个区域性的元数据服务器,集中管理该区域内的数据对象和客户的信息。

一个区域性的元数据服务器维护所有在其范围内的所有对象,包括管理安全保护相关信息以及区域内及区域外的数据对象的访问权限信息。区域性的元数据服务器为每个数据对象提供其所在设备对象的查找服务。同时,区域性的元数据服务器还管理所有在该区域注册的设备对象,并保存所有用户访问信息来为数据迁移或复制等提供依据。区域性的元数据服务器是分布式工作的,当一个数据对象在一个元数据服务器上查找失败时,将会到其它区域的元数据服务器上查找。

4. 总结

上面所描述的存储系统架构是在综合几篇文章的思想的基础上,加上我自己的猜想架构而成的。基本含盖了一个完整的对象存储系统云的设计。主要创新的思想是运用了类与对象的分析方法,让各种对象在抽象的层次上生动起来。所有对象,包括各种不同属性的数据对象和设备对象,在抽象意义上都似乎有了自主的意识和行为。由这些对象又组成了一个完整的动态的系统,不断的根据用户的需求的变化和内部属性的变化做着调整。在系统的基础上,它们又有了群体意识,合作起来以求达到最好的服务质量。这个系统的设计过程是脚踏实地的,其实现也是有根据的,不是一个单纯的幻想。

5. 参考文献

  1. David H.C. Du. University of MinnesotaIntelligent Storage for Information Retrieval. Proceedings of the International Conference on Next Generation Web Services Practices (NWeSP’05), 2005.
  2. Yingping Lu, D. H. Du, and T. Ruwart. Qos provisioning framework for an osd-based storage system. In Proceedings of the Conference on Mass Storage Systems and Technologies (MSST2005), Apr. 2005.
  3. Yinliang Yue, Fang Wang, Dan Feng. iOSDC : A Novel Autonomous Intelligent OSD Cluster. 2007 International Conference on Convergence Information Technology. 2007.
  4. Ke Xu, Meina Song, Xiaoqi Zhang, Junde Song. A Cloud Computing Platform Based on P2P. IEEE. 2009.
  5. ZHAN Ying, SUN Yong. Cloud Storage Management Technology. 2009 Second International Conference on Information and Computing Science. 2009.
  6. GUI Bingxiang, FENG Hongcai. An New Data Parallelism Approach with High Performace Clouds. 2009 Pacific-Asia Conference on Circuits,Communications and System. 2009.
  7. Ananth Devulapalli, Dennis Dalessandro, Pete Wyckoff, Nawab Ali. Attribute Storage Design for Object-based Storage Devices. 24th IEEE Conference on Mass Storage Systems and Technologies (MSST 2007). 2007.
  8. Shuibing He, Dan Feng. Implementation and Performance Evaluation of an Object-based Storage Device. Fourth International Workshop on Storage Network Architecture and Parallel I/Os. Nov. 2007.
  9. Ravin Ahuja, Asok De, G.Gabrani. A DYNAMIC PRIORITY METASCHEDULER FOR AN SLA-BASED STORAGE GRID. IEEE. 2009.

10. Qingsong Wei, Zhixiang Li, A Differentiated Storage Service in Object-based Storage System. IEEE. 2008.

Related posts:

  1. 对象存储服务质量