可扩展存储设计及其实例研究.doc.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可扩展存储设计及其实例研究.doc.doc

附录A 可扩展存储设计及其实例研究 一个EXOKERNEL必须提供一种在多库文件系统(LibFSes)之间安全复用磁盘的方法。每一个LibOS包含一个或多个LibFSes。采用复合库文件系统方法以不同的语意共享同一文件。为了能进入已有的文件,LibFSes能以任意的元数据格式定义一种新的磁盘上存在的文件类型。EXOKERNEL必须为LibFSes提供对文件管理的尽可能的控制权。同时对文件进行保护以防止未经授权的进入。它因此依赖简单的方案象在复用磁盘时采用划分区域的办法:每一个文件都有属于它自己的区域。 为了LibFSes能够对其文件实施管理,一个EXOKERNEL稳定的存储体系必须满足四项要求: 能够简单容易的创建一个新的文件类型,它不应该要求任何指定的特 权。 在提供的保护下面应当允许复合LibFSes在磁盘块和元数据级安全的共享文件。 存储体系必须具有高效率――尽量靠近直接在硬件上执行的效率。 存储体系必须便利在LibFSes之间映射共享,并且允许它们很容易的处 理关于高速缓存中的连贯性、安全性和一致性的问题。 在本附录中我们着重说明EXOKERNEL如何复用稳定的存储体系。这里我们也提出了如何处理上述问题并且提供了关于符合EXOKERNEL设计原则要求的实际例子。首先,我们分析一下XN-EXOKERNEL的可扩展的、在内核中的稳定的存储体系,接下来介绍在XN和LibFSes之间的普遍的界面。 1.XN概述 设计一个灵活的EXOKERNEL稳定的存储体系是十分困难的。这一节是关于UDFs的一个概述,它是XN的基础。下面的一节介绍XN的设计方法。 XN允许在磁盘块级进入存储体系,输出一个缓冲寄存注册表。XN的主要目的是尽可能高效的判定进入磁盘块的权利。XN必须防止有恶意的用户申请另一用户的磁盘块做为自己文件的一部分。在传统的操作系统上,这是非常简单的一件事,因为内核知道文件的元数据类型;而在EXOKERNEL上,文件是面向任务的元数据布局,这使问题复杂化。 XN的解决方法是使用UDFs(untrusted deterministic function)。UDFs是针对每种文件类型的元数据的翻译函数。XN用UDFs分析元数据并且将它翻译成内核能理解的简单形式。一个LibOS发展人员能安装UDFs引入新的存在于磁盘的新的元数据类型。UDFs被指定使用严格的语言以保证它们是决定性的――它们的输出仅仅依赖于输入(元数据本身),它允许内核安全的、高效的使用任何元数据分布而不需要真正理解这种布局。 UDFs被存储在磁盘上被称作templates(模板)的结构中。每一块模板对应一种特定的元数据类型,例如,一个UNIX文件系统就含有数据块、i节点快、I节点,间接块等等。每一个模板T有一个UDF:owns-udfT。另外还有两个非决定性函数:acl-ufT和size-ufT。在这三个函数中,起决定作用的是owns-udfT。 对一片模板类型为T的元数据,owns-udfT(m)返回m指向的这批磁盘块以及它们各自的模板类型。UDF的决定机制保证了owns-udfT对于给定的输入将总是得到相同的输出,XN不会被owns-udfT所欺骗。一批磁盘块owns-udfT返回值能被表示成一组元组,每一个元组包含了一个存储区域的信息:这个区域中起始块地址,磁盘块数量,以及每一块的模板标识符。由于这一批区域可能会很大,XN允许LibFSes将元数据块分成不相邻的片,这样每一次一批磁盘块返回的将是一个元组。 例如,当一个LibFS需要通过在磁盘快b的元数据结构m中设置指针而分配磁盘块b时,它将调用XN,通过m,b和修改m的信息。为了确保保护,XN必须知道LibFS进行修改的目的――用m分配b。因此,XN运行owns-udfT(m),在m的一个复制m’上进行修改,并且运行owns-udfT(m’)。然后它就可以验证新旧结果的是否相等。 函数acl-ufT实现了特定的模板进入控制:它的输入是一片元数据,对元数据的修改信息。输出是一个布尔值,代表修改是否通过。函数size-ufT则仅仅返回数据结构的大小。 2.XN:设计与实现 在讨论设计之前,需要先介绍一下XN的需求。 1需求和实现途径 为了使任务控制与保护共享统一起来,以下的条件是必须的。 为避免出现未认可的进入,对磁盘数据进行的操作必须警惕。从提高速度的角度考虑,XN使用安全绑定,不用在每次进入时都进行检测。例如,当在高速缓冲区中的叶被插入LibFS环境的页表中,这时才对进入此页的要求进行检测,而不是在每次进入时都检测。 XN必须明确的决定用户对一块给定的磁盘块进入权限。为提高速度,它使用UDF机制使用LibFS自己的元数据保护磁盘块,而不是单独的对每块进行保护。 XN必须保证有次序的对此盘数据进行

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档