Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
VIRTUALIZATION METHOD AND APPARATUS, AND COMPUTER DEVICE
Document Type and Number:
WIPO Patent Application WO/2015/109593
Kind Code:
A1
Abstract:
A virtualization method and apparatus and a computer device, so as to solve defects that files between containers cannot be really isolated in an existing container virtualization technology, the security is not enough, operations are complex and overheads are great. In some feasible embodiments of the present invention, the method comprises: an operating system creating an independent VFS instance for each of multiple containers, and configuring an independent file management structure for each of the containers in a file system by means of the VFS instance of each of the containers, so that VFS instances independent to each other are separately configured to the multiple containers, and file management structures independent to each other are separately configured to the multiple containers; and when the operating system receives a file operation request sent by an application program in a first container in the multiple containers, and operating, by means of the VFS instance of the first container, a file related to the file operation request by scheduling the file management structure of the first container.

Inventors:
ZHAN QING (CN)
WANG WEI (CN)
CHEN KEPING (CN)
Application Number:
PCT/CN2014/071552
Publication Date:
July 30, 2015
Filing Date:
January 27, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F9/44
Foreign References:
CN103067425A2013-04-24
US20120323853A12012-12-20
CN101828170A2010-09-08
Attorney, Agent or Firm:
SHENPAT INTELLECTUAL PROPERTY AGENCY (CN)
深圳市深佳知识产权代理事务所(普通合伙) (CN)
Download PDF:
Claims:
权 利 要 求

1、 一种虚拟化方法, 其特征在于, 用于虚拟化系统;

所述虚拟化系统包括:硬件层,运行于硬件层之上的操作系统和文件系统, 所述操作系统被划分为彼此隔离的多个容器,每一个所述容器是一个隔离的操 作执行环境, 用于供应用程序运行; 所述多个容器包括第一容器, 所述第一容 器是所述多个容器中的任一个容器;所述文件系统能够被划分为相互独立的多 个文件管理结构;

所述虚拟化方法包括:

所述操作系统为所述多个容器中的每个容器创建一个独立的虚拟文件系 统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每个容器配置独立的 文件管理结构, 使得所述多个容器分別被配置相互独立的 VFS实例, 且所述多 个容器分別被配置相互独立的文件管理结构;

所述操作系统收到所述第一容器中的应用程序发出的文件操作请求时,通 过所述第一容器的 VFS实例调用所述第一容器的文件管理结构对所述文件操 作请求涉及的文件进行操作。

2、 根据权利要求 1所述的方法, 其特征在于, 还包括:

所述操作系统为所述第一容器分配一个专用的处理线程,由所述第一容器 专用的处理线程,对所述第一容器中应用程序的操作进行处理,在对应于所述 第一容器中应用程序的所有操作处理完毕后,释放所述第一容器专用的处理线 程。

3、 根据权利要求 2所述的方法, 其特征在于:

所述操作系统接收到所述第一容器专用的处理线程在开始工作时发送的 加锁请求后,对所述第一容器的文件管理结构加锁, 禁止其它处理线程访问所 述第一容器的文件管理结构;

所述操作系统收到所述第一容器专用的处理线程在结束工作时发送的解 锁请求后, 对所述第一容器的文件管理结构解锁。

4、 根据权利要求 1至 3中任一项所述的方法, 其特征在于, 所述通过所述 第一容器的 VFS实例调用所述第一容器的文件管理结构对所述文件操作请求 涉及的文件进行操作包括:

通过所述第一容器的 VFS实例调用所述文件系统, 并将所述文件操作请求 发送给所述文件系统;以便所述文件系统识別出所述文件操作请求来源于所述 第一容器时,在所述第一容器的文件管理结构中对所述文件操作请求涉及的文 件进行操作。

5、 一种虚拟化装置, 其特征在于, 应用于虚拟化系统;

所述虚拟化系统包括:硬件层,运行于硬件层之上的操作系统和文件系统, 所述操作系统被划分为彼此隔离的多个容器,每一个所述容器是一个隔离的操 作执行环境, 用于供应用程序运行; 所述多个容器包括第一容器, 所述第一容 器是所述多个容器中的任一个容器;所述文件系统能够被划分为相互独立的多 个文件管理结构; 所述虚拟化装置嵌入在所述操作系统中;

所述虚拟化装置包括:

配置模块,用于使所述操作系统为所述多个容器中的每个容器创建一个独 立的虚拟文件系统 VFS实例, 使所述操作系统通过每个容器的 VFS实例在文件 系统中为每个容器配置独立的文件管理结构,使得所述多个容器分別被配置相 互独立的 VFS实例, 且所述多个容器分別被配置相互独立的文件管理结构; 操作模块,用于使所述操作系统收到所述第一容器中的应用程序发出的文 件操作请求时,使所述操作系统通过所述第一容器的 VFS实例调用所述第一容 器的文件管理结构对所述文件操作请求涉及的文件进行操作。

6、 根据权利要求 5所述的装置, 其特征在于:

所述配置模块,还用于使所述操作系统为所述第一容器分配一个专用的处 理线程, 由所述第一容器专用的处理线程,对所述第一容器中应用程序的操作 进行处理, 并在对应于所述第一容器中应用程序的所有操作处理完毕后,使所 述操作系统释放所述第一容器专用的处理线程。

7、 根据权利要求 6所述的装置, 其特征在于, 还包括:

加锁和解锁模块,用于使所述操作系统接收到所述第一容器专用的处理线 程在开始工作时发送的加锁请求后,对所述第一容器的文件管理结构加锁, 禁 止其它处理线程访问所述第一容器的文件管理结构; 以及,使所述操作系统接 收到所述第一容器专用的处理线程在结束工作时发送的解锁请求后,对所述第 一容器的文件管理结构解锁。

8、 根据权利要求 5至 6中任一项所述的装置, 其特征在于:

所述操作模块,具体用于使所述操作系统收到所述第一容器中的应用程序 发出的文件操作请求时, 使所述操作系统通过所述第一容器的 VFS 实例调用 所述文件系统, 并将所述文件操作请求发送给所述文件系统; 以便所述文件系 统识別出所述文件操作请求来源于所述第一容器时,在所述第一容器的文件管 理结构中对所述文件操作请求涉及的文件进行操作。

9、 一种计算机设备, 其特征在于, 包括:

硬件层,运行于硬件层之上的操作系统和文件系统; 所述硬件层包括处理 器, 存储器, 通信接口, 总线, 所述处理器, 存储器, 通信接口通过所述总线 相互的通信;所述通信接口,用于接收和发送数据;所述存储器用于存储程序; 所述处理器用于执行所述存储器中的所述程序;所述操作系统运行在所述 处理器中; 所述操作系统被划分为彼此隔离的多个容器,每一个所述容器是一 个隔离的操作执行环境, 用于供应用程序运行; 所述多个容器包括第一容器, 所述第一容器是所述多个容器中的任一个容器;所述文件系统能够被划分为相 互独立的多个文件管理结构;

其中, 所述处理器执行如下步骤: 为所述多个容器中的每个容器创建一个 独立的虚拟文件系统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每 个容器配置独立的文件管理结构, 使得所述多个容器分別被配置相互独立的 VFS实例, 且所述多个容器分別被配置相互独立的文件管理结构; 收到所述第 一容器中的应用程序发出的文件操作请求时,通过所述第一容器的 VFS实例调 用所述第一容器的文件管理结构对所述文件操作请求涉及的文件进行操作。

10、 根据权利要求 9所述的计算机设备, 其特征在于:

所述处理器还执行如下步骤: 为所述第一容器分配一个专用的处理线程, 由所述第一容器专用的处理线程, 对所述第一容器中应用程序的操作进行处 理,在对应于所述第一容器中应用程序的所有操作处理完毕后,释放所述第一 容器专用的处理线程。

11、 根据权利要求 10所述的计算机设备, 其特征在于: 所述处理器还执行如下步骤:收到所述第一容器专用的处理线程在开始工 作时发送的加锁请求后,对所述第一容器的文件管理结构加锁, 禁止其它处理 线程访问所述第一容器的文件管理结构;收到所述第一容器专用的处理线程在 结束工作时发送的解锁请求后, 对所述第一容器的文件管理结构解锁。

12、 根据权利要求 9至 11中任一所述的计算机设备, 其特征在于: 所述处理器还执行如下步骤:收到所述第一容器中的应用程序发出的文件 操作请求时, 通过所述第一容器的 VFS实例调用所述文件系统, 并将所述文 件操作请求发送给所述文件系统;以便所述文件系统识別出所述文件操作请求 来源于所述第一容器时,在所述第一容器的文件管理结构中对所述文件操作请 求涉及的文件进行操作。

Description:
虚拟化方法和装置及计算机设备 技术领域

本发明涉及计算机技术领域, 具体涉及虚拟化方法和装置及计算机设备。 背景技术

操作系统虚拟化是一种新兴的计算机虚拟化技 术。 Gartner (高德纳, 又 译顾能公司)定义的操作系统虚拟化是指: 共享的操作系统允许多个不同应用 在一份操作系统拷贝的控制下隔离运行。

容器(container )是一种轻量级操作系统虚拟化技术, 容器由在内核态实 现的进程访问控制隔离技术和进程组管理控制 技术,再加上一套完善的用户态 管理工具组成。容器有效地将由单个操作系统 管理的资源划分到孤立的资源组 中, 以更好地在孤立的组之间平衡有沖突的资源使 用需求。容器通过提供一种 创建和进入容器的方式,让容器中的应用程序 就像在独立的操作系统上运行一 样, 但又能共享很多底层的系统资源。 针对容器, 目前有许多成熟的产品, 例 如用于 Linux系统的 LXC ( Linux Container, Linux容器)等。

现有技术的基于容器的操作系统虚拟化技术中 ,多个容器共享虚拟文件系 统(Virtual File Systems, VFS )和底层的文件系统( File Systems , FS ), 容器 间的文件隔离通过文件路径的转换加访问权限 控制策略结合的方式实现。

其中, VFS是文件系统与服务之间的一个接口层。 VFS可对 Linux的每个 文件系统的所有细节进行抽象,使得不同的文 件系统在 Linux核心以及系统中 运行的其他进程看来, 都是相同的。 涉及到针对文件的操作时, VFS把这些操 作影射到对应的文件系统。 底层的文件系统是指 Ext4等实际的文件系统, 这 些文件系统负责管理数据在磁盘上的读取、 存放等。

实践发现, 由于容器间共享底层的文件系统, 容器间的文件并没有真正隔 离开, 因此, 现有的容器虚拟化技术不能完全屏蔽容器间的 文件操作, 安全性 不够; 一些特殊的情况下, 上层用户或者内核可能突破这种限制, 操作其他容 器的文件。 并且, 针对涉及文件的操作, 现有容器虚拟化技术需要进行文件路 径的转换和访问权限控制及校验, 操作复杂, 开销较大。 发明内容

本发明实施例提供一种虚拟化方法和装置及计 算机设备,以解决现有的容 器虚拟化技术不能对容器间的文件进行真正隔 离, 安全性不够; 以及, 操作复 杂, 开销较大的缺陷。

本发明第一方面提供一种虚拟化方法, 用于虚拟化系统; 所述虚拟化系统 包括: 硬件层, 运行于硬件层之上的操作系统和文件系统, 所述操作系统被划 分为彼此隔离的多个容器,每一个所述容器是 一个隔离的操作执行环境, 用于 供应用程序运行; 所述多个容器包括第一容器, 所述第一容器是所述多个容器 中的任一个容器; 所述文件系统能够被划分为相互独立的多个文 件管理结构; 虚拟化方法包括:所述操作系统为所述多个容 器中的每个容器创建一个独立的 虚拟文件系统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每个容器 配置独立的文件管理结构, 使得所述多个容器分別被配置相互独立的 VFS实 例,且所述多个容器分別被配置相互独立的文 件管理结构; 所述操作系统收到 所述第一容器中的应用程序发出的文件操作请 求时,通过所述第一容器的 VFS 实例调用所述第一容器的文件管理结构对所述 文件操作请求涉及的文件进行 操作。

在第一种可能的实现方式中, 所述方法还包括: 所述操作系统为所述第一 容器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所述第一 容器中应用程序的操作进行处理,在对应于所 述第一容器中应用程序的所有操 作处理完毕后, 释放所述第一容器专用的处理线程。

结合第一方面的第一种可能的实现方式,在第 二种可能的实现方式中, 所 述方法还包括:所述操作系统接收到所述第一 容器专用的处理线程在开始工作 时发送的加锁请求后,对所述第一容器的文件 管理结构加锁, 禁止其它处理线 程访问所述第一容器的文件管理结构;所述操 作系统收到所述第一容器专用的 处理线程在结束工作时发送的解锁请求后,对 所述第一容器的文件管理结构解 锁。

结合第一方面或者第一方面的第一种或第二种 可能的实现方式,在第三种 可能的实现方式中,所述通过所述第一容器的 VFS实例调用所述第一容器的文 件管理结构对所述文件操作请求涉及的文件进 行操作包括:通过所述第一容器 的 VFS实例调用所述文件系统, 并将所述文件操作请求发送给所述文件系统; 以便所述文件系统识別出所述文件操作请求来 源于所述第一容器时,在所述第 一容器的文件管理结构中对所述文件操作请求 涉及的文件进行操作。

本发明第二方面提供一种虚拟化装置,应用于 虚拟化系统; 所述虚拟化系 统包括: 硬件层, 运行于硬件层之上的操作系统和文件系统, 所述操作系统被 划分为彼此隔离的多个容器,每一个所述容器 是一个隔离的操作执行环境, 用 于供应用程序运行; 所述多个容器包括第一容器, 所述第一容器是所述多个容 器中的任一个容器; 所述文件系统能够被划分为相互独立的多个文 件管理结 构; 所述虚拟化装置嵌入在所述操作系统中; 虚拟化装置包括: 配置模块, 用 于使所述操作系统为所述多个容器中的每个容 器创建一个独立的虚拟文件系 统 VFS实例, 使所述操作系统通过每个容器的 VFS实例在文件系统中为每个容 器配置独立的文件管理结构,使得所述多个容 器分別被配置相互独立的 VFS实 例, 且所述多个容器分別被配置相互独立的文件管 理结构; 操作模块, 用于使 所述操作系统收到所述第一容器中的应用程序 发出的文件操作请求时,使所述 操作系统通过所述第一容器的 VFS实例调用所述第一容器的文件管理结构对 所述文件操作请求涉及的文件进行操作。

在第一种可能的实现方式中, 所述配置模块,还用于使所述操作系统为所 述第一容器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所 述第一容器中应用程序的操作进行处理,并在 对应于所述第一容器中应用程序 的所有操作处理完毕后, 使所述操作系统释放所述第一容器专用的处理 线程。

结合第二方面的第一种可能的实现方式,在第 二种可能的实现方式中, 所 述装置还包括: 加锁和解锁模块, 用于使所述操作系统接收到所述第一容器专 用的处理线程在开始工作时发送的加锁请求后 ,对所述第一容器的文件管理结 构加锁, 禁止其它处理线程访问所述第一容器的文件管 理结构; 以及, 使所述 操作系统接收到所述第一容器专用的处理线程 在结束工作时发送的解锁请求 后, 对所述第一容器的文件管理结构解锁。

结合第二方面或者第二方面的第一种或第二种 可能的实现方式,在第三种 可能的实现方式中, 所述操作模块, 具体用于使所述操作系统收到所述第一容 器中的应用程序发出的文件操作请求时,使所 述操作系统通过所述第一容器的

