计算机文件系统的制作方法

文档序号:6650886阅读:373来源:国知局
专利名称:计算机文件系统的制作方法
技术领域
本发明一般涉及计算机系统的文件系统。更具体地,本发明提供一种文件系统,该文件系统不将存储在该文件系统中的项的生存周期与由该文件系统所使用的底层组织结构合并,从而允许存储在该文件系统中的项的每一个在该组织结构中具有零个、一个或多个父项而没有被删除的风险。
背景技术
计算机在诸如磁盘驱动器等存储设备上存储文件。磁盘驱动器仅提供类似于空文件箱等存储数据的场所。正如空文件箱不伴随文件的任何预定义的文件编排系统(即,文件箱的用户必须例如通过按照字母顺序排列文件来自己创建文件编排系统或组织结构),硬盘驱动器默认也仅是空的存储空间。仅靠其自身,访问硬盘驱动器上的数据的唯一的方法是,或者通过指定数据的物理位置(例如,通过指定存储文件的硬盘驱动器的柱面、磁头以及扇区),或者通过其在磁盘上的逻辑位置(例如,第21,671块)。一旦硬盘驱动器被安装在计算机上,计算机使用文件系统以可容易访问的方式来跟踪存储在硬盘驱动器上的文件。
已知的文件系统过度地限制文件系统的操作系统和用户如何能够组织文件系统中的文件。即,已知的文件系统一般要求用户在文件和目录的树中组织项,其中目录实际上是由文件系统识别的特殊类型的文件。即使文件系统支持另外的数据结构,这种能力一般也不展示给文件系统的客户(即,终端用户和应用程序)。图2示出了现有文件系统的典型组织结构201的简要的示例。如在图2中所示,已知的文件系统使用树来组织目录(使用圆形端示出)和文件(使用方形端示出)。在树结构中,项的位置和组织是合并的;每一项必须在一个且仅一个目录中。这就是用户必须如何组织他或她的文件,且用户不能够在没有创建项的新副本的情况下将一个项置于多个组织中。
典型的文件系统使用两个彼此结合的表或数据库来组织文件。第一张表或数据库是识别文件存储在诸如硬盘驱动器等存储设备上的物理位置的查找表。第二张表定义了文件的组织结构。这些表在此一般分别被称为位置表(LOC)和组织表(ORG)。组织表存储关于持有链接,即一个项是另一个项的父项的信息。某些文件系统可将位置表和组织表组合成单张表或结构,但仍旧要求存在两张表的元素以使文件系统能够正确地运作。例如,在由微软公司销售的NT文件系统,即NTFS中,主文件表既用作位置表又用作组织表。类似地,Unix文件系统,即UFS,使用一种i个节点的表,该表既用作文件的位置表又用作组织表。目录作为特殊类型的文件存储,其中目录“文件”在目录内部存储文件名列表和其各自的i个节点。
在这些和其它已知的文件系统中,只要文件位于如由组织表中的持有链接定义的至少一个位置上,即,存在指向该文件的至少一个持有链接,文件系统就保持将该文件存储在物理存储设备上。即,如果从组织表中删除对文件的持有链接,且不再有指向该文件的持有链接,那么文件系统移除位置表中该文件的条目(不考虑该文件在存储设备上是否被物理地重写)。存储设备然后可以使用该存储空间来写入新的数据。例如,如果用户想要“删除”图2所示的文件C\PROGRAMS\MICROSOFT\OFFICE\WORD\FILE.DOC,那么文件系统首先从组织表中移除该文件的条目。如果该文件在位置表中没有其它条目,即该文件没有存储在其它地方,那么文件系统移除位置表中该文件的条目,由此为其它数据释放了空间。通常,文件系统维护任何给定项具有的祖先(被称为“持有链接”)的数量的引用计数。当移除项上的最后一个持有链接时,通过移除位置表中该文件的引用来“删除”该项。然而,从终端用户观点来看,这是不合需要的,因为它限制了文件系统可以使用的组织结构。
由于上述约束和限制(例如,作为将文件从树中移除的副产物的删除),文件系统不允许客户机以不同于目录和文件的树形层次的数据结构来组织数据。用户想要能够以各种组织数据结构来对项进行组织和去除组织,而不涉及删除给定的项。如果项的生存周期与其在文件系统中的组织相分离,这将是本领域中的进步。即,提供不将项的生存周期与组织结构合并的文件系统将是本领域中的进步,在该文件系统中,对项进行组织和去除组织的动作不影响其生存周期。这样,提供这样一种文件系统,它不限制操作系统和/或用户能够用于组织文件的数据结构的类型,也不会仅仅因为文件从文件系统内的所有组织结构中移除或者没有指向该文件的持有链接而删除文件,将是本领域中的进步。

发明内容
下文提供了本发明的简化的概述,以提供对本发明的某些方面的基本理解。该概述不是本发明的广泛的概观。它不旨在标识本发明的关键或重要的元素,也不描绘本发明的范围。下文的概述仅以简化的形式提供本发明的某些概念,以作为下文提供的更详细的描述的序言。
为了克服上述的现有技术中的一个或多个限制,和/或克服在阅读和理解本说明书之后显而易见的其它限制,本发明一般针对一种实施为存储在计算机可读介质上的数据项和计算机可执行指令的文件系统。数据项一般指的是可以存储在文件系统中的任何数据,包括但不限于,文件、文件夹、数据、音乐等。该文件系统使用存储至少用于存储在文件系统内的第一、第二和第三数据项的项位置信息的第一数据表,并使用存储第一和第二数据项的组织信息但不存储第三数据项的组织信息的第二数据表。
该文件系统的文件系统管理器软件模块可以被实施为存储在计算机可读介质上的计算机可执行指令。该文件系统管理器基于项位置数据和项组织数据来管理存储在文件系统中的数据项。该文件系统管理器使用用于从文件系统中删除项的第一子例程,并使用用于从文件系统中移除项的第二子例程。
该文件系统管理器执行一种用于管理存储在文件系统中的项的方法,该方法包括接收从文件系统中删除第一项的第一请求,并响应于第一请求,从与文件系统相关联的位置信息以及从与文件系统相关联的组织信息中删除对第一项的引用。该文件系统管理器接收从文件系统中移除第二项的第二请求,并响应于第二请求,从与文件系统相关联的组织信息中删除对第二项的引用,但是不从与文件系统相关联的位置信息中删除对第二项的引用。
本发明的另一方面提供一种用于存储数据项的文件系统,其中该文件系统被实施为存储在计算机可读介质上的计算机可执行指令。在该文件系统中,数据项生存周期独立于该文件系统中数据项的任何概念组织内的数据项的位置。


考虑附图,通过参考下文的描述,可以获得对本发明及其优点的更完整的理解,附图中,相同的参考标号指示相同的特征,附图中图1示出了根据本发明的说明性实施例适用于实现媒体用户界面的通用操作环境。
图2示出了已知文件系统的典型组织结构。
图3示出了根据本发明的说明性实施例的位置表(“LOC”)。
图4示出了根据本发明的说明性实施例的组织表(“ORG”)。
图5示出了根据图4所示的组织表的有向无环图(DAG)组织结构。
图6示出了根据本发明的说明性实施例的文件系统的框图。
图7示出了根据本发明的说明性实施例的文件区域。
图8示出了定义图7的组织结构的组织表。
图9示出了根据本发明的说明性实施例的文件区域。
图10示出了定义图9的组织结构的组织表。
图11示出了根据本发明的说明性实施例的组织表。
图12示出了根据图11所示的组织表的文件区域。
图13示出了根据本发明的说明性实施例用于管理存储在文件系统中的项的方法。
具体实施例方式
在下文对于各个实施例的描述中,参考附图,附图形成了本发明的一部分,并作为说明示出可在其中实现本发明的各种实施例。可以理解,可以使用其它实施例,且可以进行结构和功能的修改而不背离本发明的范围。
示例性计算环境图1示出了可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可用众多其它通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明可在诸如由计算机执行的程序模块等的计算机可执行指令的通用语境下描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。本发明也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现本发明的一个示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机110访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由不可移动存储器接口,诸如接口140连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器接口,诸如接口150连接至系统总线121。
以上描述和在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备可以包括遥控器163、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等(未全部示出)。这些和其它输入设备通常由耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器191或其它类型的显示设备(例如,电视机)也经由接口,诸如视频接口190连接至系统总线121。除监视器以外,计算机也可以包括其它外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口195连接。
在某些方面,提供了笔数字化仪165和附属的笔或触针166以数字化地捕捉手画线输入。尽管示出了笔数字化仪165和用户输入接口160之间的直接连接,但在实际上,笔数字化仪165可以使用包括无线技术在内的任何技术,直接地、通过并行端口或其它接口以及系统总线130来耦合至处理器单元110。而且,笔166可以含有与其相关联的照相机,以及用于将由该照相机所捕捉到的图像信息无线地发送到与总线130交互的接口的收发器。此外,笔可以含有除照相机之外的或代替照相机的其它传感系统,用于确定电子墨迹的笔划,这些传感系统包括加速计、磁强计和陀螺仪等。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的连网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。此外,系统可以包括有线和/或无线能力。例如,网络接口170可以包括蓝牙、SWLan和/或IEEE 802.11的组合能力类。可以理解,可以结合这些协议或替代这些协议来使用其它无线通信协议。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至局域网171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
可以理解,所示网络链接是示例性的,可以使用在计算机之间建立通信链路的其它技术。假设诸如TCP/IP、以太网、FTP、HTTP等各种公知协议的任一种存在,系统可以在客户机-服务器配置中操作,以允许用户从基于web的服务器中检索网页。各种常规网络浏览器的任何一种可以用于显示和处理网页上的数据。
本发明的一个或多个方面可以被实施为诸如由计算机110等一台或多台计算机或其它设备执行的一个或多个程序模块中的计算机可执行指令。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。计算机可执行指令可以被存储在诸如硬盘、光盘、可移动存储介质、固态存储器、RAM等的计算机可读介质中。本领域的技术人员可以理解,程序模块的功能可以如在各个实施例中所需而结合或分布。另外,功能可以被实施为诸如集成电路、现场可编程门阵列(FPGA)等固件或硬件等效物的全部或部分。
本发明的说明性实施例根据本发明的说明性方面,此处描述了一种文件系统,该文件系统不将项的生存周期与该项在文件系统组织结构内的位置合并,从而允许项诸如通过基于查询的属性和通过列表来参与多个组织或者根本不参与组织,这些组织构成一个或多个有向无环图(DAG)。DAG是一种组织,其中项可以拥有多个父项。在DAG中,项不能够是其祖先的父项,否则会形成环。
此处描述的文件系统可以被实施化为存储在计算机可读介质上的计算机可执行指令,例如,文件系统138和/或文件系统148(图1)。另外,图1中的其它计算机可读介质或存储器也可以包括与本发明所述的文件系统相同或不同的文件系统。例如,介质152和156也可以包括文件系统。为说明起见,此处将参考文件系统148来描述文件系统。
参考图3和图4,文件系统148主要依赖于两张表——位置表(LOC)301和组织表(ORG)401。位置表301也被称为LOC表,它存储关于存储在文件系统中的每一项的物理和/或逻辑位置的信息,包括,例如,文件标识符(ID)303、文件名305、存储卷307、位置309以及文件大小311。文件ID 303是用来引用每一项的主键或引用,且对存储在文件系统418中的每一项是唯一的。文件ID可以包括数字、字母文本、符号或者任何组合,只要每一文件ID唯一地标识存储在文件系统148中的单个项。
文件名305可以包括由文件系统418的用户提供的关于项的短的描述性文件名。文件名305较佳地是用户对每一文件的主要概念参考,且可以由用户以描述性的格式指定,使得文件可以由用户基于文件名来容易地识别。文件名305可以是有限长度的,例如8.3格式,最长256个字符,或是某些其它最大值。较佳地,对文件名彼此是否可以重复,或者甚至是否要求文件名或已经分配文件名没有限制。即,多个文件可以各自被命名为“README.TXT”或“Read this first”,即使它们处于相同的目录、文件夹或列表中,只要每一文件拥有唯一的文件ID 303。这不像要求每一文件在其父项的上下文中拥有唯一的名称的先前的文件系统。
卷307、位置309和大小311可以用来从物理或逻辑存储位置中检索项。卷307可以指的是物理或逻辑存储设备,例如,物理或逻辑硬盘驱动器、光盘驱动器、存储介质卡、固态存储设备等。位置309可以指的是项在标识的物理或逻辑卷上的实际起始位置,而大小311可以指的是其中项以标识的位置开始被存储在所标识的卷上的空间量的定量测量。位置表301中可以包括另外的或替换的信息,只要包含的信息可用于从项的各自的标识的存储位置检索每一存储的项。
组织表401也被称为ORG表,它存储了存储在文件系统418中的项之间的层次关系。如上简要所述,为概念上在文件系统148中排列项,ORG表401可以定义包含一棵或多棵树的一个或多个有向无环图(DAG)。ORG表401可以对每一关系包括父项403以及子项405。图5示出了如由LOC表301的各部分定义的以及如由ORG表401定义的DAG 501的示例。DAG 501不是树,因为项I3的父项是“To Do List(要完成的事情列表)”和“Items For My Trip(关于我的旅行的项)”(也被称为“在两者中”),项I4的父项是“Items For My Trip”和“Key Slide Decks(主要滑板)”。文件系统418中的每一项可以没有父项、有一个父项或者有两个或更多个父项,只要组织结构仍旧是DAG。
图6示出了可以在文件系统148中使用的软件模块的框图。文件系统148可以含有管理文件系统148的总体操作的文件系统管理器程序模块601。管理器601可以使用此处所述的LOC表301和ORG表401来添加、更新、删除和读取/查询存储在数据存储611中的项,同时实施关于施加在DAG上的任何约束(例如,不允许环)的规则。管理器601可以展示一个或多个应用程序编程接口(API),通过这些API,诸如操作系统等更高级程序可以与文件系统148交互。API可以包括Add_Item API 603、Update_Item API 605、Delete_Item API 607以及Query_ItemAPI 609。
Add_Item API 603可以由操作系统或其它更高级程序或应用程序在有新的项将被存储在文件系统148中时调用。Add_Item API 603可以接受指向该新的项的当前临时存储位置的指针,以及文件名和可任选的预期的存储卷和/或父项ID作为输入。Add_Item API 603可以任选地为新添加的项返回文件ID。
Update_Item API 605可以被调用来更新已经存储在文件系统148中的现有项,且可以接受文件ID和从指向该项的更新版本的指针、ORG表401中的内容的更新的关系和/或更新的文件名中选出的一个或多个可任选地包含的信息作为输入。
Delete_Item API 607可以被调用以通过向Delete_Item API传递将要删除的文件ID来从文件系统148中移除项。仅当明确地调用Delete_Item API 607时,才从文件系统148中删除项。
Query_Item API 609可以在需要从文件系统中检索项以供OS或应用程序使用时调用。Query_Item接受文件ID作为输入,并返回请求的项。以上列出的API代表了较佳地包含在本发明的说明性实施例中的API类型。文件系统148可以基于系统需求和设计包含另外的或替换的API。
因为文件系统148允许每一项拥有零个或多个父项,因此在文件系统的单个卷中可能存在多个独立的数据结构(即,多个DAG)。这不像一般将客户机(用户或应用程序)限于对每个卷在单棵树中存储项的已知文件系统。这样,如此处所述的,其中项被存储在文件系统中的概念空间被称为文件区域(FR)。文件区域指的是用于控制项的生存周期的组织区域的高级用户概念。只要项仍旧在文件区域内,该项将不被删除,而不考虑该项是否服从ORG表401中定义的任何父-子关系。
文件区域可以在概念上被看作其中可以放置项的盒子,而不考虑项是否在概念上是相关的。如果项被放置在文件区域中,那么项保持处于文件区域中,直到用户删除该项。尽管项是在文件区域中,但是项可以在文件区域内以一个或多个DAG中的任何一个来组织,而对该项是否在文件区域中没有影响,且对该项的生存周期没有影响。即,该文件不会被删除,直到用户肯定地指示文件系统删除该文件。文件区域可以包括任何任意定义的存储区域,而不考虑所有包含的数据存储是否彼此在同一计算机、网络等中是物理上邻近的,只要数据存储是作为单个文件区域来管理以确保项的生存周期。例如,文件区域可以包括计算机上的所有内部硬盘驱动器、计算机上的单个硬盘驱动器的一部分、单独的或与本地存储结合的网络化存储、或者任何其它定义的存储空间。
图7和8示出了含有三个独立DAG 501、703和705的文件区域701。在DAG 501、703和703之间的唯一强制关系是它们位于同一文件区域内,它们之间不存在必须的概念关系。图8示出了描述图7中所示的DAG的ORG表801。图7示出了文件区域701的概念视图,而图8示出了在文件区域701中使用的持有链接。文件区域701可以由用户打开,此时文件系统148可以向用户呈现由文件系统定义的文件区域中的所有“顶层”或“浮动”项。如此处所使用的,如果项不是来自对应于该文件区域的ORG表中的其它项的任何持有链接的目标,则项被定义为“顶层”或者“浮动的”。这样,在图7中,项i1,i7,“ToDo List”和“Items For My Trip”被认为是顶层项,即浮动项。对终端用户,列表i7是组织数据结构形式的。基于多个父项的概念,项可以处于多个列表中,例如项i3。列表是持有其它项、已排序的或未排序的项,且列表可以代替用户在使用以往的文件系统时惯用的文件夹/目录。列表也可以在其它列表中或持有其它列表。
文件系统148在用户或应用程序(共同被称为客户机)何时想要从项的基础组织结构中移除该项,以及客户机何时想要将该项从文件系统中完全删除之间进行区分。图9和10示出了在用户或应用程序从Key Slide Decks列表中移除项i5之后的文件区域801。即,管理器601基于通过Update_Item API 605的请求,移除ORG表1001中将Key Slide Decks(文件ID 000007)标识为项i5(文件ID 000006)的父项的持有链接。项i5不再是多项组织结构的一部分,因为关于项i5的所有持有链接都已经从ORG表401中移除。然而,因为项i5仍旧保持在文件区域801中,所以不从文件系统148或LOC表301中移除项i5。换言之,因为客户机没有请求删除项i5,而是请求移除项i5,所以不从数据存储611和LOC表301中删除项i5。仅当客户机通过Delete_Item API肯定地选择项i5并请求删除操作之后,管理器601才会从数据存储611和LOC表301中移除项i5(文件ID 000006)。
参考图11和12,文件系统148可用于基于在例如目录树等先前已知的文件系统中使用的组织结构来模拟用户熟悉的组织结构。回头参考LOC表301(图3),具有文件ID 000301-000312的项表示对存储在文件系统148中的列表的持有链接。每一未排序的列表表示在文件区域1201(图12)和ORG表1101(图11)中概念上表示的目录树1203中的目录。目录树1203和先前已知的目录树的主要区别在于,“Shared(共享的)”子目录可通过两个“User Data(用户数据)”未排序列表中的任一个来访问,这样利用了文件系统148的多父项能力。以这种方式,用户之间可以容易地共享目录,同时仍旧向用户提供他们熟悉的组织结构。
根据本发明的说明性实施例,文件系统148向计算机系统或网络的每一单独用户提供在其上实现文件系统148的私有工作空间,并向该计算机系统或网络的所有用户提供可用的公共共享工作空间。形成名字空间,使得它具有UserData下的Private(私有)和Shared文件区域。这允许用户针对系统的查询可以作为由User Data形成的项域的根,从而将在所有典型查询中返回私有和共享的项。使用图12的名字空间,当用户与文件系统中的项交互时(获得新的相片或音乐、创建文档等),用户仅需在概念上考虑问题“这是私有的还是共享的?”并将项放置于合适的工作空间中。共享工作空间的所有用户然后拥有对共享工作空间的公共可见性。另外,每个工作空间可以有共享的回收站,这样如果一个用户删除了另一个用户仍旧想要的项,那么第二个用户可以找回它。
对公共共享工作空间的情形不限于家庭用户。在公司域上,知识工作者可以为同事建立共享的工作空间以在项目上协作。工作空间的灵活性可以向工作空间的每一用户提供组织项、在工作空间内查询项以及提供对这些项的公共总体可见性的能力。
图13示出了用于从项的底层组织结构中移除项和/或从文件系统148中删除项的方法。最初,在步骤1301中,客户机选择具有特定文件ID的项。下一步,在步骤1303中,客户机指示该客户机想要将该项从文件系统148中完全地删除,或者该客户机仅想从项的底层组织结构中移除该项。如果客户机在步骤1303中选择“移除”,那么在步骤1305中,文件系统管理器从ORG表中移除其中该项的文件ID在子项栏中出现的任何条目,然后该方法结束。
如果客户机在步骤1303中选择“删除”,那么在步骤1307中,对其中该项的文件ID出现在父项栏中的每一ORG表条目,文件系统管理器601在ORG表中添加其中子项是child而该项的父项是parent的条目(如果该条目不是已经存在于ORG表中)。可以使用的伪代码如下对其中Xparent=file_ID(ITEM)的每一ORG表条目X对其中Ychild=file ID(ITEM)的每一ORG表条目Y如果ORG表不含有条目(Yparent,Xchild)那么添加ORG表条目(Yparent,Xchild)在相应地更新ORG表之后,文件系统管理器在步骤1309中从ORG表中删除引用该项的文件ID作为父项或者子项的任何条目。最后,在步骤1311中,文件系统管理器601从LOC表中删除指示该项存储在哪里的条目。文件系统管理器601还可以执行安全擦除操作,并使用垃圾数据重写存储在该项位置上的数据,使得不能执行恢复删除操作。
或者,文件系统管理器可以跳过步骤1307而在步骤1309中仅从ORG表中移除其中该项要么是父项要么是子项的任何条目。该替换实施方式的副作用是,被删除的项的每一子项被从文件系统148的组织结构中移除,除非该子项是以仍旧保持在文件系统148的组织结构中的另一项作为父项的。
示出上述方法,使得所选择的项和该项指向的任何项被从底层组织结构中移除。然而,本领域的技术人员可以理解,可以使用其它方法,其中当从组织结构中移除项时,不将该项的子项也从组织结构中移除。移除方法是如何执行的对于以下事实是次要的,即移除和删除是两个独立的过程删除过程从存储中完全删除项,而移除过程从底层组织结构中移除项而不影响该项的生存周期(即,不从存储或文件系统中删除该项)。
传统文件系统导航工具,例如由华盛顿州雷德蒙市的微软公司推出的Windows EXPLORER系统导航工具,一般仅显示文件系统组织结构中的文件。这样,如果客户机从文件系统148的组织结构中移除了项,即该项不存在于ORG表中,那么该项将不会在文件系统导航显示中出现。然而,使用本发明的各方面,客户机可以向文件系统管理器601查询所有浮动或顶层项(即,没有父项的项),以找出在组织结构内不存在的任何项。
文件系统148可以基于由ORG表401定义的组织结构提供附加的特征,诸如查询域和安全性。即,除了定义组织结构之外,ORG表中的持有链接也可以用于形成可查询项域,或者也被称为名字空间。客户机可以查询涉及到该项是父项的至少一条持有链接的任何项。例如,参考图7,对“Items For My Trip”的查询返回项i3、i4、i5和i8,以及Key Slide Decks。重复的项较佳地仅返回一次。例如,Key Slide Decks也是i4的父项,它较佳地仅被返回一次。
文件系统148的组织结构也可以用于传播名字空间以供传统应用程序使用,也可以向新用户提供概念上可识别的用户界面来与文件系统148交互。例如,参考图12,“U1”下的项“User Data”可由客户机如“\Users\U1\User Data”来引用,这样向终端用户和传统应用程序提供概念上熟悉的界面。
由ORG 401定义的组织结构也可以用于在文件系统148中传播安全信息。即,安全表(未示出)可以提供关于项的安全信息。默认地,如果用户能够访问给定项,该用户默认地不论直接或间接地也能够访问该给定项指向的所有其它项。
例如,项“U1”(图12)的安全性可以指示只有用户名=Ross的用户才能访问U1中的文件。如果没有提供了父项为U1的项“App Data(应用程序数据)”和“User Data”的不同安全信息,那么也仅有Ross才能查看这些项。对“Private”(由父项为“U1”的“User Data”作为父亲)和“Shared”,这也成立。项“U2”(图12)的安全性可以指示只有用户名=Jordan的用户才能访问U2中的文件。如果没有提供父项为“U2”的项“Application Data”和“UserData”的不同安全信息,那么也仅有Jordan才能查看这些项。对“Private”(由父项为“U2”的“User Data”作为父亲)和“Shared”,这也成立。尽管看上去项“Shared”具有不一致的安全信息,安全信息较佳地是加性的。这样,项“Shared”将会接收到来自“U1”和“U2”的安全信息,以允许“仅Ross和Jordan”。或者,假设项“U1”具有等价于“仅Ross,而不是Tom”的许可。项“Shared”则将接收到等价于“仅Ross和Jordan,而不是Tom”的安全许可。
当从ORG中移除项,安全性停止传播至被移除的项。例如,如果如图9中所示,从“Key Slide Decks”中移除项i5,那么用户不再拥有访问i5的能力,除非该用户被给予访问i5的许可。然而,文件系统148可以指定默认地客户机可以访问所有项,除非该客户机被明确地禁止访问项。
因为列表也形成如上所述的名字空间,因此如果来自Windows XP或其它传统机器(可能不配备如此处所述的文件区域、DAG或列表来工作)的用户连接至文件系统148,用户可以见到如可以被导航的文件夹可见的列表。类似地,当用户在列表(或者在传统操作系统或者能够使用文件系统148的系统上)的上下文内的给定项上双击时,那么文件系统向请求应用程序提供由当前列表形成的名字空间。这向应用程序提供了必要的上下文。例如,如果用户试图通过列表“To Do List”来打开项i2,那么文件系统将向应用程序返回通过“To doList”形成的路径,即“\To do List\i2”。这样,如果用户选择在应用程序内使用命令“File|Save As...”(例如,用于创建该项的新副本),那么应用程序将具有正确的上下文来提供给用户。
尽管本发明是相对于包括实现本发明的当前最佳的方式的特定示例来描述的,但本领域的技术人员可以理解,存在上述系统和技术的众多变化和改变。这样,本发明的精神和范围应该如所附权利要求所述来宽泛地解释。
权利要求
1.一种实施为存储在计算机可读介质上的数据项和计算机可执行指令的文件系统,包括第一数据表,它存储所述文件系统内的至少第一、第二和第三数据项的项位置信息;以及第二数据表,它存储所述第一和第二数据项的组织信息,但是不包括所述第三数据项的组织信息。
2.如权利要求1所述的文件系统,其特征在于,所述第一表和所述第二表包括分开的表。
3.如权利要求1所述的文件系统,其特征在于,所述第一表为每一数据项存储唯一的项ID、项名和数据项的存储位置。
4.如权利要求1所述的文件系统,其特征在于,所述第二表中的每一条目定义了两个存储的数据项之间的关系。
5.如权利要求4所述的文件系统,其特征在于,所述关系包括父-子关系。
6.如权利要求5所述的文件系统,其特征在于,所述第二数据表的所有条目可以被共同表示为有向无环图。
7.如权利要求4所述的文件系统,其特征在于,所述第二表存储将所述第一数据项标识为所述第二数据项的父项的第一条目。
8.如权利要求7所述的文件系统,其特征在于,所述第二项基于所述第一数据项和所述第二数据项之间的关系从所述第一数据项继承安全许可。
9.一种实施为存储在计算机可读介质上的计算机可执行指令的文件系统管理器软件模块,所述文件系统管理器使用项位置数据和项组织数据来管理存储在文件系统中的项,所述文件系统管理器包括第一子例程,用于从所述文件系统中删除第一指定的项;以及第二子例程,用于从所述文件系统的组织结构中移除第二指定的项,而不从所述文件系统中删除第二指定的项。
10.如权利要求9所述的文件系统管理器,其特征在于,项位置数据是存储在第一表中的,且项组织数据是存储在第二表中的。
11.如权利要求10所述的文件系统管理器,其特征在于,所述第一表是与所述第二表分开的。
12.如权利要求10所述的文件系统管理器,其特征在于,所述第一子例程包括从所述第一表和第二表中删除对所述第一指定的项的任何引用。
13.如权利要求12所述的文件系统管理器,其特征在于,所述第一子例程还包括在删除之前基于所述第二表中关于所述第一指定的项的条目向所述第二表添加新的条目。
14.如权利要求10所述的文件系统管理器,其特征在于,所述第二子例程包括从所述第二表中删除对所述第二指定的项的任何引用,而不从所述第一表中删除对所述第二指定的项的任何引用。
15.如权利要求9所述的文件系统管理器,其特征在于,所述第一子例程是可以通过第一应用程序编程接口(API)来调用的。
16.如权利要求15所述的文件系统管理器,其特征在于,所述第二子例程是可以通过不同于所述第一API的第二API来调用的。
17.如权利要求9所述的文件系统管理器,其特征在于,还包括基于所述组织数据的安全数据。
18.如权利要求9所述的文件系统管理器,其特征在于,所述文件系统管理器基于所述组织数据为每一项构造名字空间。
19.一种用于管理存储在文件系统中的项的方法,所述方法包括以下步骤接收从所述文件系统中删除第一项的第一请求;响应于第一请求,从与所述文件系统相关联的位置信息以及从与所述文件系统相关联的组织信息中删除对所述第一项的引用;接收从所述文件系统中移除第二项的第二请求;以及响应于第二请求,从与所述文件系统相关联的组织信息中删除对所述第二项的引用,并且保持与所述文件系统相关联的位置信息中对所述第二项的引用不变。
20.一种用于存储数据项的文件系统,所述文件系统被实施为存储在计算机可读介质上的计算机可执行指令,其中,每一数据项的生存周期相对于存储在所述文件系统中的其它数据项是独立于每一数据项的组织的。
21.一种用于存储数据项的文件系统,所述文件系统被实施化为存储在计算机可读介质上的计算机可执行指令,其中,所述文件系统确定每一数据项独立于该数据项与存储在所述文件系统中的其它数据项的关系的生存周期。
22.一种用于存储数据项的文件系统,所述文件系统被实施为存储在计算机可读介质上的计算机可执行指令,其中,所述文件系统存储第一数据项,所述第一数据项对存储在所述文件系统中的其它数据项没有父-子关系。
全文摘要
本发明描述了不将项的生存周期与该项在文件系统组织结构中的内容合并的文件系统。另外,该文件系统的组织结构不限于目录树,而是可以使用任何有向无环图(DAG)。一旦存储到文件系统中,项将被维护,直到由文件系统的客户机肯定地删除,而不论该项是否是DAG的一部分。项可以被放置在文件区域中,文件区域是客户机用来控制项生存周期以及将项组织进用户选择的任何DAG结构的概念上的工作空间。项可以并发地存储在多个DAG中,且每一文件区域可以含有一个或多个独立的DAG。项在DAG中的位置也可以用于管理诸如名字空间、安全性、保密性和读/写属性等文件属性。
文档编号G06F17/30GK1773509SQ20051012481
公开日2006年5月17日 申请日期2005年11月14日 优先权日2004年11月12日
发明者A·G·拜比, A·K·诺里, B·S·拉曼, T·P·麦基, W·R·史密斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1