第一章 海量网络存储系统概述(7)

2019-05-18 13:22

播测试自己的加入可能增加了CPU或者存储负载,使得一个存取密集型trace也许在重播系统中无法执行,因此在重播时必须仔细考虑其执行速度。

在使用trace进行测试时,还必须考虑trace的失效性,因为10年前的trace显然反映当前应用的实际运行情况。

1.6.2 系统仿真

此外,由于存储系统的复杂性,包含大量软件部件,如果在真实系统上验证和优化方案显然是一个成本很高的工作,使得设计者必须花费大量精力掌握各种系统和部件的实现细节,难以集中关注自己的主要设计目标;另一方面,也会延长设计周期;同时,原型系统特别是大规模系统的购置和维护成本也是非常高的,并不是所有的研究工作都能配置真实环境的。因此,通过软件仿真存储系统的运行就成为一种高效的研究手段。

DiskSim是一种高效、精确和可配置的磁盘系统仿真工具,由卡内基梅隆大学并行数据实验室开发的,目前已成为存储领域最为流行的仿真工具。它包括所有的第二级存储部件,包括设备驱动、总线、控制器、磁盘驱动器等。并且能够支持外部满足格式基于trace的I/O发生器和内部的合成负载,目前也能支持大规模存储系统的仿真。由于DiskSim是一个开源的项目,因此很多设计者把自己的优化设计方案在DiskSim中实现,并通过运行DiskSim来评价其设计方案。

而NS(Network Simulator)是一个开源的基于离散时间的网络仿真器,被广泛用于网络领域的研究,可以模拟各种协议和网络的数据传输过程。NS建立在C++基础之上,通过OTcl和Tcl提供仿真接口。用户可以使用OTcl脚本描述网络的拓扑结构,并可以设置特定的参数。NS于1989年开发出来是REAL网络仿真器的变种。从1995年开始NS获得了DARPA的支持,并在多个研究者和机构合作下共同开发。

事实上,大规模存储系统总是基于网络的,因此使用NS2可以模拟网络存储系统中网络运行情况、发掘和研究网络对于存储系统整体性能的影响。

1.6.3 优化方法

对于数据存储系统的优化一直是一个重要的工作。无论作为设计者构建新的存储技术或者系统,还是系统管理员维护系统的正常运行都需要对于系统进行优化。当然优化目标往往基于不同的应用需求,其衡量的方法和指标也是不同的。但提高系统的运行性能一直是优化的主要目标,存储系统的性能主要体现对于负载的平均响应时间以及系统的吞吐率。

数据存储系统的性能改善一般从三个方面入手,一个是部件的物理性能增加,二是系统结构的设计和优化,包括物理结构和逻辑结构,例如RAID5技术就可以提高系统的性能。三是针对特定应用程序的I/O负载进行优化,提高特定存储模式下的存取性能。