VFS实例调用所述文件系统, 并将所述文件操作请求发送给所述文件系统; 以 便所述文件系统识別出所述文件操作请求来源 于所述第一容器时,在所述第一 容器的文件管理结构中对所述文件操作请求涉 及的文件进行操作。

本发明第三方面提供一种计算机设备, 包括: 硬件层, 运行于硬件层之上 的操作系统和文件系统; 所述硬件层包括处理器, 存储器, 通信接口, 总线, 所述处理器, 存储器, 通信接口通过所述总线相互的通信; 所述通信接口, 用 于接收和发送数据; 所述存储器用于存储程序; 所述处理器用于执行所述存储 器中的所述程序; 所述操作系统运行在所述处理器中; 所述操作系统被划分为 彼此隔离的多个容器,每一个所述容器是一个 隔离的操作执行环境, 用于供应 用程序运行; 所述多个容器包括第一容器, 所述第一容器是所述多个容器中的 任一个容器;所述文件系统能够被划分为相互 独立的多个文件管理结构;其中, 所述处理器执行如下步骤:为所述多个容器中 的每个容器创建一个独立的虚拟 文件系统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每个容器配 置独立的文件管理结构,使得所述多个容器分 別被配置相互独立的 VFS实例, 且所述多个容器分別被配置相互独立的文件管 理结构;收到所述第一容器中的 应用程序发出的文件操作请求时, 通过所述第一容器的 VFS实例调用所述第 一容器的文件管理结构对所述文件操作请求涉 及的文件进行操作。

在第一种可能的实现方式中, 所述处理器还执行如下步骤: 为所述第一容 器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所述第一 容 器中应用程序的操作进行处理,在对应于所述 第一容器中应用程序的所有操作 处理完毕后, 释放所述第一容器专用的处理线程。

结合第三方面的第一种可能的实现方式,在第 二种可能的实现方式中, 所 述处理器还执行如下步骤:收到所述第一容器 专用的处理线程在开始工作时发 送的加锁请求后,对所述第一容器的文件管理 结构加锁, 禁止其它处理线程访 问所述第一容器的文件管理结构;收到所述第 一容器专用的处理线程在结束工 作时发送的解锁请求后, 对所述第一容器的文件管理结构解锁。

结合第三方面或者第三方面的第一种或第二种 可能的实现方式,在第三种 可能的实现方式中, 所述处理器还执行如下步骤: 收到所述第一容器中的应用 程序发出的文件操作请求时, 通过所述第一容器的 VFS实例调用所述文件系 统, 并将所述文件操作请求发送给所述文件系统; 以便所述文件系统识別出所 述文件操作请求来源于所述第一容器时,在所 述第一容器的文件管理结构中对 所述文件操作请求涉及的文件进行操作。

由上可见, 本发明实施例采用为每个容器配置独立的 VFS实例, 以及, 在 底层的文件系统中为每个容器配置独立的文件 管理结构,进行涉及文件的操作 的技术方案, 取得了以下技术效果:

一方面, 通过为每个容器配置独立的 VFS实例和独立的文件管理结构, 在 容器间实现了真正的文件隔离,可完全屏蔽容 器间的文件操作,提高了安全性; 另一方面,通过为每个容器配置独立的 VFS实例和独立的文件管理结构, 每个容器可具有专用的文件系统路径,针对涉 及文件的操作, 不用进行文件路 径的转换和访问权限控制及校验, 降低了操作复杂性和系统开销。

附图说明

为了更清楚地说明本发明实施例技术方案,下 面将对实施例和现有技术描 述中所需要使用的附图作筒单地介绍, 显而易见地, 下面描述中的附图仅仅是 本发明的一些实施例,对于本领域普通技术人 员来讲,在不付出创造性劳动的 前提下, 还可以根据这些附图获得其它的附图。

图 1是本发明实施例提供的虚拟化方法的流程图

图 2是本发明实施例中容器及文件系统的架构示 图;

图 3是本发明实施例中文件系统的示意图;

图 4a是本发明一个实施例提供的虚拟化装置的示 图;

图 4b是本发明另一实施例提供的虚拟化装置的示 图;

图 5是本发明实施例提供的一种计算机设备的示 图。

具体实施方式

本发明实施例提供一种虚拟化方法和装置及计 算机设备,以解决现有的容 器虚拟化技术不能对容器间的文件进行真正隔 离, 安全性不够; 以及, 操作复 杂, 开销较大的缺陷。

为了使本技术领域的人员更好地理解本发明方 案,下面将结合本发明实施 例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所 描述的实施例仅仅是本发明一部分的实施例, 而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所 有其他实施例, 都应当属于本发明保护的范围。

下面通过具体实施例, 分別进行详细的说明。 首先对本发明技术方案涉及的虚拟化系统做筒 单介绍。本实施例中所说的 虚拟化系统是一个计算机系统, 包括: 硬件层, 运行于硬件层之上的操作系统 和文件系统, 所述操作系统被划分为彼此隔离的多个容器, 每一个所述容器是 一个隔离的操作执行环境, 用于供应用程序运行; 所述文件系统能够被划分为 相互独立的多个文件管理结构。 其中:

硬件层是虚拟化环境运行的硬件平台。硬件层 可包括多种硬件, 例如某计 算节点的硬件层可包括处理器(例如 CPU )和存储器(例如内存), 还可以包 括网卡、 存储器等等高速 /低速输入 /输出 (I/O, Input/Output )设备, 及具有特 定处理功能的其它设备, 如输入输出内存管理单元 (IOMMU, Input/Output

Memory Management Unit ),其中 IOMMU可用于虚拟机物理地址和 Host物理地 址的转换。

