高效地提供对宿主上下文处的文件内容的客户上下文访问的制作方法

文档序号:31482210发布日期:2022-09-10 04:00阅读:61来源:国知局
高效地提供对宿主上下文处的文件内容的客户上下文访问的制作方法

1.本公开涉及用于高效地将数据从计算机系统的宿主(host)上下文共享到计算机系统的客户(guest)上下文的系统、方法和设备。


背景技术:

2.现代计算机系统通常使用容器化技术来操作不同的特权上下文。一般来说,容器化是指计算机系统提供客户上下文(或分区)的能力,其中一个或多个进程甚至整个操作系统(os)以相对隔离的方式运行。例如,os级虚拟化技术是指如下容器化,其中客户上下文是由宿主os内核创建的隔离用户空间实例,并且其中用户空间进程可以在该内核之上运行,与由相同内核创建的其他客户上下文隔离。os级虚拟化技术的示例包括容器(docker)、区域(solaris)和监狱(freebsd)。基于管理程序的虚拟化技术是指如下容器化,其中客户上下文是由包括管理程序的宿主os创建的虚拟硬件机器,并且其中整个附加的os可以与其他虚拟机隔离运行。基于管理程序的虚拟化技术的示例包括hyper-v(microsoft)、xen(linux)、vmware、virtualbox(oracle)和bhyve(freebsd)。
3.不管使用的容器类型如何,容器通常需要访问一个或多个文件。在许多情况下,这些文件被安装到容器本身中。例如,当创建os级容器时,宿主内核可能将可访问内核的文件系统层次结构的子集与容器相关联,容器的文件可以被安装到该子集中。当创建基于管理程序的容器时,管理程序可能将虚拟硬盘镜像与容器相关联,容器的文件可以被安装到该虚拟硬盘镜像中。在任一种情况下,如果相同文件被多个容器使用,或者如果相同文件被宿主和容器两者使用,则该文件的内容被复制。在一些情况下,容器可能需要访问存储在其上下文外部的文件。这传统上经由文件共享服务器和客户端来处理。但是,这意味着对文件(包括文件元数据)的访问需要在宿主和容器之间进行耗时且低效的上下文切换。对于许多元数据操作,诸如目录列表,这可能会导致大量的上下文切换,极大地影响这些操作的性能。


技术实现要素:

4.本文描述的至少一些实施例涉及“无内容”或“无数据”容器镜像,该容器镜像包括文件系统名称空间内的一个或多个无内容文件的文件元数据,并且缺少那些(多个)文件的实际内容。本文描述的至少一些实施例涉及在具有客户上下文(容器)和宿主上下文的计算机系统中使用这些容器镜像。本文描述的实施例使客户上下文能够从容器镜像挂载文件系统名称空间,并且使用容器镜像中包含的元数据来执行涉及名称空间中包含的无内容文件的文件系统操作(例如,目录列表、察看和编辑文件属性等),而无需上下文切换到宿主上下文。因此,本文描述的实施例使客户上下文能够消费和管理文件元数据,而不会引起上下文切换到宿主上下文的性能损失。本文描述的实施例还使客户上下文能够从宿主上下文请求这些(多个)无内容文件的内容,并且使宿主上下文能够定位适当的文件内容并且将这些内容提供给客户上下文。因此,本文描述的实施例还使得客户上下文和宿主上下文能够共享
共同的文件内容数据,这避免了计算机系统处的数据重复,从而节省了计算机系统处的存储器和存储装置资源。因此,本文描述的实施例提供了双重技术优势:(i)使客户上下文能够执行涉及存储在客户上下文外部的文件的元数据操作,而不会引起到宿主上下文的上下文切换,以及(ii)当文件被多个上下文使用时,避免该文件的重复(在存储装置和存储器两者中)。
5.在一些实施例中,方法、系统和计算机程序产品使用无内容文件的元数据来提供对文件内容的客户上下文访问。在计算机系统的客户上下文内,从容器镜像挂载第一文件系统名称空间。缺少第一文件系统名称空间内包含的第一文件内容的容器镜像包括(i)元数据,其定义第一文件的一个或多个文件系统属性,以及(ii)映射数据,其包括可用于标识第二文件系统名称空间内的第二文件的信息,第二文件系统名称空间在客户上下文外部,并且第一文件的内容从其可获得。基于第一文件的一个或多个文件系统属性,在不切换在计算机系统处的宿主上下文的情况下,执行涉及第一文件的文件系统操作。同样基于第一文件的一个或多个文件系统属性,响应对第一文件的内容的请求访问。响应包括:基于映射数据,向宿主上下文传送针对宿主上下文将第一文件的内容提供给客户上下文的请求。响应还包括:在从上下文切换返回到宿主上下文之后,至少基于从一个或多个客户上下文存储器页面提供第二文件的内容来响应请求访问,一个或多个客户上下文存储器页面被映射到包含第二文件的内容的一个或多个宿主上下文存储器页面。
6.提供本发明内容以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步被描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图说明
7.为了描述可以获得本发明的上述及其他优点和特征的方式,将通过参考在附图中图示的本发明的特定实施例来对以上简要描述的本发明进行更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不应当认被为是对本发明范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明,其中:
8.图1示出了示例计算机架构,其有助于使用无内容文件的元数据来提供对文件内容的客户上下文访问;
9.图2示出了容器镜像的一个示例,并且图示了容器镜像在图1的计算机架构中的使用;以及
10.图3示出了用于使用无内容文件的元数据来提供对文件内容的客户上下文访问的示例方法的流程图。
具体实施方式
11.本文描述的至少一些实施例涉及“无内容”或“无数据”容器镜像,该容器镜像包括文件系统名称空间内的一个或多个无内容文件的文件元数据,并且缺少那些(多个)文件的实际内容。本文描述的至少一些实施例针对在具有客户上下文(容器)和宿主上下文的计算机系统中使用这些容器镜像。本文描述的实施例使客户上下文能够从容器镜像挂载文件系统名称空间,并且使用容器镜像中包含的元数据来执行涉及名称空间中包含的无内容文件
的文件系统操作(例如,目录列表、察看和编辑文件属性等),而无需上下文切换到宿主上下文。因此,本文描述的实施例使客户上下文能够消费和管理文件元数据,而不会引起上下文切换到宿主上下文的性能损失。本文描述的实施例还使客户上下文能够从宿主上下文请求这些(多个)无内容文件的内容,并且使宿主上下文能够定位适当的文件内容并且将这些内容提供给客户上下文。因此,本文描述的实施例还使得客户上下文和宿主上下文能够共享共同的文件内容数据,这避免了计算机系统处的数据重复,从而节省了计算机系统处的存储器和存储装置资源。因此,本文描述的实施例提供了双重技术优势:(i)使客户上下文能够执行涉及存储在客户上下文外部的文件的元数据操作,而不会引起到宿主上下文的上下文切换,以及(ii)当文件被多个上下文使用时,避免该文件的重复(在存储装置和存储器两者中)。
12.在一些实施例中,方法、系统和计算机程序产品使用无内容文件的元数据来提供对文件内容的客户上下文访问。在计算机系统处的客户上下文内,从容器镜像挂载第一文件系统名称空间。缺少第一文件系统名称空间内包含的第一文件内容的容器镜像包括(i)元数据,其定义第一文件的一个或多个文件系统属性,以及(ii)映射数据,其包括可用于标识第二文件系统名称空间内的第二文件的信息,第二文件系统名称空间在客户上下文外部,并且第一文件的内容从其可获得。基于第一文件的一个或多个文件系统属性,在不切换到计算机系统处的宿主上下文的情况下,执行涉及第一文件的文件系统操作。同样基于第一文件的一个或多个文件系统属性,响应对第一文件的内容的请求访问。响应包括:基于映射数据,向宿主上下文传送针对宿主上下文将第一文件的内容提供给客户上下文的请求。响应还包括:在从上下文切换返回到宿主上下文之后,至少基于从一个或多个客户上下文存储器页面提供第二文件的内容来响应请求访问,一个或多个客户上下文存储器页面被映射到包含第二文件的内容的一个或多个宿主上下文存储器页面。
13.图1图示了示例计算机架构100,其有助于使用无内容文件的元数据来提供对文件内容的客户上下文访问。如所示的,计算机架构100包括计算机硬件101,计算机硬件101包括例如一个或多个处理器102、一个或多个存储器设备103(例如系统存储器)、一个或多个持久存储设备104以及一个或多个网络设备105。还如所示的,容器管理器106由硬件101执行。容器管理器106可以表示创建和管理不同安全上下文的任何软件层,诸如宿主上下文107和一个或多个客户上下文108(例如,客户上下文108a和客户上下文108b)。在实施例中,容器管理器106是创建和管理虚拟机容器的管理程序(例如,hyper-v、xen、bhyve等)。然而,本领域的普通技术人员应当理解,本文描述的原理可以在不同类型的容器环境中操作,诸如可以管理哪些存储器页面被映射到容器或被映射到由容器访问的文件的os级虚拟化技术(例如,docker、bsd监狱等),并且因此本公开不限制管理程序类型的容器管理器106的使用。
14.在实施例中,容器管理器106授予宿主上下文107相对于任何客户上下文108的提升特权。例如,这些提升特权通常包括对硬件101的无限制访问以及实例化、调节和销毁客户上下文108的能力。如所示的,宿主上下文107执行包括虚拟化堆栈111的宿主os 110。结合容器管理器106,宿主os 110使用虚拟化堆栈111来实例化、调节和销毁客户上下文108。
15.如所示的,宿主os 110可以在宿主上下文107内实例化一个或多个客户进程109,每个客户进程109对应于不同的客户上下文108。例如,在图1中,客户进程109a对应于客户
上下文108a,并且客户进程109b(如果存在)对应于客户上下文108b(如果存在)。在实施例中,每个客户进程109由虚拟化堆栈111实例化,以托管用于其对应的客户上下文108的存储器地址空间。该存储器空间被对应的客户上下文108视为客户上下文的物理地址空间。例如,宿主os 110的存储器管理器112可以维持(多个)存储器设备103中的物理存储器地址(即,宿主-物理存储器地址,或hpa)到虚拟存储器地址(即,宿主-虚拟存储器地址,或hva)之间的映射。然后,当实例化客户上下文108时,存储器管理器112可以向该客户上下文108的客户进程109分配宿主-虚拟存储器地址。从客户上下文108的角度来看,这些分配的宿主-虚拟存储器地址被视为是物理存储器地址(即客户-物理存储器地址,或gpa)。使用诸如这些的“虚拟地址支持的”(va-backed)虚拟机,在向客户上下文108分配物理存储器和从客户上下文108释放分配物理存储器方面,给予了宿主的存储器管理器112与其对任何其他进程分配和释放分配存储器所具有的灵活性基本相同的灵活性。
16.每个客户上下文108被示为包括对应的客户os 117(例如,针对客户上下文108a的客户os 117a,以及针对客户上下文108b的客户os 117b),并且使用该客户os 116执行一个或多个进程115(例如,客户上下文108a中的(多个)进程115a,和客户上下文108b中的(多个)进程115b)。这些客户os 117可以是相同类型的os,或者它们可以是不同类型的os。例如,客户os 117a和客户os 117b可以都是windows os,或者客户os 117a也可以是windows os,而客户os 117b是linux os。此外,客户os 117可以是与宿主os 110相同类型的os,或者它们可以是不同类型的os。
17.在图1中,宿主os 110被示为包括容器总线114,而每个客户os也被示为包括容器总线120(例如,客户os 117a中的容器总线120a和客户os 117b中的容器总线120b)。在实施例中,这些容器总线114、120使不同的上下文能够通过容器管理器106相互通信。例如,客户上下文108a使用容器总线120a来经由宿主上下文的容器总线114与宿主上下文107通信。
18.在图1中,客户上下文108可以包括容器镜像116(例如,客户上下文108a中的容器镜像116a和客户上下文108b中的容器镜像116b)。在实施例中,容器镜像116被存储在(多个)存储设备104中的(多个)容器镜像104a内,或者通过(多个)网络105可获得(例如,从网络附接的存储装置105a),并且由客户上下文108经由容器管理器106访问。此外,客户os 117可以包括容器镜像文件系统118(例如,客户os 117a中的容器镜像文件系统118a和客户os117b中的容器镜像文件系统118b),并且宿主os 110也可以包括容器镜像文件系统113。如简要提到的,本文的实施例使客户上下文108能够消费和管理来自客户上下文108中的容器镜像116的文件元数据,而不会引起上下文切换到宿主上下文107的性能损失。此外,客户上下文108可以从宿主上下文107请求在容器镜像116中描述的(多个)无内容文件的内容,使得客户上下文108和宿主上下文107能够共享共同文件内容数据。这避免了文件内容数据的重复,并且节省了存储器资源(例如,在(多个)存储器设备103中)和存储装置资源(例如,在(多个)存储设备104中)。例如,客户上下文的容器镜像116可以包含无内容文件,其内容被存储在(多个)存储设备104的宿主存储装置104b中,或者其内容以其他方式通过(多个)网络305被宿主上下文107可访问。
19.图2示出了容器镜像(诸如图1的容器镜像116a、容器镜像116b)的示例200,以及示出了其在计算机架构100内的使用。特别地,图2示出了容器镜像201可以定义不同的区域,包括元数据区域203和映射数据区域204。如由省略号206所指示的,在实施例中,容器镜像
201包括任意数目的区域,诸如所示的数据区域205。在实施例中,这些区域被实施为在容器镜像201中包含的文件系统202上的文件(例如,每个区域一个文件),尽管在一些示例中,它们采用任意数目的其他形式,诸如处于分布或存档文件格式(例如,tarball或zip存档)的松散文件、以数据库格式存储的数据等。
20.在实施例中,容器镜像201被配置为使容器镜像文件系统(例如,图1中的113和/或118)能够挂载由容器镜像201定义的文件系统名称空间并且与之交互。例如,元数据区域203可以定义文件系统元数据,诸如文件和目录的层次结构,包括该层次结构内对象的文件系统属性。在实施例中,对于单个文件和/或目录,元数据区域203定义以下中的一个或多个:对象名称、创建时间、修改时间、访问时间、许可集合等。在实施例中,容器镜像201缺少这些文件中的一个或多个文件的实际内容。在这些情况下,容器镜像201的映射数据区域204包括可用于对元数据区域203中定义的每个“无内容”文件标识其内容作为无内容文件的省略内容而提供的外部文件的信息。在实施例中,容器镜像201也包括一些文件的实际内容。在一个示例中,如果存在,这种内容被存储在数据区域205中。
21.如本领域普通技术人员将理解的,如果由该容器镜像定义的名称空间包含也将存在于计算机架构100内其他地方的文件,则从容器镜像中省略文件内容数据是有利的。例如,假设由容器镜像116a定义的名称空间包括用于客户os 117a的文件,并且假设客户os 117a是与宿主os 110相同的os。在该情况下,宿主上下文107可能需要存储和访问那些相同的文件(例如,使用宿主存储装置104b)。因此,使这些文件在容器镜像116a内无内容(其内容从宿主存储装置104b访问)是有利的,而不是在容器镜像116a内复制这些文件的内容。这节省了存储资源(例如,因为那些文件的内容只需要在宿主存储装置104b内,并且不需要在(多个)容器镜像104a内复制)和存储器资源(例如,因为宿主上下文107可以与客户上下文108a共享宿主的存储器空间内的文件内容的副本,消除了客户上下文108a也将文件内容加载到其自己的存储器空间的需要)。当多个客户上下文108使用与宿主os 110相同的os时,这些好处加倍,因为使用(多个)存储器设备103内的相同存储器,文件内容的单个副本一次可用于多个客户上下文。作为另一个示例,如果多个客户上下文108利用相同的应用数据文件,则可能使用那些上下文的容器镜像116内的无内容文件来访问那些数据文件的单个副本(例如,在宿主存储装置104b、nas 105a等内)。同样地,这些多个客户上下文108能够从存储在存储器中的单个副本访问该内容。
22.不管文件是否具有存储在容器镜像201内的相关联内容,客户上下文108处的容器镜像文件系统113都可以基于元数据区域203内包含的元数据对该文件执行许多文件系统操作。在实施例中,这些操作包括以下中的一个或多个:枚举目录列表中的文件、读取文件的一个或多个文件系统属性、写入/更新文件的一个或多个文件系统属性、删除文件、将文件移动到不同目录等。在这些情况下,容器镜像文件系统113可以执行那些操作,而不会触发从客户上下文108到宿主上下文107的昂贵上下文切换。然而,如果客户上下文108处的容器镜像文件系统113尝试访问无内容文件的内容,则客户上下文108与宿主上下文107进行交互,以便从宿主上下文107获得适当的文件内容,这通常涉及到宿主上下文107的上下文切换。在实施例中,该文件内容由宿主上下文107基于映射数据区域204中的数据进行定位。
23.图2还示出了示例文件系统名称空间207,在示例200中,文件系统名称空间207由容器镜像201定义(例如,使用元数据区域203)。在该示例200中,名称空间207包括文件系统
层次结构,该文件系统层次结构包括三个目录208(即,目录208a至目录208c)和三个文件209(即,文件209a至文件209c)。图2示出了该名称空间207内的对象可以至少部分地使用元数据区域203内包含的文件系统元数据来进行定义。例如,文件209a被示为与元数据部分203a相关联(并且至少部分由其定义),文件209b被示为与元数据部分203b相关联(并且至少部分由其定义),并且文件209c被示为与元数据部分203c相关联(并且至少部分由其定义)。尽管未在示例200中示出,但目录可以类似地与元数据部分相关联/由元数据部分定义。
24.在示例200中,文件209a和文件209b被示为与容器镜像201内(例如,数据区域205内)包括的对应内容相关联。例如,文件209a被示为与数据部分205a相关联,并且文件209b被示为与数据部分205b相关联。然而,在示例200中,文件209c在容器镜像201内缺少对应的内容,如用虚线绘制的表示文件内容部分的框所指示的。如此,文件209c是容器镜像201内的“无内容”文件。由于文件209c是无内容的,因此容器镜像201中的映射数据204包括可用于标识另一个文件系统名称空间内的文件209c的内容的信息。术语“无内容文件”在本文中用于指代存储在容器镜像中的文件的表示,其中该表示包括描述文件的元数据,但是没有文件的内容。
25.例如,图2示出了另一个示例文件系统名称空间210,在计算机架构100的上下文中,文件系统名称空间210是宿主上下文107可访问的文件系统名称空间,但它对于包含容器镜像201的客户上下文108通常不可访问。例如,文件系统名称空间210可以被存储在宿主存储装置104b或nas 105a中。在示例200中,名称空间210包括文件系统层次结构,该文件系统层次结构包括两个目录211(即,目录211a和目录211b)和一个文件212。文件212被示为具有相关联的文件系统元数据213和文件内容214。箭头215(其从映射数据204延伸到名称空间207中的文件209c和名称空间210中的文件212)指示容器镜像201中的映射数据204包括信息,该信息可用于(例如,由宿主上下文107)确定文件212的内容214可用作文件209c的内容。如此,箭头216指示当文件209c被客户上下文108内的容器镜像文件系统118b读取时,容器镜像文件系统118b从文件212读取内容214。用于实现这样的技术将在下文图3的讨论期间更详细地描述。
26.映射数据204可以采取各种形式,诸如以下中的一种或多种:相对路径;诸如文件名的文件标识符;对以下中的一个或多个的哈希:所需文件内容、文件的元数据、文件版本、文件大小、“盐值”;名称空间210内的文件记录标识符,诸如索引节点或主文件表(mft)文件记录等。例如,对于文件209c,映射数据204可以指示相对路径和文件名。在实施例中,该相对路径包括例如目录208a和目录208b的名称以及文件209c的名称。如果对应名称在名称空间210中匹配(例如,如果目录208a和目录211a的名称相同,如果目录208c和目录211b的名称相同,以及如果文件209c和目录212的名称相同),则宿主上下文107能够从该信息标识文件212。作为另一示例,对于文件209c,映射数据204可以指示内容214的哈希。宿主上下文107可以通过利用相同的哈希算法来标识名称空间210中的其内容产生该哈希值的任何文件,来从该信息标识文件212。
27.为了进一步描述前述概念,图3示出了示例方法300的流程图,用于使用无内容文件的元数据来提供对与无内容文件相关联的文件内容的客户上下文访问。将关于计算机架构100和示例200的组件和数据来描述方法300。方法300示出了由客户上下文(例如,客户上
下文108a)执行的行动,以及由宿主上下文(例如,宿主上下文107)执行的行动。在实施例中,客户上下文是支持va的虚拟机,尽管方法300可以适用于其他容器化技术。这些上下文之间的垂直虚线309指示这些上下文之间的边界。因此,任何时候箭头穿过这条线309,都指示上下文切换——即,从包含箭头原点的上下文到包含箭头指向的上下文的上下文切换。
28.如所示的,方法300包括从容器镜像挂载第一文件系统的行动301(在客户上下文处),容器镜像包含针对无内容第一文件的元数据和映射数据。行动301可以包括从容器镜像挂载第一文件系统名称空间,该容器镜像包括(i)元数据,其定义在第一文件系统名称空间内包含的第一文件的一个或多个文件系统属性,容器镜像缺少第一文件的内容;以及(ii)映射数据,其包括可用于标识第二文件系统名称空间内的第二文件的信息,第二文件系统名称空间在客户上下文外部,并且第一文件的内容从第二文件系统可获得。例如,客户上下文108a内的容器镜像文件系统118a可以挂载来自容器镜像116a的第一名称空间,容器镜像116a可以由存储在(多个)容器镜像104a中的镜像数据支持,并且经由容器管理器106使其对客户上下文108a可用。参考图2,在一个示例中,容器镜像文件系统118a挂载来自容器镜像201的名称空间207(即,第一名称空间)。如所讨论的,容器镜像201可以包括元数据区域203,元数据区域203存储针对名称空间207的文件系统元数据,包括针对无内容文件209c(即第一文件)的文件系统元数据。容器镜像201还可以包括映射数据区域204,映射数据区域204存储使宿主上下文107能够定位名称空间210(即,第二名称空间)内的文件212(即,第二文件)的映射数据,文件212的内容可以被用作文件209c的内容。
29.如结合图2讨论的,映射数据204可以采用各种形式,诸如相对路径、文件标识符、哈希、文件记录标识符等。如此,在方法300的实施例中,可用于标识第二文件系统名称空间内的第二文件的信息包括以下中的至少一个:第二文件系统名称空间内的路径、第二文件系统名称空间内的文件名标识符、基于第二文件的哈希或第二文件系统名称空间内的文件记录。
30.方法300还包括基于针对第一文件的元数据,执行涉及第一文件的文件系统操作的行动302(在客户上下文处)。行动302可以包括:基于第一文件的一个或多个文件系统属性,执行涉及第一文件的文件系统操作,而不切换到计算机系统处的宿主上下文。例如,容器镜像文件系统118a可以利用元数据区域203来执行名称空间207内的一个或多个文件系统操作,这些操作可以涉及文件209c。例如,容器镜像文件系统118a可以在执行目录208c的目录列表时枚举文件209c,可以读取和/或写入文件209c的一个或多个属性,可以将文件209c移动到不同的目录208等。在实施例中,行动302由进程115a中的一个或多个进程对容器镜像文件系统118a的请求触发。值得注意的是,在图3中,没有箭头从行动302延伸到在宿主上下文内执行的任何行动(如果存在,它将穿过线309)。如此,在实施例中,行动302可以完全在客户上下文108a内执行,并且不需要涉及到宿主上下文107的任何上下文切换。
31.方法300还包括基于针对第一文件的元数据,响应对第一文件的内容的请求访问的行动303(在客户上下文处)。行动303可以包括:基于第一文件的一个或多个文件系统属性,响应对第一文件的内容的请求访问。如所示的,行动303包括基于第一文件的映射数据,将针对第一文件的内容的请求传送到宿主上下文的行动304(在客户上下文处),并且包括作为对第一文件的内容的请求访问的响应,从(多个)客户存储器页面提供第二文件的内容的行动305(在客户上下文处)。
32.行动304可以包括:基于映射数据,向宿主上下文传送针对宿主上下文向客户上下文提供第一文件的内容的请求。例如,客户os 117a可以向宿主上下文107传送一些请求,请求使得宿主上下文107向客户上下文108a提供文件209c的省略内容。值得注意的是,在图3中,有一个箭头从客户上下文中的行动304延伸到宿主上下文,跨越线309。如此,在行动304期间或之后的某个点,存在从客户上下文到宿主上下文的上下文切换(例如,从客户上下文108a到宿主上下文107)。在实施例中,传送针对宿主上下文向客户上下文提供第一文件的内容的请求触发到宿主上下文的上下文切换。该传送的特定形式可以根据所使用的特定容器管理系统和/或基于设计和实现选择而变化。
33.在一些实施例中,向宿主上下文传送请求是以客户os 117a的存储器页面错误的形式,该页面错误由尝试访问客户上下文存储器页面的客户os 117a触发,该客户上下文存储器页面已由客户上下文108a分配,以用于存储第一文件的内容。在该实施例中,容器镜像文件系统118a使得客户上下文108内的一个或多个存储器页面被分配用于存储第一文件(例如,文件209c)的内容。由于这些存储器页面在客户上下文108a内被分配,因此基于一个或多个gpa,它们对客户上下文108a可访问。作为示例,当容器镜像文件系统118a在行动301中挂载来自容器镜像116a(例如,容器镜像201)的第一名称空间(例如,名称空间207)时,容器镜像文件系统118a请求客户os 117a分配一个或多个客户存储器页面,以用于存储第一文件的内容。然而,由于针对已挂载的容器镜像116a中的第一文件,映射数据204存在,因此容器镜像文件系统118a可以使得这些客户存储器页面被标记为无效。然后,当容器镜像文件系统118a引起对这些已分配的客户存储器页面中的一个客户存储器页面的实际访问(例如,基于访问gpa)时,客户os 117a可以触发存储器页面错误(即,因为该页面无效),这然后在上下文切换之后由宿主上下文107处理。因此,在实施例中,在行动302中,客户上下文从容器镜像挂载第一文件系统名称空间包括:客户上下文保留一个或多个客户上下文存储器页面,以用于访问第一文件。然后,在行动304中,客户上下文向宿主上下文传送用于访问第二文件的文件内容的请求包括:在尝试访问第一文件时,客户上下文在一个或多个客户上下文存储器页面上发起页面错误。发现使用存储器页面错误将请求传送到宿主上下文是与宿主上下文进行通信的一种稳健且高效的方式。
34.在其他实施例中,向宿主上下文传送请求是以从客户上下文108a发送到宿主上下文107的快速消息的形式,快速消息包括映射数据204的一部分。如本文使用的,“快速消息”是从客户上下文108a发送到宿主上下文107的消息,用于获得无内容文件的内容的快速目的。在一个示例中,容器镜像文件系统118a使用容器总线120a向宿主上下文107发送消息,或者使用一些网络文件系统119a(诸如服务器消息块(smb)或网络文件系统(nfs))来向宿主上下文107发送消息。无论哪种方式,容器管理器106都可以将该消息传送给宿主上下文107(例如,传送给宿主上下文107处的容器总线114,传送给在宿主上下文107处运行的网络服务器等)。由于发送该消息涉及容器管理器106,因此这通常将涉及进行从客户上下文108a到宿主上下文107的上下文切换。在实施例中,消息包括如从映射数据204获得的针对第一文件的映射信息。因此,在实施例中,在行动304中,客户上下文向宿主上下文传送针对访问第二文件的文件内容的请求包括:客户上下文向宿主上下文发送消息,该消息包括可用于标识第二文件系统名称空间中的第二文件的信息。在实施例中,客户上下文向宿主上下文发送消息包括:客户上下文执行以下至少一项:调用网络文件系统(例如,网络文件系
统119a)的应用编程接口(api),或调用容器管理系统(例如,容器总线120a)的api。使用快速消息是向宿主上下文传送请求的灵活且高效的方式。
35.在图3中,还存在从宿主上下文延伸到客户上下文中的行动304的箭头,再次跨越线309。如此,在行动305之前的某个点,存在从宿主上下文返回到客户上下文的另一上下文切换(例如,从宿主上下文107到客户上下文108a)。行动305可以包括:在从上下文切换返回到宿主上下文之后,至少基于从一个或多个客户上下文存储器页面提供第二文件的内容来响应请求访问,一个或多个客户上下文存储器页面被映射到包含第二文件的内容的一个或多个宿主上下文存储器页面。例如,容器镜像文件系统118a可以从一个或多个客户上下文存储器页面读取文件212的内容214。这些客户上下文存储器页面包含文件212的内容214,因为宿主上下文107已经将包含该内容214的一个或多个宿主存储器页面映射到那些客户存储器页面。然后,在从客户存储器页面读取该内容214之后,容器镜像文件系统118a可以在响应请求访问时使用该数据。
36.方法300还示出了在客户上下文中的行动304和行动305之间由宿主上下文执行的行动。例如,如所示的,至少基于客户上下文中行动304的执行,方法300可以包括标识第二文件系统内的第二文件的行动306(在宿主上下文处)。行动306可以包括:基于接收到来自客户上下文的请求,标识第二文件系统名称空间内的第二文件。例如,基于行动304的从客户上下文108a到宿主上下文107的传送,宿主os 110可以标识名称空间210(即,第二文件系统)内的文件212(即,第二文件)。宿主os 110标识第二文件的特定方式可以根据行动304的传送的性质而变化。
37.例如,如所解释的,在实施例中,在行动304中客户上下文向宿主上下文传送针对访问第二文件的文件内容的请求包括:在尝试访问第一文件时,客户上下文在一个或多个客户上下文存储器页面上发起页面错误。在实施例中,宿主os 110然后使用宿主107处的容器镜像文件系统113来访问容器镜像116a(例如,来自容器镜像104a),包括访问容器镜像内的映射数据。此外,宿主os 110标识第一文件系统(例如,名称空间207)中页面错误(例如,来自页面错误本身中的信息,和/或通过访问客户上下文108a的映射表信息)适用的第一文件(例如,文件209c)。然后,宿主os 110访问与第一文件相关的映射数据,并且使用该映射数据来标识第二文件系统(例如,名称空间210)中的第二文件(例如,文件212)。因此,在行动306中,宿主上下文标识第二文件系统名称空间内的第二文件可以是基于映射数据。通过使宿主os响应于页面错误而访问容器镜像中的映射数据,并且通过使宿主os基于该访问映射数据来标识第二文件,这些实施例降低了客户上下文处的复杂性并且有助于确保第二文件系统的安全性,因为宿主os完全确定要使用哪个映射数据,并且第二文件系统中的哪个文件由该映射数据标识。
38.在另一示例中,如所解释的,在实施例中,在行动304中客户上下文向宿主上下文传送针对访问第二文件的文件内容的请求包括:客户上下文向宿主上下文发送消息,该消息包括可用于标识第二文件系统名称空间内的第二文件的信息。在实施例中,宿主os 110然后使用该提供的映射信息来标识第二文件系统(例如,名称空间210)中的第二文件(例如,文件212)。为了安全,在实施例中,宿主os 110通过使用容器镜像文件系统113来访问容器镜像116a(例如,来自容器镜像104a)内的映射数据,来附加地验证由客户上下文108a提供的映射数据。通过使客户上下文向宿主os提供映射数据,这些实施例降低了宿主os处的
复杂性。此外,使宿主os验证映射数据进一步确保了第二文件系统的安全性。
39.如所示的,在行动306之后,方法300可以进行到以下至少一项:(i)行动307:标识(多个)宿主存储器页面与(多个)客户存储器页面之间的映射,以及将(多个)宿主存储器页面配置为包含第二文件的内容,或者(ii)行动308:映射(多个)宿主存储器页面与(多个)客户存储器页面,以及将(多个)宿主存储器页面配置为包含第二文件的内容。在任一情况下,通过映射包含第二文件的内容的系统存储器中的存储器页面以供客户上下文使用,使第二文件的内容对客户上下文可用。在实施例中,这包括一个或多个客户上下文存储器页面(其是客户物理存储器页面)与一个或多个宿主上下文存储器页面(其是宿主物理存储器页面或宿主虚拟存储器页面中的至少一个)之间的映射。这些行动中的哪些行动被执行的特定选择可以取决于宿主上下文处的存储器页面映射的现有状态。
40.例如,如果宿主上下文107的存储器管理器112已经在一个或多个宿主上下文存储器页面与一个或多个客户上下文存储器页面之间进行了映射,客户上下文108a可使用该映射来访问第一文件的内容,则方法300的实施例进行到行动307,行动307可以包括:标识一个或多个宿主上下文存储器页面与一个或多个客户上下文存储器页面之间的映射,以及将一个或多个宿主上下文存储器页面配置为包含第二文件的内容。例如,在标识宿主存储器页面和客户存储器页面之间的现有映射之后,宿主os 110可以将第二文件的内容加载到宿主存储器页面中。凭借该映射,第二文件的内容变得对客户存储器页面内的客户上下文108a可见。
41.另一方面,如果在一个或多个宿主上下文存储器页面与一个或多个客户上下文存储器页面之间尚不存在映射,则方法300的实施例进行到行动308,行动308可以包括将一个或多个宿主上下文存储器页面映射到一个或多个客户上下文存储器页面,以及将一个或多个宿主上下文存储器页面配置为包含第二文件的内容。例如,宿主os 110可以使用其存储器管理器112,来创建宿主存储器页面和客户存储器页面之间的映射,并且将第二文件的内容加载到宿主存储器页面中。同样地,凭借映射,第二文件的内容变得对客户存储器页面内的客户上下文108a可见。
42.值得注意的是,如果行动304的传送是页面错误,则客户上下文108a将已经知道一个或多个客户存储器页面的身份。例如,如所讨论的,在行动301中当容器镜像文件系统118a从容器镜像116a挂载第一名称空间时,在实施例中,容器镜像文件系统118a请求客户os117a分配一个或多个客户存储器页面,以存储第一文件的内容。如果行动304的传送是从客户上下文108a发送到宿主上下文107的消息,则一个或多个客户存储器页面可能尚未由客户os 117a分配。在该情况下,在实施例中,宿主os 110向客户os 117a传送这些存储器页面的身份(例如,经由容器总线114)。
43.值得注意的是,宿主上下文107可以从本地存储装置(例如,宿主存储装置104b)或从远程存储装置(例如,nas 105a)访问第二文件。因此,在行动306的实施例中,由宿主上下文从计算机系统外部的源或从计算机系统本地的源访问第二文件系统名称空间。如果从计算机系统外部的源访问第二文件,则在实施例中,宿主os 110利用远程直接存储器访问(rdma)技术来填充宿主存储器页面。因此,在实施例中,在行动307和行动308中,将一个或多个宿主上下文存储器页面配置为包含第二文件的内容包括:通过rdma将第二文件的文件内容填充到一个或多个宿主上下文存储器页面中。
44.因此,本文描述的实施例使得客户上下文能够消费和管理文件元数据,而不会引起上下文切换到宿主上下文的性能损失,并且还使得客户上下文和宿主上下文能够共享共同文件内容数据。因此,本文描述的实施例提供了双重技术优势:(i)使得客户上下文能够对存储在客户上下文外部的文件执行元数据操作,而不会引起到宿主上下文的上下文切换,同时(ii)避免了该文件在它被多个上下文共享时的重复(在存储装置和存储器两者中)。
45.尽管主题已经以特定于结构特征和/或方法行动的语言进行描述,但是应当理解,在所附权利要求中限定的主题并不一定限于所描述的特征或行动或者上述行动的顺序。相反,所描述的特征和行动被公开作为实现权利要求的示例形式。此外,尽管方法行动可以已按特定顺序进行了讨论,并且可以已在流程图中被图示为以特定顺序出现,但是除非特别指明否则不需要任何特定排序,或者因一个行动取决于在该行动被执行之前完成的另一个行动而要求特定排序。
46.本发明的实施例可以包括或利用专用或通用计算机系统,该计算机系统包括计算机硬件,例如一个或多个处理器和系统存储器,如下文更详细讨论的。在本发明的范围内的实施例可以包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储介质。携带计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,通过示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:计算机存储介质和传输介质。
47.计算机存储介质是存储计算机可执行指令和/或数据结构的物理存储介质。物理存储介质包括计算机硬件,诸如ram、rom、eeprom、固态驱动器(“ssd”)、闪存、相变存储器(“pcm”)、光盘存储装置、磁盘存储装置或者其他磁性存储设备或者任何其他(多个)硬件存储设备,该计算机硬件可以用于以计算机可执行指令或数据结构的形式存储程序代码,该程序代码可以由通用或专用计算机系统访问和执行以实现本发明的所公开的功能。
48.传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以用于携带计算机可执行指令或数据结构形式的程序代码并且可以由通用或专用计算机系统访问。“网络”被定义为使得能够在计算机系统和/或模块和/或其他电子设备之间输送电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线或者硬连线或无线的组合)被传送或提供给计算机系统时,计算机系统可以将连接视为传输介质。以上各项的组合也应当被包括在计算机可读介质的范围内。
49.此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码可以自动从传输介质传送到计算机存储介质(反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如,“nic”)内的ram中,然后最终传送到计算机系统ram和/或计算机系统处的更少易失性存储介质。因此,应当理解,计算机可读介质可以被包括在也(或甚至主要地)利用传输介质的计算机系统组件中。
50.例如,计算机可执行指令包括指令和数据,当在一个或多个处理器处执行时,该指令和数据引起通用计算机系统、专用计算机系统或专用处理设备执行特定功能或功能组。计算机可执行指令可以是例如二进制指令、中间格式指令(诸如,汇编语言),甚至源代码。
51.本领域技术人员应当了解,本发明可以利用许多类型的计算机系统配置在网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于多处理器或可编程的消费性电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、平板计算机、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中实践,其中通过网络链接(通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。因此,在分布式系统环境中,计算机系统可以包括多个组成计算机系统。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
52.本领域技术人员也应当了解,本发明可以在云计算环境中被实践。云计算环境可以是分布式的,尽管这不是必需的。当是分布式时,云计算环境可以在组织内进行国际分布和/或具有在多个组织上处理的组件。在本说明书和以下权利要求中,“云计算”被定义为用于能够对可配置计算资源(例如网络、服务器、存储装置、应用和服务)的共享池进行按需网络访问的模型。“云计算”的定义不限于在适当部署时可以从这种模型获取的其他许多优点中的任何一个优点。
53.云计算模型可以由各种特性组成,诸如按需自助服务、广泛的网络访问、资源池化、快速弹性、测量服务等。云计算模型还可以以各种服务模型的形式出现,诸如例如软件即服务(“saas”)、平台即服务(“paas”)和基础设施即服务(“iaas”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。
54.一些实施例(诸如云计算环境)可以包括系统,该系统包括每个能够运行一个或多个虚拟机的一个或多个宿主。在操作期间,虚拟机仿真可操作计算系统,从而支持os以及可能还有一个或多个其他应用。在一些实施例中,每个宿主包括管理程序,该管理程序使用从虚拟机的视图中抽象出来的物理资源来仿真虚拟机的虚拟资源。管理程序还提供虚拟机之间的适当隔离。因此,从任何给定虚拟机的角度来看,管理程序提供虚拟机正在与物理资源接口连接的错觉,即使虚拟机仅与物理资源的外观(例如,虚拟资源)接口连接。物理资源的示例包括处理能力、存储器、磁盘空间、网络带宽、介质驱动器等。
55.本发明可以在不脱离其基本特性的情况下以其他具体形式体现。所描述的实施例在所有方面仅被认为是说明性的,而不是限制性的。因此,本发明的范围由所附权利要求指示的,而不是由前述描述指示。落入权利要求的等同含义和范围内的所有变化都会被包含在其范围内。当在所附权利要求中引入元素时,冠词“一”、“一个”、“该”和“所述”旨在表示存在一个或多个元素。术语“包括”、“包含”和“具有”旨在是包括性的,并且表示可能存在不同于所列举元素的附加元素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1