资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
高性能文件服务器的设计罗伯特.万.雷内塞 安德鲁.S.塔嫩鲍姆 安妮塔阿姆斯特丹自由大学计算机科学研究部Bullet文件服务器是一个创新的文件服务器,从三个因素来说它胜于传统服务器,例如SUN公司的网络文件系统。它通过与目前使用中的文件服务器彻底不同的软件设计达到高吞吐量和低延时。每个Bullet文件服务器文件序列不是存储在磁盘存储块中,而是在磁盘和服务器的内存中连续存储。此外,它采用不可变文件的概念,来提高性能,来启用高速缓存,为用户提供一个纯粹的语义模型。这篇论文从细节上描述Bullet服务器的设计和实施。介绍性能的评估措施,同时比较它与其它著名的文件服务器在相同硬件条件下的表现。1.介绍传统的文件系统视为小型机器设计的,如,拥有小容量内存、小容量磁盘的电脑。整点是用尽可能少的资源支撑巨大的文件。为了容许文件的动态增长,文件被分离成固定大小的块散乱分散于磁盘中。块会被动态分配给文件,所以一个大文件会散乱分布于整个磁盘。性能会因为每个块都需要分离存取收到严重影响。当然块管理引进了高开销:需要间接块去管理这些文件和它们的块。电脑小容量内存的一部分被用于保持内存中的一部分文件访问更高效。今天这种情况很大程度上改变了。机器拥有庞大的内存和巨大的磁盘。文件通常在内存中保存的很好。举个例子,1600万字节的文件先如今很普遍,足够去支持在运行中遭遇的大部分文件。测量值告诉我们UNIX系统里中等的文件大小是1K字节,99%的文件小于64K字节。但是,文件系统到现在都没有改变。文件仍然被分成块。萎了利用新技术,块的大小增加了,内存的缓存也被扩大了。这造成了边缘性能的提高。作为Amoeba分布式操作系统工程的一部分,我们特意为现在与未来的电脑和磁盘技术设计实施了一个文件服务器。我们已经投入了足够多的资源去快速完成这个文件服务器。既然相信我们已经达成了这个目标,我们为其命名为子弹文件服务器。它的特点是支持响应、超高速缓存和稳定。这篇论文有六个章节。在接下来的章节中我们会呈现出子弹文件服务器的体系结构模型。在第三章中我们介绍服务器的执行细节,包括数据结构和接口。文件服务器的性能是第四章的主题。第五章中我们将比较子弹文件服务器和其它文件服务器,如SUN的NFS(网络文件系统)。第六章包含的是结论。2. 体系结构模型设计子弹文件服务器背后的目的是处理块模型。事实上,我们选择了从头到位最大程度上维护文件的系统。意思是,文件被连续保存在磁盘,连续缓存在内存,连续保持在进程内存中。这意味着有调度整个文件的选项。结果就是,处理器只能对匹配物理内存的文件进行操作。这对我们如何存储文件数据结构、如何分配进程给应用产生了影响。大部分的文件整体存取,整个文件的整体优化比例和性能在别的整体文件传输系统如Andrew ITC文件系统中也提到过。另一个与保持文件连续有密切联系的设计选项,就是保持文件不变。意思就是,在文件上只能有的操作是:创建、检索和删除,而不能有更新操作。当我们想更新一个存储在文件中的数据结构时,我们采用创建一个新的文件存储更新的数据结构代替在源文件上进行更新。换句话说,我们将文件按版本号存储。无论如何,当我们传输整个文件时进行标记,这在文件服务器上不会带来任何处罚。根据Cender文件系统中的说法,版本机制对高速缓存和响应有正面的影响。当然它也说明了有可能在只写一次的存储器如光盘中保存版本。尽管版本机制本身十分有趣,但是由于篇幅的限制我们就不在这里详细介绍了。对于大部分的应用来说这个模型运行良好,但是有的应用就需要我们去寻找不同的解决方式。比如,每次对日志文件添加内容,都需要拷贝整份文件。类似的,对于数据库,一个更新才做可能引发巨大的开销。对于日志文件我们设置了一个分离的服务器,比如基于认证密钥的。在整个设计过程中我们都在为性能、健壮性和可用性做斗争。子弹文件系统是Amoeba分布式操作系统中主要的存储服务器。只有对存储和响应的管理少的时候,性能才能达到最高。同时连续和不变的模型符合文件通常的存取方式。不变涉及到地理不变Amoeba目前在四个不同国家运行和数量的不变可能有上千个进程存取文件。可用性意味着响应需求。由于这些问题和Amoeba分布式操作系统有很强的联系,我们首先将用一个章节来讲述Amoeba,它在数据尤其是大数据如何组织,存储得有效率方面起了重要作用。我们在接下来的张杰将描述Bullet文件接口。2.1AmoebaAmoeba是一个在阿姆斯特丹自由大学设计和实现的分布式操作系统,现在它在阿姆斯特丹的数学和计算机科学中心有了更深远的发展。它基于对象模型,对象是一个抽象的数据类型,对它的操作需要通过远程的步骤调用。Amoeba运行的硬件由四个基本结构组成:工作站、动态可分配处理器、专业化服务、网关。工作站为用户提供接口而且只涉及到会话型任务比如说命令解释和文本编辑。所以它们不处理巨大的或者动态的更改文件。动态可分配处理器一起组成了所谓的处理器池。这些处理器可能被分配用作编译或者文本格式,或者是分散和并行的算法。在别的应用中,我们已经实行了并行的启发式搜索。专业服务器包括例如子弹服务器的文件服务器和目录服务器。目录服务器是和子弹服务器一起配合使用的。它的作用是以一种简单统一的方式控制子弹服务器文件和其它对象的命名和保护。服务器管理Amoeba对象,意思是,它们管理业务的存储和执行。网关目前提供四个不同地区的透明的网站交流(荷兰、英国、挪威、德国)。所有Amoeba的对象都被责任编址并且保护。一个责任由四个部分组成:1) 服务器端口标识管理对象的服务器。它是一个由服务器自己选择并且告知服务器潜在客户的48比特位的独立地址数字。2) 对象编号标识服务器内的对象。例如,一个文件服务器可能管理很多的文件,然后用对象编号在索引节点列表中创建索引。一个索引节点包括文件在硬盘中的位子和会计信息。3) 权限域指定性能持有人对对象有那种访问权限。对于一个文件服务器来说,对文件的权限有读文件和删除文件等。4) 检查域用于保护性能不被伪造和篡改。在文件服务器中可以这样做。每次新建一个文件时服务器生成一个巨大的随机数并且存储在这个文件的索引节点中。文件的容量可以根据服务器的端口、索引节点中文件的索引、需要的权限生成。权限域可以根据权限和索引节点中的随机数生成,加密也是同理。如果稍后,一个客户端表现出文件的性能,它的有效性将通过解密权限域并且将权限和随机数进行对比来检测。这能被缓存以免每次访问都要解密。尽管性能是一个编址、保护对象很便捷的方式,对于人类来说这是不可用的。因此目录服务器规划处了人类可选的ASCII名字。目录是一个两列的表格,第一列包括姓名,第二列包含对应的性能。目录是对象自身,并且可以被性能编址。通过放置目录性能在目录,一个任意的命名结构能够以一种便捷的方式为用户创造。目录服务器为对象提供一个单独的全球命名空间。这允许我们将多个子弹服务器链接成为一个跨越国际边界得到独立巨大的文件服务器。2.2子弹服务器接口文件服务器的简单体系结构模型提前在它简单的接口上。整个文件传输排除了相对复杂的文件访问接口需求。永恒地消除了分离升级操作的需求。版本管理不是文件服务器接口的一部分。子弹接口由四个功能构成:l 子弹.创建(服务器,数据,规格,P因素)性能l 子弹.规格(性能)规格l 子弹.读取(性能,数据)l 子弹.删除(性能)子弹.创建功能是在子弹服务器存储数据的唯一方法。服务器参数指定使用哪个子弹文件服务器。这使用户可以在子弹服务器上使用更多的功能。数据和规格参数描述了要创建的文件的内容。性能会为了后续的使用返回。P因素代表Paranoia因素。这是一个在子弹之前仔细存储文件的措施。穿件能够返回给调用者。如果P因素是零,子弹.创建会在文件被复制到服务器的高速缓存,但又未被复制到硬盘之时立刻返回。这很快,但是如果服务器在短时间内崩溃文件会丢失。如果P因素是一,文件将在客户机恢复之前被存储到一个硬盘中。如果P因素是N,文件将在客户机恢复之前呗存储到N个硬盘中。这要求文件服务器必须有至少N个硬盘以做回应。目前我们有两个硬盘。子弹.规格和子弹.读取功能被用于从一个服务器检索文件。首先子弹.规格呗调用用来从性能获取文件编址的规格,在这之后本地内存被分配去获取内容。然后子弹.读取被调用去获取内容,&DATA是已分配内存的地址。选择之一是虚拟内存空间的一个章节能够被保存,在这之后文件能够被映射到进程的虚拟内存。然后内核执行子弹.读取功能。子弹.删除允许从文件服务器丢弃文件。3.安装使用保持文件连续很好地简化了文件服务器的设计。所以,文件服务器的实施能够变得简单。在这一章我们将讨论在一个16.7M赫兹,拥有16M字节内存,两个800M字节磁盘驱动的摩托罗拉服务器上运行的情况。我们会描述服务器的硬盘布局,文件服务器的缓存,响应怎么实现。硬盘被分成两个扇区。第一扇区是索引节点表格,每次的进入都需要所有权、位置和一个文件的大小。第二扇区包含连续的文件和文件间的空隙。索引节点0很特别,包含有3个4字节整型数:1)块大小:磁盘硬件的物理块大小2)控制块:控制部分的块数量3)数据大小:数据部分的块数量剩下来的索引节点描述文件。一个索引节点由四个字段组成:1) 一个6字节的随机数被用作访问保护。从本质上来说这是一个被用于服务器,解密性能的钥匙。2) 索引是一个2字节的整型数。索引对于硬盘没有意义,但是它被用于缓存管理,我们稍后将介绍它。3) 一个4字节的整型数制定文件在硬盘中的第一个块。文件在块(扇区)中拍成一列。这个队列被磁盘硬件强制管理。4) 一个4字节整型数以字节的方式给出文件的大小。当文件服务器启动时,他将整个索引节点表读入内存索引节点表并且永久保存。通过扫描索引节点它能够找出硬盘空闲的部分。它用这些信息组建一个内存空闲列表。当然从未用过的索引节点也将被保存在一个列表中。当扫描这些节点时,文件服务器会执行一些相容性检测,比如保证文件不会重叠。这是文件服务器已经准备好执行并且开始等待客户端的请求。索引节点进入权限格式在内存表中与在硬盘中有些许的不同,并被叫做R节点。一个R节点包含以下的信息:1) 相应文件的节点表索引2) 文件如果存在于高速缓存中,对这个文件的指针3) 一个时间域以实现最近最少使用内存策略像磁盘一样,高速缓冲里空闲的R节点和空闲部分会被记录在可利用空闲列表中。客户端请求主要有三种类型:读文件,创建文件和删除文件。读文件必须要提供文件的性能。性能的对象值索引会到索引节点表格去找到文件的索引节点。通过使用索引节点中的随机数和性能中的检测域,此客户端的读文件权限能够被检测出来。接下来索引节点的索引域会被检查以确认高速缓存中是不是存在这个文件的副本。如果索引节点的指针值是非零,那么服务器的高速缓存中存在副本。索引值被用于定位R节点,它描述的是在内存的哪里能够找到文件。由于文件在内存中是连续保存的,它能够被客户端远程过程调用。时间域更新反应文件最近被访问情况。1如果索引节点中的索引值是零,说明这个文件不存在于内存中并且没有从磁盘中载入。首先扫描内存的空闲列表确认是否有足够的空间去存放这个文件。如果没有,那么最近最少访问的文件被从内存中移除,查找的方式是检测R节点中的时间域。这一项操作将被一直重复知道找到足够的内存空间。然后为这个文件分配一个R节点,并且初始化它所有的域。索引节点中的索引域会被复制到R节点的索引域中。然后这个文件被读进高速缓存。客户端的读操作能够在文件缓存后进行。创建文件和读不在内存中的文件相似。必须分配一个足够大的缓存空间去保存这个文件,在这之后客户端的数据能够存入。同时,还需要分配一个索引节点和一块空闲的磁盘空间。对此我们采用一个第一次适应策略。在实行过程中我们采用
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号