容器是从操作系统中划分出来的一个隔离的操 作执行环境,每个容器可视 为操作系统(例如 Linux系统) 的一部分。 不同用户或组织的应用程序分別在 不同的容器中执行。 容器之间可以提供数据上的隔离。 与传统的虚拟化相比, 容器既不需要指令级模拟, 也不需要即时翻译。 容器可以在核心 CPU本地运行 指令, 而不需要任何专门的解释机制。 此外, 容器也避免了准虚拟化

( paravirtualization )和系统调用替换中的复杂性。 为方便描述, 本文^殳上述 多个容器包括第一容器, 该第一容器可以是所说的多个容器中的任一个 容器。

所说的文件系统, 可以是集成在操作系统中的文件系统,也可以 外部挂载 的文件系统。 本发明实施例中, 需要对文件系统进行改进, 使每个文件系统都 支持这样的特性: 文件系统应允许被划分为多个相互独立的文件 管理结构, 或 者说, 允许被划分为多个相互独立的存储空间。

计算机系统中, 底层可包括多个物理的文件系统, 例如 Ext4等, 为了使多 个底层的文件系统可统一工作, 底层文件系统之上可设有虚拟文件系统 ( VFS ), VFS可将多个底层文件系统统一抽象成一个文件 系统供用户使用。 上层应用可利用 API ( Application Programming Interface , 应用编程接口)通过 库的方式调用 VFS层, VFS再把操作影射到对应的底层文件系统。 VFS是文件 系统的管理者, 初始化时由操作系统在内存中创建。 VFS只存在于内存中, 不 存在于任何外存空间。 并且, VFS在系统启动时建立, 在系统关闭时消亡。 请参考图 1 , 本发明实施例提供一种虚拟化方法, 用于上述的虚拟化系统。 方法可包括:

110、 所述操作系统为所述多个容器中的每个容器创 建一个独立的虚拟文 件系统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每个容器配置独 立的文件管理结构, 使得所述多个容器分別被配置相互独立的 VFS实例, 且所 述多个容器分別被配置相互独立的文件管理结 构。

如图 2所示, 是本发明实施例中容器及文件系统的架构示意 图。 相对于现 有技术中所有的容器共享一个 VFS实例, 本发明实施例中, 计算机操作系统例 如 Linux系统可创建多个 VFS实例, 从而为每个容器配置一个独立的 VFS实例。 通过将为每个容器配置的 VFS实例挂载在容器中, 使每个容器和每个 VFS实例 建立起唯一对应的匹配关系, 每个容器内的应用只能调用挂载在该容器内的 VFS实例, 而不能调用其他容器的 VFS实例。 例如, 以图 2为例, 可分別为容 器 Containerl配置 VFS1 , 为容器 Containerl配置 VFS2。

如图 3所示, 是本发明实施例文件系统的示意图, 文件系统一般采用文件 管理树的方式组织。 现有计算机系统中的文件系统, 只包括一颗文件管理树, 共享给多个容器使用, 多个容器的数据可交错存放在文件管理树的任 意位置。 如图 3所示, 本发明实施例的文件系统, 以容器为单位, 划分出多颗相互独立 的文件管理树,从而为每个容器配置一个独立 的文件管理树,作为配置给容器 的文件管理结构。 每个文件管理结构可被计算机操作系统赋予唯 一的标识符 号, 例如, 可以用序列号标识各个文件管理结构。 其中, 每个容器的文件管理结构, 是由操作系统通过该容器的 VFS实例在 文件系统内配置给该容器的。 某个容器的 VFS实例, 对该容器的文件管理结构 的所有细节进行抽象, 因此, 每个容器的 VFS实例和文件管理结构具有唯一对 应的匹配关系, 每个容器的 VFS实例只能调用该容器的文件管理结构, 而不能 调用其他容器的文件管理结构。

由上可见, 本发明技术方案是从文件系统的角度为容器虚 拟化进行设计、 适配。 通过为容器设置独立的 VFS实例和独立的文件管理结构, 使每个容器只 可以操作各自的文件。

需要说明的是, 本发明实施例中, 采用将传统的单一的文件管理树划分为 多树的结构, 实现将文件系统划分为多个文件管理结构。 但是, 在以其它形式 组织的文件系统中, 也可以采用其它形式划分文件管理结构。

本发明实施例中,计算机系统支持挂载外部文 件系统。所挂载的外部文件 系统, 需要按照上文所述, 支持如下特性: 在文件系统内部, 允许以容器为单 位, 划分为多个相互独立的文件管理结构, 以支持在文件系统内为每个容器配 置一个独立的文件管理结构。 本发明实施例中, 所挂载的外部文件系统会被视 为独立的底层文件系统, 挂载到容器中来。 挂载外部文件系统是 Linux文件系 统的一大特点, 本发明实施例通过支持该特性, 以实现对文件系统的扩展。

