针对容器的存储隔离制造技术

技术编号:21407038 阅读:18 留言:0更新日期:2019-06-19 09:28
在容器中运行的应用能够经由普通文件系统调用但以保持与其他容器中的应用和进程隔离的方式访问被存储在磁盘上的文件。在一个方面,命名空间虚拟化组件与写入时复制组件耦合。当隔离的应用正访问以只读方式被存储在磁盘上的文件时,命名空间虚拟化组件和写入时复制组件授权对文件的访问。但是,如果应用请求修改文件,则写入时复制组件拦截I/O并将文件的副本有效地创建在磁盘上的不同存储位置中。然后,命名空间虚拟化组件负责经由命名空间映射隐藏文件的副本的真实位置。

Storage isolation for containers

Applications running in containers are able to access files stored on disk through ordinary file systems but in a way that maintains isolation from applications and processes in other containers. In one aspect, namespace virtualization components are coupled to write-time replication components. Namespace virtualization components and replication components authorize access to files when isolated applications are accessing files stored on disk in a read-only manner. However, if the application requests to modify the file, the copy component intercepts I/O at write time and effectively creates copies of the file in different storage locations on disk. Then, the namespace virtualization component is responsible for hiding the true location of the copy of the file through namespace mapping.

【技术实现步骤摘要】
【国外来华专利技术】针对容器的存储隔离
技术介绍
容器是一种类型的虚拟化技术,其允许许多应用在共同主机操作系统下运行,同时保持彼此完全隔离。这种隔离确保容器内部的任何进程都无法看到容器外部的任何进程或者资源。与虚拟机所提供的隔离方法不同,容器不要求使用管理程序,而是使用与操作系统内核相关联的进程隔离和文件系统特征。因此,容器可以提供优于虚拟机的优点,诸如较小的存储要求和缩短的启动时间。容器内的应用和进程可以经由许多文件系统调用与主机文件系统和操作系统交互。
技术实现思路
所公开的是用于在容器中运行的应用经由普通文件系统调用但以保持与其他容器中的应用和进程隔离的方式访问被存储在磁盘上的文件的技术。在一方面,命名空间虚拟化组件与写入时复制组件耦合。当隔离的应用正访问以只读方式被存储在磁盘上的文件时,命名空间虚拟化组件和写入时复制组件授权对文件的访问。但是,如果该应用请求修改文件,则写入时复制组件拦截I/O并将文件的副本有效地创建在磁盘上的不同存储位置中。然后,命名空间虚拟化组件负责经由命名空间映射隐藏文件的副本的真实位置。因此,对于该应用显得就好像应用正访问并写入其请求的资源一样,但实际上其正对文件的副本进行操作。提供本
技术实现思路
是为了以简化的形式介绍一些概念,其在下面的具体实施方式中被进一步描述。本
技术实现思路
既不旨在标识所要求保护的主题的关键特征或者本质特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提到的任何或者所有缺点的限制。附图说明当结合附图阅读时可以更好地理解前述
技术实现思路
以及以下的具体实施方式。为了说明本公开,示出了本公开的各个方面。然而,本公开不限于所讨论的具体方面。在附图中:图1是描绘用于在容器命名空间中创建占位符文件的示例环境的框图。图2是将对容器的文件访问从容器自己的容器命名空间重新定向到只读命名空间的示例进程的流程图。图3是处置容器对被存储在容器自己的容器命名空间中的占位符文件的修改(例如写入)的示例进程的流程图。图4是描绘用于在容器命名空间中创建占位符目录的示例环境的框图。图5是基于只读命名空间的共享目录来在容器命名空间中创建占位符目录的示例进程的流程图。图6是处置容器对占位符目录的修改(例如,重命名或者删除)的示例进程的流程图。图7是描绘针对所加载的文件使用共享存储执行区域的示例环境的框图。图8图示根据本文所公开的虚拟化技术的一方面的、通过顶(例如刮)层和单独源层的合并组件的处理的示例。图9A是描绘其中命名空间虚拟化组件使刮层的内容的位置虚拟化的示例环境的框图。图9B以图形方式图示根据图9A中所图示的示例环境的、虚拟化根、刮层根以及层根之间的关系。图9C图示将文件打开I/O调用从虚拟化目标重新定向到虚拟化目标根的进程的一个实施例。图10图示其中可以采用本文所公开的各个方面的示例性计算设备。具体实施方式本文所描述的技术和系统使得在容器中运行的应用能够经由普通文件系统调用但以保持与其他容器中的应用和进程隔离的方式访问被存储在磁盘上的文件。在各种示例中,容器包括隔离资源控制机制,一个或多个进程(例如,包括应用的进程)可以通过该隔离资源控制机制在不影响容器外部的其他系统或者主机基础设施的情况下执行。容器可以运行操作系统的一些组件(通常为操作系统组件的子集),容器可以具有其自己的文件系统命名空间,和/或容器可以通过网络而被访问,就好像其是物理计算机系统(例如,隔离执行的计算机系统)一样。如上所述,容器依赖于对文件(例如,可执行文件、二进制文件等)的访问来执行容器中所包含的进程。在一些实例中,容器可以与作业相关联。在一个实施例中,容器可以在存储资源(例如,数据中心中的服务器)上具有其自己的容器命名空间(例如,存储容量)。容器命名空间向容器提供文件的视图。本文所描述的技术和系统通过在容器命名空间中创建占位符文件来减少容器所消耗的存储资源量。占位符文件与对被存储在只读命名空间中的对应共享文件的只读访问相关联。只读命名空间可以被多个不同容器访问。这增加了存储单元的存储密度,因为可以从相同存储单元执行更多容器。本文所描述的技术和系统通过创建占位符目录进一步减少容器所消耗的存储资源量。本文所描述的技术和系统还通过使用共享执行存储区域来减少容器用以执行文件所消耗的存储资源量。图1是描绘用于在容器命名空间中创建占位符文件的示例环境或者虚拟化系统100的框图。图1图示了多个容器102(1)…102(N),其中N表示(例如由主机计算设备(诸如图10中所示的主机计算设备)运行的)容器的数目。容器102(1)包括一个或多个进程104,且容器102(N)包括一个或多个进程106。图1还图示了被配置在容器102(1)…102(N)与存储单元110之间的文件系统过滤器108和文件系统109。文件系统过滤器108可以是文件系统109的文件系统堆栈的一部分,并且可以被配置为执行特定输入/输出(I/O)调用的特别处置。例如,应用(例如,进程104)可以通过经由文件系统109的应用编程接口(API)或者计算设备的底层操作系统调用适当的I/O调用来执行文件操作(例如,创建、打开、读取、写入)。这些I/O调用将被传递至文件系统的堆栈,该堆栈可以包括一个或多个文件系统过滤器,诸如文件系统过滤器108。在一种实施方式中,首先,I/O调用将自身传递通过这些过滤器到文件系统109。I/O调用的目标可能具有(例如,以标签和相关数据的形式)与其相关联的、文件系统109可以检测的特别处置指令,该特别处置指令使文件系统将I/O调用向上传递回堆栈以由文件系统过滤器中的一个(诸如文件系统过滤器108)进行特别处置。与I/O调用的目标相关联的标签可以标识适当的文件系统过滤器以提供特别处置。这种特别处置功能的示例是微软(Microsoft)的NTFS重新解析点技术。在微软的NTFS重新解析点技术的情况下,如果文件系统对包含(包括用于特别处置的标签和相关数据/指令的)重新解析点数据结构的磁盘上的文件进行访问,则文件系统将I/O请求向上传递回文件系统过滤器堆栈。与重新解析点的标签(即,全局唯一标识符)相对应的文件系统过滤器将I/O识别为与其访问要由该过滤器处置的文件相关。过滤器将处理I/O,并且然后将I/O传递回文件系统以用于在过滤器的帮助下进行适当处置。在本文所描述的占位符文件的情况下,文件系统将I/O请求向上传递回堆栈到文件系统过滤器108,该文件系统过滤器108将根据在下文中描述的方法处置I/O请求。如上所述,每个容器具有其自己的容器命名空间(例如,容器容量),并且因此,容器102(1)与容器命名空间112(1)相关联,并且容器102(N)与容器命名空间112(N)相关联。存储单元110的示例包括:机器(例如服务器)、磁盘、磁带、扇区等。在一些实例中,可以将存储单元布置成“排”(例如,行),并且可以将多个排的存储单元布置成(例如,被配置在数据中心内的)存储单元的“网格”。如本文中进一步描述的,可以通过覆盖来自只读命名空间114的只读文件来部分地形成容器命名空间。因此,只读命名空间114可以包括文件集合(例如,可执行文件、二进制文件等),该文件可以单独地跨多个不同容器102(1)…102(N)和/或多个不同容器命名空间112(本文档来自技高网...

【技术保护点】
1.一种计算系统,所述计算系统包括:一个或多个处理器;存储器;存储单元,所述存储单元包括与所述计算系统内所限定的容器相关联的容器命名空间,所述容器具有对被存储在所述容器命名空间内的文件的独占访问;文件系统,所述文件系统在所述一个或多个处理器上执行;以及命名空间虚拟化组件,所述命名空间虚拟化组件包括被存储在所述存储器中的计算机可执行指令,所述计算机可执行指令在由所述一个或多个处理器执行时执行包括以下各项的操作:从在所述一个或多个处理器上执行的应用接收请求对文件的操作的输入/输出(I/O)调用,接收到的所述I/O调用包括被投影到所述容器的所述命名空间中的第一目录层级内的所述文件的目录路径,所述第一目录层级具有第一根目录;将所述第一目录层级内的所述文件的所述目录路径映射至所述容器命名空间内的第二目录层级的目标目录路径;基于所述映射,用所述目标目录路径替换所述I/O调用中的所述文件的所述目录路径;以及将包括针对所述文件的所述目标目录路径的所述I/O调用传递至所述计算系统的所述文件系统。

【技术特征摘要】
【国外来华专利技术】2016.11.04 US 62/417,884;2017.06.20 US 15/628,0891.一种计算系统,所述计算系统包括:一个或多个处理器;存储器;存储单元,所述存储单元包括与所述计算系统内所限定的容器相关联的容器命名空间,所述容器具有对被存储在所述容器命名空间内的文件的独占访问;文件系统,所述文件系统在所述一个或多个处理器上执行;以及命名空间虚拟化组件,所述命名空间虚拟化组件包括被存储在所述存储器中的计算机可执行指令,所述计算机可执行指令在由所述一个或多个处理器执行时执行包括以下各项的操作:从在所述一个或多个处理器上执行的应用接收请求对文件的操作的输入/输出(I/O)调用,接收到的所述I/O调用包括被投影到所述容器的所述命名空间中的第一目录层级内的所述文件的目录路径,所述第一目录层级具有第一根目录;将所述第一目录层级内的所述文件的所述目录路径映射至所述容器命名空间内的第二目录层级的目标目录路径;基于所述映射,用所述目标目录路径替换所述I/O调用中的所述文件的所述目录路径;以及将包括针对所述文件的所述目标目录路径的所述I/O调用传递至所述计算系统的所述文件系统。2.根据权利要求1所述的计算系统,所述第二目录层级的所述目标目录路径与所述第二目录层级的刮层相对应。3.根据权利要求2所述的计算系统,所述第二目录层级的所述刮层包含针对所述文件的占位符。4.根据权利要求2至3中任一项所述的计算系统,所述第二目录层级的所述刮层由所述第一目录层级内的一个或多个源层备份。5.根据权利要求1至4中任一项所述的计算系统,用所述目标目录路径替换所述I/O调用中的所述文件的所述目录路径对所述应用是隐藏的,对于所述应用显得好像所述I/O调用被执行于所述第一目录层级内的所述文件上一样。6.根据权利要求1至5中任一项所述的计算系统,所述映射包括:在表中搜索所述I/O调用中包括的所述文件的所述目录路径,所述表将所述第一目录层级的多个目录路径中的每个目录路径与对应的所述第二目录层级的目标目录路径相关联;以及在所述表中定位所述文件的所述目录路径后,从所述表中取回与所述I/O调用中包括的所述文件的所述目录路径相关联的所述目标目录路径。7.根据权利要求6所述的计算系统,针对所述第一目录层级的目录路径与对应的所述第二层级的目标目录路径的每个关联,所述表指示是否要对发出针对具有所述第一目录层级内的所述目录路径的文件的I/O调用...

【专利技术属性】
技术研发人员:S·C·哈夫瓦拉C·G·阿尔雷德
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1