对于数据密集型应用如科学计算等需要存储系统有很高的性能。I/O优化是提高存储系统性能的重要手段{Meenakshi A. Kandaswamy, 2002 #13}。

一些常用提供存储系统性能的原则包括: ? 加快经常性事件,针对经常性行为优化系统设计; ? 增加新语义信息优化调度; ? 使用冗余的方法提高可靠性; ? 使用cache和预取优化存储系统性能; ? 使用异步I/O替代同步I/O; ? 通过并发性提供系统吞吐量; 下面列举几种常用的I/O优化方法。

1. 数据缓存和预取

缓存技术(cache)是一种最常用的提高计算机系统性能的有效方法{Hu, 2002 #15}。在存储系统中,利用数据的空间局域性和时间局域性设计cache机制,能够提高数据存取性能,事实上在存储系统的每一层都大量使用cache技术,例如文件系统就有很大的buffer用于缓存底层存储设备的数据{Hu, 2002 #17};而通过在客户端设置缓存可能减小客户端和网络存储设备的实际数据交换次数。也可以利用不同存储设备性能容量之间差异使用上层高速存储部件作为下层低速存储部件的数据缓存,例如使用磁盘作为磁带库的cache,构建虚拟磁带库。但缓存方式也有其负面影响,例如多级的缓存会产生数据不一致的情况。同时缓存机制的有效性也严重依赖于负载的行为特征。

对于存取模式表现出规则的程序,可以通过算法预测其后续的I/O请求,通过预取机制充分利用系统带宽,仅仅用在有额外的带宽情况下,提前读取数据到缓存中,可以极大的提高I/O性能{Xin Chen, 2003 #20}。大部分采用预取的程序都使用异步I/O从文件系统中读数据{Yan Solihin, 2003 #23}。

这种方法严重依赖于对存取模式的预测,如果存取模式不匹配,不但不会提高性能,还会因为多余的I/O开销增加请求的响应时间,同时由于占用缓冲区可能会导致请求的命中率下降,从而降低整体性能。

2. 针对设备存取特性优化

除了提高单个存储设备的物理性能外,根据存储介质物理存取特点,优化存取过程也是提高存取性能的有效方法。

例如文献{Jiri Schindler, 2003 #11}介绍了一种在磁盘的磁道边界内定位和存取数据技术,系统避免大部分传统的延迟和跨磁道的延迟。通过这种方法对于中等数据大小(100-500KB)提高了50%的性能。可以根据磁盘外道的数据传输率比内道高的特点,把热点数据放到外道,提供这些数据的响应时间。

3. 理解上层操作语义

标准接口和操作语义往往会过滤掉上层I/O行为的有用信息,造成产生不必要的负载和延迟。例如应用程序仅仅需要读取某一文件的头1KB信息,那就没有必要等待整个文件被读进内存。

文献{Muthian Sivathanu, 2003 #12}提出了一种理解语义的磁盘系统(semantically-smart disk system,SDS)。也就是磁盘系统能够理解上层文件系统的数据结构和操作行为,从而根据这些信息优化磁盘系统性能。

4. 合并顺序小I/O

无论I/O的大小,它们往往都需要对于请求本身的处理过程,因此处理大I/O比小I/O对存储系统而言能更好的发挥其吞吐率。

Collective I/O{MTara M. Madhyastha, 2002 #14}通常使用在多处理器系统中,其基本思想是使用一个处理器代表其它处理器批量执行I/O。这种技术通常用在数据的逻辑分布不同于物理分布的情况。这种方法必须在I/O完成后,把相应的数据发送给对应的处理器,所以也称为两阶段I/O。

Del Rosario首先提出了这种方法,每个处理器读具有最小开销磁盘上的数据,然后通过网络进行数据交换。虽然这种方法增加了通讯开销,但它通过合并多个I/O到一个较大的I/O,从而减少I/O请求个数,提高I/O效率。Collective I/O已经在PASSION库和MPI-IO中实现。

这种思想也在普通文件系统I/O调度中使用,如常用的电梯调度算法,通过调度程序把多个分离的I/O合并成一个大的顺序I/O,从而提供I/O性能。

5. 数据布局的优化

海量存储系统中具有不同性能的软硬件部件,而不同数据的访问热度也各不相同{Ng W.T., 2001 #24}。因此系统能够根据数据的访问情况结合各个部件的存取特征,合理在各存储层次组织数据就会有更好的整体性能。

存储层次的横向方面,把热点数据放到高性能设备上面。例如本地磁盘一般比远程存储磁盘有更短的I/O路径,因此有较快的响应时间;而在RAID系统中,RAID1一般比RAID5有更好的性能,因此在包含多种RAID阵列的存储系统中可以把高频访问数据放到RAID1,HP公司在其AutoRAID技术中就是采用这种思想。

在存储层次的纵向方面,把热点数据放到离处理器更近的地方。可以通过编译器或者其它的优化工具。它尤其适合大数据量、重复数据执行的应用,如多媒体中的热门电影。这种方法采用的是一种系统全局Cache思想。这表现在存储系统内设备性能是分层的,如Cache或者内存相对于磁盘而言具有更好的性能,但容量相对很小;特别是在网络存储环境,不同的存储设备及其在系统中所处的位置不同有不同的性能和容量。合理的文件布局使得数据更接近处理设备从而提供整体性能{E., 2002 #26} {Tanenbaum, 2002 #27}。

6. 负载平衡和I/O并发性

平衡I/O是把I/O请求在多个存储设备中均匀分布,从而减少因为一个存储设备负载过重,影响系统的整体性能。同时,可以进一步通过存储设备的并行提高系统的吞吐率。RAID0就是一种很好的平衡I/O和I/O并发方法。

尤其在固态盘中,存储空间实际上由多个芯片组成,固态盘控制器把数据尽量均匀的分配到所有芯片上,通过每个芯片的并发传输提高系统的整体吞吐率。而且考虑到flash擦除次数有限的特性,尽量分散负载还能起到损耗平衡的作用{Euiseong Seo, 2008 #69}。

7. 减少不比要的数据传输

在数据存储系统中往往包含一个数据块的多个拷贝,包括在多个节点之间以及内存和磁盘之间。为了比较两个数据块或者文件的一致性时需要读取整个数据块或者文件。现在可以通过Hash数据块的内容来建立数据块的索引或者比较数据块的差异,从而有效的减少实际的存储带宽占用。这需要使用一个很少冲突的Hash函数,才能保证数据块的Hash值是唯一的,因此称这个Hash值为数据块的指纹(fingerprint)。许多研究使用加密算法实现这种Hash算法,例如使用NIST(US National Institute for Standards and Technology,NIST) {Technology, May 2001 #28}的sha1算法作为Hash函数。它在安全系统中是一个著名的加密算法,很少产生冲突。sha1算法的输出是20个字节,在Pentium III 700MHZ的处理器上计算8KB的数据块需要130ms,每秒大约60MB。可以满足像备份系统这样的实际存储需要。从另一个方面,因为这种方法减少了实际的存储带宽占用,因此提高了如快照或者备份等存储系统的性能。

还有其它很多方法提高存储系统的性能,而且很多提高性能的方法往往交叉在一起使用。

1.7 本章小结

数据容量和重要性的日益增加对于存储系统提出了巨大的挑战。设计大容量、高性能、可扩展和高可用的存储系统,特别是高性价比的海量网络存储系统受到研究界和工业界更大的重视。

本章首先对于存储系统的整体概念进行了介绍,然后讨论了针对存储系统的评价指标和功能需要。为了进一步理解存储系统运行,讨论了存取路径和存取接口的分析方法;为了理

解海量网络存储系统和内部多个存储子系统的关系,我们提出了存储空间的概念,并分析其组织和管理原理;最后简单介绍了针对存储系统的设计方法,包括常用的测试工具、仿真工具以及优化方法。


第一章 海量网络存储系统概述(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:会计基础教案4-1 企业主要经济业务核算 - 资金筹集业务的核算

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: