具体实施方式
现在参照附图并具体参照图1,其中示出了通过其可实现本发明的方法、系统和程序的计算系统的一个实施例。本发明可在包括多种计算系统和电子设备的多种系统内执行。
计算机系统100包括用于在计算机系统100内传送信息的总线122或其他通信设备,和用于处理程序代码和数据的连接到总线122的至少一个处理设备,诸如处理器112。总线122可包括通过桥接器和适配器连接并在计算机系统100内被多个总线控制器控制的低等待时间和较长等待时间路径。处理器112可以是通用处理器,诸如IBM的PowerPC(PowerPC是国际商业机器公司的注册商标)处理器。当被实现为服务器系统时,计算机系统100通常包括被设计来改进网络服务能力的多个处理器。
处理器112通过总线122直接或间接连接到存储元件。在正常操作期间,处理器112在从存储元件访问的程序代码的控制下处理数据。存储元件可包括在程序代码的实际执行期间使用的本地存储器,诸如随机存储器(RAM)114、诸如海量存储设备118的大容量存储器,和提供对至少一些程序代码的临时存储以减少在执行期间必须从大容量存储器检索代码的次数的高速缓冲存储器(未示出)。在一个示例中,RAM 114内的可访问的程序代码是操作系统160。操作系统160包括例如经由显示器124和其他输出接口有助于显示图形用户接口(GUI)的程序代码。另外,操作系统160包括文件系统控制器170,其是用于创建和管理文件系统的程序代码。
本发明可采取完全硬件实施例、完全软件实施例或者包含硬件和软件组件的实施例的形式。在优选实施例中,本发明以包括但不局限于固件、常驻软件、微码等的软件实现。例如,在一个实施例中,操作系统160的文件系统控制器170包含这样的程序代码,即当在处理器112上执行时其通过执行例如图5的流程图内所示的操作和文中所描述的其他操作来创建和管理文件系统。可选择地,本发明的步骤可由包含用于执行该步骤的硬连线逻辑的特定硬件部件执行,或由程控的计算机部件和定制的硬件部件的任何组合来执行。另外,RAM 114可包括应用程序设计接口,或提供扩展以使应用开发者能够开发扩展操作系统160的功能以包括文件系统控制器170的软件的其他接口。
另外,本发明可采取计算机程序产品的形式,该计算机程序产品可以从提供计算机可读程序代码的计算机可用或计算机可读媒体中访问,该计算机可读程序代码由计算机系统100或任何指令执行系统使用或与该系统结合使用。基于本说明的目的,计算机可用或计算机可读媒体可以是能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与该指令执行系统、装置或设备结合使用的程序的任何装置。在一个示例中,计算机可用或计算机可读媒体是参与将程序代码提供给计算机系统100的处理器112或其他组件以便执行的任何装置。
这样的媒体可以采取多种形式,包括但不局限于电子、磁、光、电磁、红外线或半导体系统(或装置、设备)或传播媒体。计算机可读媒体的例子包括但不局限于半导体或固态存储器、磁带、软磁盘、硬盘、可移动计算机磁盘、随机存储器(RAM)114、只读存储器(ROM)116、穿孔卡或具有孔的图案的任何其他物理媒体、刚性磁盘和光盘。光盘的当前例子包括光盘ROM(CD-ROM)、光盘-读/写(CD-R/W)和数字视频盘(DVD)。在另一个例子中,计算机可读媒体可包括海量存储设备118,该设备被示为计算机系统100的内部组件,但是其也可被提供为计算机系统100的外部设备。
包括网络适配器的通信接口132也可连接到该系统,以使计算机系统100能够通过中间专用网络或公用网络连接到其他计算机系统,这些其他系统诸如服务器140或客户机150、远程打印机、或存储设备。通信接口132内的网络适配器可包括但不局限于调制解调器、电缆调制解调器和以太网卡。
具体地,通信接口132通过到网络102的网络链路134,实现到其他设备的连接。例如,局域网(LAN)、广域网(WAN)和因特网服务提供商(ISP)可有助于网络链路134。网络链路134可提供与诸如网络102的一个或多个网络的有线和/或无线网路通信。网络102可指使用诸如传输控制协议(TCP)和网际协议(IP)的特定协议相互通信的网络和网关的世界范围的集合。
通常,网络链路134和网络102均使用承载数字数据流的电、电磁或光信号。承载进出计算机系统100的数字数据的通过各种网络的信号、和位于网络链路134上以及通过通信接口132的信号是传送信息的载波的形式的示例。在一个示例内,诸如服务器140的远程计算机经由网络链路134将本发明用于请求计算机系统100的程序代码以包含在载波或其他传播媒体内的数据信号的形式传送到与总线122连接的通信接口132。
当实现为服务器系统时,计算机系统100通常包括可经由连接到输入/输出控制器的多个外围部件互连(PCI)总线桥访问的多个通信接口。以这种方式,计算机系统100允许经由网络102到诸如客户机150的多个网络计算机的连接。
另外,计算机系统100通常包括有助于通信并可保存数据的输入/输出(I/O)设备120(例如多个外围部件)。这些外围部件通过与多个输入/输出(I/O)控制器、适配器和扩展槽的连接直接或间接地连接到计算机系统100,其中这多个输入/输出(I/O)控制器、适配器和扩展槽连接到总线122的多个层级之一。I/O设备120的示例可包括但不局限于用于控制音频输入和输出的音频I/O设备、用于提供视觉、触觉或其他图形表示格式的显示设备、用于控制指针在显示设备内的位置的光标控制设备,和作为用于对计算机系统100的输入的接口的键盘。另外,I/O设备可包括经由I/O控制器、适配器或扩展槽连接到计算机系统100的拇指驱动器(thumbdrive)或其他便携式数据存储设备。
本领域的普通技术人员应理解,图1内所示的硬件可变换。此外,本领域的普通技术人员应理解,所示出的示例并不旨在限制本发明的体系结构。
现在参照图2,其示出了用于创建和管理文件系统的快照的组件的图示。如文中所使用的,术语“快照”用于指文件系统的快照并且其可被称为“文件系统快照”。
此例示出了用户空间200、内核空间202和盘空间220。应该理解,可实现其他的空间,并且每个空间内的组件可分布在其他空间或多个计算机系统内。
用户空间200包括文件系统用户接口204。文件系统用户接口204接收来自用户的用于访问和控制文件系统的命令。应该理解,用户可以是个人或应用。
盘空间220包括在逻辑上被视为文件系统222、快照224和快照226的数据。快照224和快照226包括位于文件系统222内的数据的至少一部分的只读副本,每个快照具有在不同时间点复制的数据。物理上,文件系统222、快照224和快照226可分布在盘空间220内的不相邻的部分内。盘空间220可包括多种类型的物理数据存储媒体,诸如海量存储设备118、RAM 114和可作为I/O设备120访问的数据存储设备。应该理解,盘空间220可包括除了快照224和快照226之外的快照。另外,应该理解,在其他计算机系统内,文件系统222、快照224和快照226可在盘空间220内合并,并在逻辑上被视为单个逻辑单元。
示出操作系统160的一些功能组件的内核空间202包括文件处理线程206、文件系统快照线程208和文件系统目录210。具体地,文件处理线程206、文件系统快照线程208和文件系统目录210均代表文件系统控制器170的组件。文件系统目录210维护对作为文件存储在文件系统222、快照224和快照226内的数据的引用目录。文件系统目录210可包括多级目录和子目录,在每个目录和子目录下对文件进行组织。如将进一步描述的,在文件系统目录210内利用文件名引用文件系统222内的数据,在文件系统目录210内利用附加于文件系统222内的相关数据的文件名的被命名数据流引用快照224和快照226内的数据。
文件处理线程206通过访问文件系统目录210以定位引用被请求数据的文件,来执行文件系统管理功能和数据访问,诸如读操作、写操作或配设驱动器操作。文件系统快照线程208实现创建诸如快照224和快照226的快照的过程。在一个实施例中,每当有一个文件处理线程206要修改数据,诸如将数据写入文件系统222或从文件系统222删除时,便有一个文件系统线程快照208被触发。文件系统快照线程将文件系统222内要被修改的数据复制到快照,诸如快照224内。应该理解,可实现其他的快照方法;在可选实施例内,文件系统快照线程208可确定何时根据特定用户指定的或特定计算机系统指定的其他准则将数据从文件系统222复制到快照内。
另外,内核空间202包括逻辑卷管理器212。逻辑卷管理器212提供文件处理线程206、文件系统快照线程208与物理盘220之间的接口,其中文件处理线程206和文件系统快照线程208将文件系统222、快照224和快照226的逻辑表示视为文件系统目录210内被引用的。应该理解,尽管是关于在操作系统内核和物理存储设备之间提供接口的逻辑卷管理器212对本发明进行的描述,但是本发明的可选实施例可实现其他类型的用于数据存储和访问的数据管理系统。此外,应该理解,尽管文件系统目录210被示为处于存储器216内,但是盘空间220可包括文件系统目录210的全部或一部分。
根据一个优点,获得文件系统222的活动快照,文件系统快照线程208还创建对附加于文件系统目录210内的相关文件名的快照的引用。具体地,文件系统快照线程208创建被命名数据流形式的引用。被命名数据流包括对被复制文件在快照224或226内的位置的引用。每一被命名数据流的字符属性指示该被命名数据流引用一快照文件。例如,每一被命名数据流可在被命名数据流名称的开始包括“~”。在一个示例内,如果文件系统目录210内的文件路径是/root/bin/abe,其中该文件名为“abe”,则到引用文件“abe”的快照的位置的被命名数据流的文件路径是/root/bin/~abe。应该理解,可使用其他属性标识包含对快照的位置的引用的被命名数据流。
另外,根据一个优点,当用户请求列出文件系统目录210内的特定目录的内容时,文件系统处理线程请求并返回包括该特定目录内的文件名和附加于每个文件名后的被命名数据流的列表。因此,通过能够通过被命名数据流访问快照,用户可访问特定的快照文件而无需首先配设单独的快照目录。而是,由于是从文件系统目录210内的被命名数据流引用对特定快照文件的引用,所以用户可在配设文件系统目录210的同时通过请求被命名数据流来访问该快照文件。
可选地,文件系统快照线程208可创建扩展属性而不是被命名数据流形式的快照引用。扩展属性也可以与被命名数据流相同的方式附加于文件系统目录210内的文件或目录并被隐藏,除非被明确地搜索。因此,在使用扩展属性而不是被命名数据流时,目录的内容的列表仅示出文件名。用户必须明确地在文件系统目录210的目录内搜索扩展属性,尤其是引用快照的扩展属性。应该理解,除了被命名数据流和扩展属性之外,可实现能够附加到文件系统目录内的文件或目录的任何其他数据引用类型,来保存对快照文件的引用。
此外,根据一个优点,当用户请求从文件系统222删除一个文件时,文件系统快照线程208在文件处理线程206删除该文件之前或同时,将引用快照位置的任何被命名数据流加入文件系统目录210内保存将被删除的文件的目录中。从而,尽管用户可从文件系统222删除文件,但是该文件的快照不会被删除,且引用该快照的位置的被命名数据流仍留在文件系统目录210内。
在一个示例中,响应于快照的创建或响应于写文件的命令,创建快照引用(例如被命名数据流或扩展属性)并将其附加于文件系统目录210内的文件名。在一个实施例中,当响应于快照的创建或响应于写文件的命令而创建快照引用时,该快照引用被物理地加入存储器内的文件系统目录210中,并且还被转储到盘空间220内的文件系统222。应该理解,在文件系统目录210和文件系统222之间维护数据一致性依赖于文件系统结构。
在另一个示例内,响应于发现命令,动态地创建快照引用并将其附加于文件系统目录210内的文件名。发现命令的示例包括但不局限于用户请求列出特定目录的内容并打开特定目录。当文件系统快照线程检测到发现命令时,该线程请求向文件系统222发送请求以返回被发现请求的文件的有效快照文件在快照224和226内的位置。具体地,文件系统222可维护有效快照文件的目录,或从快照224和226搜索有效快照文件。在文件系统快照线程从文件系统222检测到有效快照位置时,文件系统快照线程动态地创建快照引用,并将该快照引用附加于文件系统目录210内的相关文件名。动态创建的快照引用仅存在于存储器内的文件系统目录210内。通过根据用户发现请求动态地创建快照引用,文件系统控制器170仅在被请求时创建快照引用,这可提供包括快照引用创建所需的时间和盘空间最小化的性能好处。
现在参照图3,该图示出关于合并到文件系统目录内的快照的文件系统目录。在该示例中,文件系统目录210包括根目录300和包括bin 302、system 304和public 306的子目录层。
在该示例内,被名为“abe”的文件308标识的文件系统数据位于子目录bin 302下。另外,名为“~abe.1”的被命名数据流310和名为“~abe.2”的被命名数据流312附加于文件308。被命名数据流310引用由文件308标识的数据在第一时间点的快照,被命名数据流312引用由文件310标识的数据在第二时间点的快照。应该理解,除了被命名数据流310和312之外,引用其他快照的另外的被命名数据流和引用与文件308相关联的其他数据的另外的被命名数据流或扩展属性均可附加于文件308。另外,应该理解,包括在引用快照的位置的被命名数据流或扩展属性内的数据可引用物理位置或逻辑位置,其中逻辑卷管理器将逻辑位置转换成物理位置。
根据文件系统目录210内的示例目录结构,如果用户提交命令“ls/root/bin”,则所得到的列表将会包括以下条目:“abe”、“~abe.1”和“~abe.2”。因此,使用请求特定目录或子目录的内容的列表的“ls”命令,用户接收到在该目录下的文件和所附加的引用被命名文件的快照文件的被命名数据流的列表。因为快照目录以附加于文件的被命名数据流的形式合并到文件系统目录内,所以用户可在特定时间点定位文件系统文件的快照,而无需配设单独的快照目录。
用户或者操作系统可为引用快照的位置的被命名数据流指定命名约定。在该示例中,所应用的命名约定指定,在被命名数据流310和312的名称的开始处的“~”标识被命名数据流为对快照的位置的引用。另外,每个被命名数据流的名称包括引用在快照内被复制的数据的文件的名称。此外,在该示例中,所应用的命名约定指定,特定文件的随时间发展的每个快照实例的被命名数据流分别由在名称结尾处的“.X”所标识,其中“X”是数字。应该理解,当对被命名数据流进行命名时,文件系统快照线程208可应用其他命名约定。
另外,在该示例中,被命名数据流314附加于子目录public 306上。被命名数据流314被命名为“~toc.1”。如由名称的开始处的“~”所指示的,被命名数据流314引用快照文件。但是,被命名数据流314附加于子目录public 306而不是文件上。在一个实施例中,引用快照并附加于子目录的被命名数据流指示被获取该快照的数据已从该子目录删除。例如,先前,名为“toc”的文件位于子目录public 306下,其中该文件包括所附加的名为“~toc.1”的被命名数据流,该被命名数据流引用由文件“toc”所引用的数据在特定时间点的快照。用户例如通过输入命令“rm/root/public/toc”删除文件“toc”。作为响应,文件处理线程被调用以从public 306和文件系统222删除名为“toc”的文件,且文件系统快照线程被调用以将该被命名数据流从该文件重新附加于public 306。因此,在删除之后,如果用户提交命令“ls/root/public”,则所得到的列表将包括以下条目:“~toc.1”。有利地,由于快照目录以重新附加于目录的被命名数据流的形式合并到文件系统目录中,所以当删除该目录下的文件时,用户可快速识别文件系统目录210内余留的被删除文件的快照。
现在参照图4,该图示出快照引用偏好。在一个实施例中,用户可与图形用户接口交互,以在图4内所示的偏好中进行选择。在另一个实施例中,用户可输入命令以在可用的可选偏好中进行选择。文件系统控制器170可使用偏好400来确定何时触发以及如何控制文件处理线程206和文件系统快照线程208。
在该示例中,用户可选择快照引用创建偏好。在该示例中,用户选择第一偏好402以对于除了public目录306之外的每个目录在发现时动态地创建快照引用,和第二偏好404以在public目录306内写文件时自动创建快照引用。应该理解,用户可选择另外的快照引用创建偏好,并且可手动地在特定时间点请求进行快照引用。
另外,用户可根据目录、文件类型或其他准则选择快照引用类型偏好。在该示例内,用户选择第一偏好406以使用被命名数据流来引用除了public目录306之外的所有目录下的快照。用户选择第二偏好408以使用扩展属性来引用在public目录306下的快照。在其他示例内,用户可根据文件类型或根据是基于写操作还是删除操作来触发快照引用创建,来选择快照引用类型。
现在参照图5,该高级逻辑流程图示出了用于控制在文件系统目录内创建和管理快照引用的过程和程序。如图所示,该过程在块500开始,并此后前进到块502。块502描述文件系统控制器170启用对快照引用创建的设置。例如,文件系统控制器170可从快照引用偏好400或从系统管理员设置启用对快照引用创建的设置。接下来,块504描述确定文件系统控制器170是否检测到对于快照引用的创建的触发。如果检测到对于快照引用的创建的触发,则然后该过程转到块506。
块506描述根据快照偏好400确定被复制文件的快照引用类型。接下来,块508描述确定检测到什么类型的触发。
在块508,如果该触发是在检测到快照的创建或检测到写文件的命令时自动创建快照引用,则该过程转到块518。接下来,块518描述确定是否在有删除命令时触发快照引用创建。
在块518,如果在有删除命令时触发快照引用创建,则该过程转到块520。块520示出将引用快照位置的快照引用类型(例如被命名数据流或扩展属性)附加于保存被复制并且将被删除的文件的目录。接下来,块522描述将任何快照引用(例如被命名数据流或扩展属性)重新附加于保存将被删除的文件的目录,并且该过程结束。应该理解,响应于删除命令从文件系统对文件名和文件数据的实际删除可根据具体计算机系统所使用的文件删除方法而改变。
否则,在块518,如果在有删除命令时不触发快照引用创建,则该过程转到块524。块524描述将引用快照的位置的快照引用(例如被命名数据流或扩展属性)附加于文件系统目录内被该快照所复制的当前文件,且该过程结束。
返回块508,如果触发是在发现时创建,则该过程转到块512。块512描述向文件系统请求发现请求内的当前文件的有效快照的位置。接下来,块514示出动态创建对于已存在于盘空间内的当前文件的有效快照的位置的快照引用并然后将其附加于该发现请求内的当前文件,并且该过程结束。
尽管已参照优选实施例具体示出和描述了本发明,但是本领域内的技术人员应该理解,可在其中进行形式和细节上的各种改变而不会背离本发明的精神和范围。