FRONT互联网文件存储与共享系统刘斌刘忠义网络实验室夏冰数据库实验室朱彬软工实验室摘要本文受Freenet项目的启发,设计并实现了一个具备存储和共享功能的互联网分布式文件系统——FilesReiableONinTernet(FRONT)。FRONT在操作系统的文件系统之上提供了一层新的虚拟文件系统,上传到FRONT系统的文件被适当地切分并分配到网络中某些节点上。通过文件分块表或文件块复制和缓存,用户得以利用FRONT实现可用高效的文件访问。FRONT系统使用磁盘配额和固定共享空间比例的技术来配合这个虚拟文件系统,来解决P2P应用中的Freerider问题。Front使用RandomWalk算法进行文件定位,并且在网路规模变化时保持系统中文件的高可用性和高性能。实验表明本文实现FRONT系统运行正确,性能有待进一步实验。关键词分布式系统、P2P、网络存储、文件共享I.介绍A.工作动机今天互联网上已经有许多成熟的P2P文件共享系统,例如BT、迅雷、Maze等,它们的存在极大地丰富了普通网民可以访问的互联网资源。这些系统着重于将互联网上的文件以P2P的方式共享给更多用户。几乎在这些P2P共享协议在开始被研究和应用的同时(2001年),学术界也曾热烈地讨论过在互联网络上提供开放的存储服务的分布式文件系统,一些著名的系统包括CFS、Gnutella、FreeNet等。今天仍有一些个人和组织在这些协议的基础上开发扩展和应用。但是由于版权、用户激励、网络封禁等等原因,这些系统一直停留在研究阶段或者很小规模的应用。随着网络的普及和计算服务的无所不在,普通用户开始在一个以上的计算机上进行文件存取;并且越来越多的群体或组织的成员参与到互联网上的协作和共享。这样的需求可以使用分布式的文件存储和共享技术来满足。本文是几位研究生在学习分布式系统课程之后的一次尝试,希望开发一个具有一定可扩展性的分布式文件系统FRONT(FilesReliableONinTernet),用户可以使用这个系统实现高效的文件存储与访问。B.本文内容FRONT文件系统最主要受到FreeNet[6]项目的启发。FRONT系统无须依托任何基础设施,当文件存储或者共享的需求产生时,它即可从一台主机的规模开始扩展,在网络规模和共享空间逐渐扩大的同时,它可以持续提供高可用、高性能的文件存储与共享服务。FRONT采用用户磁盘配额的方式,让每一台主机向整个系统提供存储空间,并通过控制共享空间与用户需求空间的比例来避免freerider问题。FRONT系统对用户上传的文件进行适当地切分,使之映射为操作系统的文件系统之上的虚拟文件系统FrontVFS中的文件。文件分块的设计让用户可以上传更大的文件,并且流行的文件块将被分配到更多的机器上,带来更高的访问性能。新的一层虚拟文件系统还造成了用户对磁盘空间使用的不透明性,又一次保证了客户端在使用系统的同时提供必要的服务。在文件分块后,系统中需要存储的数据包括文件的分块表和文件块两种类型。文件分块表使用“发布者用户空间”上的路径来定位,文件块使用对数据内容的哈希来定位。为了提供高可用性和高性能,FRONT在文件块的级别在系统中实现了复制和缓存。FRONT对于局域网构成的网络还做了特别的优化处理,让处在同一个以太网络内的本地用户高效地利用网络,并降低对整体网络的负担。另外,FRONT系统中节点的通讯组织方式提供了高效的文件查找功能。这些都将在下面的章节中系统介绍。下文的主要内容:第II部分描述了Front文件系统对于应用场景的假设,并分析在假设情况下的文件系需要解决的问题。第III部分是对Front文件系统的结构设计。第IV部分是本文的主要部分,介绍了开发Front文件系统的细节。第V部分讲述了Front文件系统的运行情况,分析对比了与其他文件系统的区别和特点。最后第VI部分是对本文工作的总结和展望。II.假设和问题我们基于互联网上的存储和共享需求设计并实现了Front网络文件系统,为互联网用户提供了高效可靠的文件服务。它适用于在下文定义的一些假设情况,我们认为这些假设有较强的普遍性和适应性,满足了很多应用需求。这些假设包括以下几点:1)互联网中存在多个节点,无论它们是否邻近。它们愿意共同组织一个文件存储和共享平台。这个平台可以选择由预先定义的用户组成,与Inte...