本发明实施例中, 为了提高系统性能, 以及提供对容器并行操作的支持, 优选采用具有多核或众核处理器的计算机系统 ,计算机操作系统可为每个容器 配置置一个专用的处理线程, 使各个容器的任务分別由不同的处理线程执行 , 从而使多个容器具有并行处理的能力。其中, 某个容器的处理线程在任务完成 后, 会被释放回资源池中。 例如: 所述操作系统可以为上述多个容器中的第一 容器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所述第一 容器中应用程序的操作进行处理,并在对应于 所述第一容器中应用程序的所有 操作处理完毕后, 释放所述第一容器专用的处理线程。

120、 所述操作系统收到所述第一容器中的应用程序 发出的文件操作请求 时,通过所述第一容器的 VFS实例调用所述第一容器的文件管理结构对所 述文 件操作请求涉及的文件进行操作。 现有技术中, 由于多个容器共享 VFS和底层文件系统, 因此, 针对涉及文 件的操作, VFS需要为每个容器设置一个文件系统的路径转 换功能, 例如: 将 / -> /home/lxcl/, /root -> /home/lxcl/root, 等。

而本发明实施例中, 由于每个容器配置有各自独立的 VFS实例, 并通过每 个容器的 VFS实例为每个容器配置有独立的文件管理结构 ; 因此, 不需要配置 路径转换, 每个容器都有自己固定的文件系统路径。

当一个容器例如第一容器中的应用程序需要进 行涉及文件的操作时,会发 出文件操作请求给第一容器的 VFS实例, 第一容器的 VFS实例收到文件操作请 求后, 无需进行路径转换, 可直接调用第一容器的文件管理结构对文件操 作请 求涉及的文件进行操作。

其中,所述操作系统收到所述第一容器中的应 用程序发出的文件操作请求 时,通过所述第一容器的 VFS实例调用所述第一容器的文件管理结构对所 述文 件操作请求涉及的文件进行操作, 具体可以包括: 所述操作系统收到所述第一 容器中的应用程序发出的文件操作请求时,通 过所述第一容器的 VFS实例调用 所述文件系统, 并将所述文件操作请求发送给所述文件系统; 以便所述文件系 统识別出所述文件操作请求来源于所述第一容 器时,在所述第一容器的文件管 理结构中对所述文件操作请求涉及的文件进行 操作。

假定为容器 1配置有独立的 VFS实例 1 , VFS实例 1在文件系统 1中为该容器

1划分有独立的文件管理结构 1 , 则, 容器 1的文件都会被放置在对应的文件管 理结构 1中。 那么, 如果容器 1中的应用需要对文件 1进行操作时, 会发出文件 操作请求, 调用 VFS实例 1 , 并通过 VFS实例 1调用文件系统 1 , 文件操作请求 中可包含容器 1或文件管理结构 1的标识, 以便文件系统 1识別, 则文件系统 1 可以在文件管理结构 1中对文件 1进行操作。

可见,每个容器的文件会被放置在该容器对应 的文件管理结构中,每个容 器的应用只能通过该容器的 VFS实例,调用文件系统对该容器的文件管理结 构 中的文件进行操作, 而不能对其它文件管理结构进行操作。 因此, 本方案可以 提供容器间完全的隔离。

需要说明的是, 本发明技术方案中,假设两个或多个容器有相 同命名的文 件, 虽然文件的名字是相同的,但是两个文件会属 于不同的容器和不同的文件 管理结构,会被分配在不同的存储空间内; 即, 同名的文件被作为不同的文件, 分別被各个容器独立操作。

并且, 本发明技术方案不会影响单独容器内文件系统 的性能, 因为在一个 文件系统内部, 为每个容器配置独立的文件管理结构, 开辟独立的存储空间, 具有独立的索引节点 (inode )和目录项 (dentry ), 每个容器只能操作属于自 己的部分, 这种操作不会增加单个容器内的负载。

另外, 本发明技术方案可以提高文件系统的并行性。

现有技术中, 对于多个容器而言, 底层文件系统是完全共享的, 所以一个 容器中的文件操作会对整个文件系统加锁,造 成另一个容器的处理线程有任务 时只能等待, 两个容器不能完全并行。

而本发明技术方案将底层文件系统以容器为单 位,划分成多个文件管理结 构,每个文件管理结构在逻辑上是完全独立的 。 而操作系统内核可以配置多个 内核处理线程, 专门处理内核相关的事物, 这里, 可为每个容器配置一个专门 的处理线程, 处理容器内文件操作事务。

由于为每个容器配置独立的文件管理结构和独 立的处理线程,一个容器的 处理线程工作时,仅会对该容器的文件管理结 构加锁, 不会影响其它文件管理 结构, 因此, 其它容器的处理线程完全可以同时工作, 使系统中容器间的文件 操作完全可以是并行的。

具体的, 上述多个容器中的第一容器专用的处理线程在 开始工作时, 可以 发送加锁请求给所述操作系统, 所述操作系统可在收到该加锁请求后,对所述 第一容器的文件管理结构加锁,禁止其它处理 线程访问所述第一容器的文件管 理结构; 并且, 所述第一容器专用的处理线程在结束工作时, 可以发送解锁请 求给所述操作系统, 所述操作系统可在收到该解锁请求后,对所述 第一容器的 文件管理结构解锁。

需要说明的是, 本发明实施例中, 虽然各个容器之间是相互隔离的, 不能 直接操作其它容器的文件,但是, 允许各个容器之间可以通过网络共享或类似 的共享方式实现对文件的共享。 可以理解, 本发明实施例上述方案例如可以在计算机设备 具体实施。

由上可见, 本发明实施例采用为每个容器配置独立的 VFS实例, 并在文件 系统中为每个容器配置独立的文件管理结构, 任一个容器中的应用进行涉及文 件的操作时,通过该容器的 VFS实例调用该容器的文件管理结构对涉及的文 件 进行操作的技术方案, 取得了以下技术效果:

一方面, 通过为每个容器配置独立的 VFS实例和独立的文件管理结构, 在 容器间实现了真正的文件隔离,可完全屏蔽容 器间的文件操作,提高了安全性; 现有技术中, 容器间共享文件系统, 容器间的隔离是在操作系统层面实现的, 因此隔离性不好, 容易被突破; 而本发明实施例中, 容器间的隔离是在文件系 统层面实现的, 是真正完全的隔离。

另一方面, 每个容器配置独立的 VFS实例和独立的文件管理结构, 从而具 有固定的文件系统路径,针对涉及文件的操作 , 不用进行文件路径的转换和访 问权限控制及校验, 降低了操作复杂性和系统开销;

又一方面, 在为每个容器配置独立的 VFS实例和文件管理结构的基石出上, 再为每个容器配置独立的处理线程, 使多个容器可以实现完全的并行操作; 再一方面, 本发明技术方案可共享操作系统的存储空间, 最大化利用文件 系统的存储空间。 为了更好的实施本发明实施例的上述方案,下 面还提供用于配合实施上述 方案的相关装置。

请参考图 4a, 本发明实施例提供一种虚拟化装置, 用于虚拟化系统, 所述 虚拟化系统包括: 硬件层, 运行于硬件层之上的操作系统和文件系统, 所述操 作系统被划分为彼此隔离的多个容器,每一个 所述容器是一个隔离的操作执行 环境, 用于供应用程序运行; 所述多个容器包括第一容器, 所述第一容器是所 述多个容器中的任一个容器;所述文件系统能 够被划分为相互独立的多个文件 管理结构; 所述虚拟化装置嵌入(或集成)在所述操作系 统中;

虚拟化装置可包括:

配置模块 410 , 用于使所述操作系统为所述多个容器中的每个 容器创建一 个独立的虚拟文件系统 VFS实例, 使所述操作系统通过每个容器的 VFS实例在 文件系统中为每个容器配置独立的文件管理结 构,使得所述多个容器分別被配 置相互独立的 VFS实例, 且所述多个容器分別被配置相互独立的文件管 理结 构;

操作模块 420 , 用于使所述操作系统收到所述第一容器中的应 用程序发出 的文件操作请求时,使所述操作系统通过所述 第一容器的 VFS实例调用所述第 一容器的文件管理结构对所述文件操作请求涉 及的文件进行操作。

本发明的一些实施例中, 所述配置模块 420, 还用于使所述操作系统为所 述第一容器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所 述第一容器中应用程序的操作进行处理,并在 对应于所述第一容器中应用程序 的所有操作处理完毕后, 使所述操作系统释放所述第一容器专用的处理 线程。

如图 4b所示, 本发明的一些实施例中, 系统还可以包括: 加锁和解锁模块 430, 用于使所述操作系统接收到所述第一容器专用 的处理线程在开始工作时 发送的加锁请求后,对所述第一容器的文件管 理结构加锁, 禁止其它处理线程 访问所述第一容器的文件管理结构; 以及,使所述操作系统接收到所述第一容 器专用的处理线程在结束工作时发送的解锁请 求后,对所述第一容器的文件管 理结构解锁。

本发明的一些实施例中, 所述操作模块 420, 具体用于使所述操作系统收 到所述第一容器中的应用程序发出的文件操作 请求时,使所述操作系统通过所 述第一容器的 VFS实例调用所述文件系统,并将所述文件操作 请求发送给所述 文件系统; 以便所述文件系统识別出所述文件操作请求来 源于所述第一容器 时,在所述第一容器的文件管理结构中对所述 文件操作请求涉及的文件进行操 作。

可以理解,本发明实施例的虚拟化装置的各个 功能模块的功能可根据上述 方法实施例中的方法具体实现,其具体实现过 程可参照上述方法实施例中的相 关描述, 此处不再赘述。

由上可见, 本发明实施例采用为每个容器配置独立的 VFS实例, 在文件系 统中为每个容器配置独立的文件管理结构,任 一个容器中的应用进行涉及文件 的操作时,通过该容器的 VFS实例调用该容器的文件管理结构对涉及的文 件进 行操作的技术方案, 取得了以下技术效果:

一方面, 通过为每个容器配置独立的 VFS实例和独立的文件管理结构, 在 容器间实现了真正的文件隔离,可完全屏蔽容 器间的文件操作,提高了安全性; 另一方面, 每个容器配置独立的 VFS实例和独立的文件管理结构, 从而具 有固定的文件系统路径,针对涉及文件的操作 , 不用进行文件路径的转换和访 问权限控制及校验, 降低了操作复杂性和系统开销;

又一方面, 在为每个容器配置独立的 VFS实例和文件管理结构的基石出上, 再为每个容器配置独立的处理线程, 使多个容器可以实现完全的并行操作; 再一方面, 本发明技术方案可共享操作系统的存储空间, 最大化利用文件 系统的存储空间。 本发明实施例还提供一种计算机存储介质,该 计算机存储介质可存储有程 序, 该程序执行时包括上述方法实施例中记载的虚 拟化方法的部分或全部步 骤。 请参考图 5 , 本发明实施例还提供一种计算机设备 500, 可包括:

硬件层,硬件层包括: 处理器 510,存储器 520, 通信接口 530, 总线 540, 所述处理器 510, 存储器 520, 通信接口 530通过所述总线 540相互的通信; 所述通信接口 530, 用于接收和发送数据; 所述存储器 520用于存储程序; 所 述处理器 510用于执行所述存储器中的所述程序;所述操 作系统运行在所述处 理器 510中。所述操作系统被划分为彼此隔离的多个 容器,每一个所述容器是 一个隔离的操作执行环境,用于供应用程序运 行;所述多个容器包括第一容器, 所述第一容器是所述多个容器中的任一个容器 ;所述文件系统能够被划分为相 互独立的多个文件管理结构。

其中, 处理器 510执行如下步骤: 为所述多个容器中的每个容器创建一个 独立的虚拟文件系统 VFS实例, 并通过每个容器的 VFS实例在文件系统中为每 个容器配置独立的文件管理结构, 使得所述多个容器分別被配置相互独立的 VFS实例, 且所述多个容器分別被配置相互独立的文件管 理结构; 收到所述第 一容器中的应用程序发出的文件操作请求时, 通过所述第一容器的 VFS实例调 用所述第一容器的文件管理结构对所述文件操 作请求涉及的文件进行操作。 在本发明的一些实施例中, 处理器 510还可以执行如下步骤: 为所述第一 容器分配一个专用的处理线程, 由所述第一容器专用的处理线程,对所述第一 容器中应用程序的操作进行处理,在对应于所 述第一容器中应用程序的所有操 作处理完毕后, 释放所述第一容器专用的处理线程。

在本发明的一些实施例中, 处理器 510还可以执行如下步骤: 收到所述第 一容器专用的处理线程在开始工作时发送的加 锁请求后,对所述第一容器的文 件管理结构加锁, 禁止其它处理线程访问所述第一容器的文件管 理结构; 收到 所述第一容器专用的处理线程在结束工作时发 送的解锁请求后,对所述第一容 器的文件管理结构解锁。

在本发明的一些实施例中, 处理器 510还可以执行如下步骤: 收到所述第 一容器中的应用程序发出的文件操作请求时, 通过所述第一容器的 VFS实例调 用所述文件系统, 并将所述文件操作请求发送给所述文件系统; 以便所述文件 系统识別出所述文件操作请求来源于所述第一 容器时,在所述第一容器的文件 管理结构中对所述文件操作请求涉及的文件进 行操作。

在本发明的一些实施例中,若两个或两个以上 容器的操作涉及相同命名的 文件时,每个容器的文件管理结构在各自的存 储空间对各自涉及的文件进行独 立操作。

可以理解,本发明实施例的计算机设备的各个 功能模块的功能可根据上述 方法实施例中的方法具体实现,其具体实现过 程可参照上述方法实施例中的相 关描述, 此处不再赘述。

由上可见,在本发明的一些可行的实施方式中 , 本发明实施例采用为每个 容器配置独立的 VFS实例, 在文件系统中为每个容器配置独立的文件管理 结 构, 任一个容器中的应用进行涉及文件的操作时, 该容器的 VFS实例调用该容 器的文件管理结构对涉及的文件进行操作的技 术方案, 取得了以下技术效果: 一方面, 通过为每个容器配置独立的 VFS实例和独立的文件管理结构, 在 容器间实现了真正的文件隔离,可完全屏蔽容 器间的文件操作,提高了安全性; 另一方面, 每个容器配置独立的 VFS实例和独立的文件管理结构, 从而具 有固定的文件系统路径,针对涉及文件的操作 , 不用进行文件路径的转换和访 问权限控制及校验, 降低了操作复杂性和系统开销;

又一方面, 在为每个容器配置独立的 VFS实例和文件管理结构的基石出上, 再为每个容器配置独立的处理线程, 使多个容器可以实现完全的并行操作; 再一方面, 本发明技术方案可共享操作系统的存储空间, 最大化利用文件 系统的存储空间。 在上述实施例中,对各个实施例的描述都各有 侧重, 某个实施例中没有详 细描述的部分, 可以参见其它实施例的相关描述。

需要说明的是, 对于前述的各方法实施例, 为了筒单描述, 故将其都表述 为一系列的动作组合,但是本领域技术人员应 该知悉, 本发明并不受所描述动 作顺序的限制, 因为依据本发明, 某些步骤可以采用其它顺序或者同时进行。 其次, 本领域技术人员也应该知悉,说明书中所描述 的实施例均属于优选实施 例, 所涉及的动作和模块并不一定是本发明所必须 的。

本领域普通技术人员可以理解上述实施例的各 种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成, 该程序可以存储于一计算机可读 存储介质中, 存储介质可以包括: ROM、 RAM, 磁盘或光盘等。

以上对本发明实施例所提供的一种虚拟化方法 和装置及计算机设备进行 以上实施例的说明只是用于帮助理解本发明的 方法及其核心思想; 同时,对于 本领域的一般技术人员,依据本发明的思想, 在具体实施方式及应用范围上均 会有改变之处, 综上所述, 本说明书内容不应理解为对本发明的限制。