APP下载

一种基于VirtFS的共享文件空间技术

2020-04-09刘清王帆李冬施涛

计算技术与自动化 2020年1期
关键词:云计算

刘清 王帆 李冬 施涛

摘   要:由于虚拟环境多次I/O操作模拟的存在,运行在宿主服务器中的各虚拟客户机之间使用传统代理进行文件访问效率不高。为此,提出了基于VirtFS的共享文件空间技术。构建了虚拟客户机共享文件空间的系统架构,设计了虚拟磁盘操作映射机制,使用VirtFS框架提供的系统层接口,在宿主服务器中的VirtFS服务端截取和映射文件操作,直接將虚拟机文件系统的操作映射为对宿主服务器文件系统的操作。为了保障安全,彻底隔离用户域,实现分组共享。实验结果表明,采用该方法比现有代理方法文件读写效率分别提高9.7和5.7倍。

关键词:操作映射;共享文件空间;云计算;VirtFS

中图分类号:TP39                                             文献标识码:A

A Space Technology VirtFS-based Shared File

LIU Qing,WANG Fan?覮,LI Dong,SHI Tao

(China Xi'an Satellite Control Center,Xi'an,Shaanxi 710043,China)

Abstract:Because of the existence of multiple I/O operation simulation in the virtual environment,it is not efficient to use traditional proxy to access files between virtual clients running in the host server. For this problem,a VirtFS-based Shared file space technology is proposed. The system archi-tecture of virtual client sharing file space is constructed,and the mapping mechanism of virtual disk operation is designed. Using the system layer interface provided by the VirtFS framework,the VirtFS server intercepts and maps file operations in the host server,and directly maps the operations of the virtual machine file system to those of the host server file system. At the same time,in order to ensure security,completely isolated user domain,to achieve group sharing. The experimental results show that this method can improve the file reading and writing efficiency by 9.7 and 5.7 times respectively.

Key words:action mapping;shared file space;cloud computing;VirtFS

在当今云计算领域,运行在同一宿主服务器中的虚拟客户机之间相互访问其文件空间时,通常使用部署代理的方式实现。但在虚拟环境中使用代理会导致虚拟环境中多次的输入输出操作模拟[1], 文件访问效率不高。设计适用于云计算虚拟环境的高效文件空间共享可以有效避免这一问题。

虚拟环境下高效的文件空间共享,可通过一系列的巧妙设计得以实现。运行在宿主服务器中的虚拟机本质上是宿主服务器的一个进程,其文件系统是宿主服务器文件系统的一部分。本文基于VirtFS技术,以及VirtIO通信框架和9p2000.L协议的使用,设计了适用于云计算环境的共享文件空间方案。使用VirtFS提供的系统层接口,设计了操作映射策略,使得不同的虚拟客户机共享文件空间的读写操作实际上是在服务器文件系统中完成,避免了虚拟环境的多次输入输出操作模拟,可大幅提高操作效率。同时,为实现更好的隔离,通过映射操作彻底隔离了客户机用和宿主机的用户域,并在服务器与各虚拟客户机通信中,使用不同的分组标签对各客户虚拟机进行隔离。

1   相关工作

VirtFS,是IBM的Linux技术中心为解决虚拟环境中文件系统的效率问题,定制的类虚拟化文件系统,属于系统层虚拟化技术,通过向虚拟机系统提供系统层的服务接口,与虚拟机监视器交互,可直接在宿主服务器文件系统中实现对虚拟客户机文件系统的操作;同时,还可在虚拟机监视器中查看客户机的文件系统活动,可通过I/O缓存进行预测和服务优化操作。VirtFS的结构图如图1所示。

图1   VirtFS系统结构图

VirtFS的基本原理:利用轻载的分布式文件系统协议,并通过VirtIO提供虚拟化传输接口,直接在虚拟化的顶层传输,通过Linux虚拟文件系统API远程传递到虚拟服务器或客户机[2]。

在云环境中,VirtFS给客户机提供从本地文件系统到服务器共享文件空间的接口,为不同用户提供安全的存储服务。可将服务器文件系统的一部分空间挂载到客户机,作为客户机对外的安全窗口,多个客户机可共享服务器中的资源。

2   一种共享文件空间的设计

QEMU能够高效的进行虚拟环境的操作模拟[3],VirtIO框架和9p2000.L通信协议的使用能够有效的提高通信效率[4 - 6],本文设计服务端是QEMU的一部分,运行在用户态,直接与文件服务API通信;客户端是客户机内核的一部分,它们之间使用VirtIO进行通信。QEMU中的服务端选择服务器文件系统的一部分作为共享文件空间输出,客户机中的客户端通过9p2000.L协议对这部分共享文件空间进行挂载。这样,这部分挂载的共享文件空间可被客户机像本地文件系统一样使用,但文件读写操作实际上是在服务器文件系统中完成。

在映射虚拟机文件系统操作到宿主机文件系统操作时,为彻底隔离虚拟客户机与宿主服务器的用户域,保障客户机需要安全运行空间,使用了VirtFS框架提供的系统层接口,在宿主服务器中的VirtFS服务端截取和映射文件操作。这样,通过映射操作彻底隔离了客户机和宿主机的用户域;在服务器与各虚拟客户机通信中,使用不同的分组标签对各客户虚拟机进行隔离。

2.1   整体结构设计

在云计算环境中,对客户虚拟机操作的克隆和模拟是导致处理时延,从而影响操作效率的重要因素。其中,克隆操作时延是虚拟机监视器克隆虚拟操作而产生的时延;模拟操作时延,主要是指虚拟机的多次输入/输出操作模拟所导致的时延。对于传统的代理模式,在新的云计算环境中,当对虚拟机文件系统访问操作时,需要经过多次模拟输入/输出操作,才能最终实现。对此,本文通过虚拟机监视器提供的系统层接口,直接映射文件空間访问操作,避免了对虚拟客户机操作的克隆和输入/输出操作的多次模拟,有效地降低了处理时延,从而提高了操作效率。系统整体部署结构如下图2所示。

图2   整体部署示意图

2.2   整体架构描述

通过虚拟机监视器提供的系统层虚拟化的接口,可构建宿主服务器中各虚拟客户机的共享文件空间。VirtFS是系统层虚拟化技术的实现[2],能向客户虚拟机系统提供系统层的服务接口,通过与虚拟机监视器交互,能够获得较好的文件访问性能。因此,本文基于使用VirtFS提供的系统层接口,建立虚拟客户机与宿主服务器的操作映射机制,从而实现对服务器中各客户机的集中控制,系统整体架构如图3所示。

图3   共享文件空间系统整体架构

其中,物理设备包括存储设备和一些安装了Linux系统并被VirtFS化了的宿主服务器;系统根据客户机使用情况分割宿主服务器文件系统中共享文件空间为对应子空间;使用KVM虚拟化技术[7],通过QEMU模拟运行客户机[3],并基于分割子空间定义fsdev文件系统设备,基于关联fsdev定义VirtIO-9P-PCI设备,指定共享分组标签识别VirtIO-9P-PCI设备;客户虚拟机根据分组标签挂载VirtIO-9P-PCI设备,这样通过VirtFS提供的系统层接口与虚拟机监视器交互,可建立与其宿主服务器或其他虚拟客户机的共享文件机制,并使用分组标签进行彼此隔离;动态重配置工具通过接口程序读取并响应Web服务器中的用户操作请求,管理程序审核并执行程序实现具体操作,管理程序同时负责系统管理和调度日志程序记录管理结果,其中执行程序会通过相关算法和机制直接在宿主服务器文件系统中完成各客户机中软件应用配置的动态读取或重置操作;Web服务器接收并响应用户操作请求。

2.3   文件空间共享策略

本文设计共享文件空间共享策略,利用VirtFS提供的框架,便于通过系统层接口,建立虚拟客户机与宿主服务器的共享文件状态,并具有较高的文件访问效率;使用VirtIO通信框架和9P协议能提供高效的传输支持[8]。对于VirtFS客户端,在客户虚拟机使用专用标签挂载,并使用9P协议建立软件应用所在目录与宿主服务器文件系统中对应分割子空间的同步通信;对于VirtFS服务端,依赖于QEMU中的fsdev和VirtIO-9P-PCI这两类设备,以提供一个可用于与客户机交互的网络文件系统接口。其中,fsdev设备,用于定义导出文件系统的类型、安全模式等;VirtIO-9P-PCI设备,用于在客户机与宿主服务器之间传输协议消息和数据。

KVM + QEMU + VirtIO是本文较理想的组合平台。在KVM中,VirtFS服务端是以QEMU进程子功能的形式运行在宿主服务器系统,VirtFS客户端是以内核模块的形式运行在虚拟机系统;服务端与客户端之间基于VirtIO通信框架,使用9P协议实现本地资源到远程资源的转换。其中,VirtFS在服务器上的后端主要是本地文件系统,可以通过挂载CephFS目录到服务器系统。

建立共享文件空间的流程图如图4所示。

图4   共享文件空间建立流程示意图

构建共享主要包括以下三个关键过程:

首先,系统根据分割算法对指定服务器文件空间进行分割,为各虚拟客户机创建对应子空间;

其次,QEMU根据分割结果为虚拟客户机定义对应的系统设备(fsdev/VirtIO-9P-PCI),并加载镜像文件,模拟虚拟客户机运行;

最后,客户虚拟机开机后,使用9P协议通过专用标签挂载VirtIO-9P-PCI设备,并定义其在本机中的别名,客户机即可与本地目录一样使用这部分文件空间。

这样,通过QEMU提供的系统层接口,可实现虚拟客户机和宿主服务器在对应分割子空间的共享。其中,主要包括QEMU模拟、客户机挂载和隔离与识别等操作。

2.4   操作映射与空间挂载

长期以来,KVM等主流虚拟化技术都关注与改进虚拟磁盘和网络设备的性能[7],但客户机通过系统层的服务接口直接与虚拟机监视器交互,可获得比直接访问驱动设备更高效的读写性能[9,10]。本文通过虚拟机监视器提供的系统层接口,将对虚拟客户机中软件应用的重配置操作,直接映射为对宿主服务器文件系统的操作,这减少了映射层次和模拟输入/输出操作次数,从而提高了操作效率。

操作映射,是对虚拟客户机文件系统的操作,直接映射到对宿主机文件系统的操作,主要包括客户机挂载和映射算法两部分内容;客户机挂载,是指虚拟客户机启动后,对基于共享文件空间分割而定义的文件系统设备,使用对应协议和分组标签进行挂载,详见图5所示。

图5   共享文件空间映射与挂载示意图

其中,“分割1-n”是根据客户虚拟机使用需求,对宿主服务器文件系统中共享文件空间的对应分割;fsdev是具体虚拟化技术基于分割子空间定义的文件系统设备;VirtIO-9P-PCI是具体虚拟化技术基于关联fsdev文件设备而定义的系统设备,并定义了分组挂载标签;客户虚拟机根据分组挂载标签,通过9P协议对VirtIO-9P-PCI设备进行挂载,这样,虚拟客户机通过挂载文件设备操作,便可将分割的子空间作为本地文件空间使用。

2.5   虚拟客户机隔离机制

通过虚拟客户机隔离机制,确保服务器或客户机在共享文件空间中,仅对具备许可的文件可见。宿主服务器与各虚拟客户机的分割子空间共享,使用了相同的原理、框架和通信机制,这容易导信息安全问题[11]。

在虚拟化环境中,可以为虚拟客户机都定义一些系统设备,比如fsdev、VirtIO-9P-PCI等。同时,可以对共享文件空间进行分割,为每个虚拟客户机分配相应的共享子空间,并通过一定的识别机制建立与虚拟客户机的关联关系。因此可以基于分割子空间,为虚拟客户机定义一些文件系统设备,同时定义相应的分组标签和安全模型等参数信息。各虚拟客户机在启动时使用指定的分组标签挂载这些文件系统设备,拥有相同分组标签的各机可以共享文件设备对应的分割子空间,但拥有不同分组标签的各机则保持相互隔离;同时可根据需要选择不同安全模型,以实现客户虚拟机与宿主服务器的隔离。这样,在虚拟客户机启动时,就建立了特定的隔离关系。

各虚拟机之间的隔离机制,详见图6所示。

图6   虚拟机隔离机制示意图

其中QEMU基于各分割子空间定义了fsdev与VirtIO-9P-PCI这两类设备[12,13]。fsdev设备关联分割子空间,实现本文工具与虚拟客户机的共享和隔离;VirtIO-9P-PCI设备通过ID关联fsdev设备,客户机通过不同的分组标签识别VirtIO-9P-PCI设备,实现虚拟机客户机之间的相互隔离。

3   实 验

3.1    QEMU模拟

为建立VirtFS服务端的运行状态,本文选择Qemu模拟,通过定义fsdev和VirtIO-9P-PCI这两类设备的相关参数,可在VirtFS服务端和客户端建立通信[2]。为方便操作,相关模拟操作被编辑为脚本程序。QEMU根据具体情况调用启动脚本程序,默认使用匹配(mapped)安全模式,模拟虚拟客户虚拟机运行。

系统针对fsdev和VirtIO-9P-PCI这两类设备,设计了一套参数生成规则,以建立分割空间、系统设备和虚拟客户机之间的对应和识别逻辑。相关生成规则详见表1所示。

表1   客户机设备参数生成规则

其中,对于fsdev设备,使用客户机名称生成文件系统设备标识ID,使用宿主机中共享文件空间名称和客户机名称生成文件系统设备的路径,根据需要选定合适的文件系统设备安全模型;关于“VirtIO-9P-PCI”设备,系统将通过标识ID关联对应的文件系统设备(fsdev),并根据虚拟客户机名稱生成隔离分组的挂载标签。模拟操作脚本,使用shell命令编写,以参数输入的方式,满足模拟不同设备和虚拟客户机的需求。Qemu可以采用输入参数的方式,调用操作脚本,以便模拟不同的设备和虚拟客户机。

3.2   隔离与应用识别

隔离,通过在模拟的fsdev设备和VirtIO-9P-PCI设备中分别设置安全模型和分组标签实现。其中,fsdev设备,用于定义导出文件系统的类型、安全模式等;VirtIO-9P-PCI设备,用于在客户机与宿主服务器之间传输协议消息和数据;客户虚拟机使用VirtIO通信框架,通过挂载VirtFS客户端,并使用专用标签(mt_Appname)实现指定软件应用目录(Appdir)与宿主服务器中共享子空间的同步,具体方法如下表2所示。

表2   隔离实现方法

因使用挂载标签进行共享分组,从而确保了各虚拟客户机之间的相互隔离。

共享文件空间建立后,虚拟客户机和宿主服务器都感知为本地文件空间,存放于其中的文件会根据具体的安全模式而可见和同步。

3.3   操作效率

为验证本文设计的共享文件空间技术,在云计算环境中虚拟客户机之间相互访问文件操作的效率方面带来的改进,实验分别统计了本文共享文件空间策略和传统代理模式下的操作效率进行对比分析。通过测试程序统计每次读写某一特定文件块操作所耗费的时间,然后根据操作效率公式计算得到对应效率。以操作序号为横坐标,以操作效率为纵坐标,建立读写操作效率对比图,分别如下图7和图8所示所示。

图7   读操作效率统计图

其中,在本文共享文件空间中虚拟客户机之间相互的读文件块操作为73.7次/秒,使用传统代理技术的读文件操作为7.6次/秒。

图8   写操作效率统计图

其中,在本文共享文件空间中虚拟客户机之间相互的的写文件块操作为40.8次/秒,使用传统代理技术的写文件块操作为7.2次/秒。

由以上三种模式下读写操作的数据可知:

1)读操作效率,本文共享文件空间技术大约是代理模式的9.7倍;

2)写操作效率,本文共享文件空间技术大约代理模式的5.7倍;

3)代理模式读取操作效率会略高于写操作效率,这几乎与磁盘的读写情况类似;

通过上述实验数据,验证了本文设计的云计算环境中共享文件空间策略,通过虚拟机监视器提供的系统层接口,直接将对虚拟客户机中文件系统的访问操作映射到对服务器文件系统的访问,可避免多次模拟操作,能够大幅提高处理效率。

4   结  论

基于运行在宿主服务器中的虚拟机文件系统本质上是宿主服务器文件系统的一部分这一理论基础,通过VirtFS提供的系统层接口的使用,采用VirtIO框架和9p2000.L通信协议,设计了适用于云计算虚拟环境文件系统的操作映射和隔离机制。实现了客户虚拟机和宿主机的用户域隔离和客户虚拟机的分组隔离,避免虚拟环境多次输入输出操作模拟,使得不同的虚拟客户机共享文件空间的读写操作实际上是在服务器文件系统中直接完成,大幅提高了操作效率,有效的建立了云计算环境中高效的共享文件空间策略,为云计算环境中共享文件空间的工程应用提供了一个高效的实现方案。

参 考 文 献

[1]    RICHTER W,ISCI C, GILBERT B,et al. Agentless cloud-wide streaming of guest file system updates[C]. IEEE International Conference on Cloud Engineering,2014:7—16.

[2]  JUJJURI V,HENSBERGEN E V,LIGUORI A. VirtFS-A virtualization aware file system pass-through[C]. Proceedings of the Linux Symposium,2010:109—120.

[3]    BELLARD F. QEMU,a fast and portable dynamic translator[C]. Proceedings of the Annual Conference on USENIX Annual,2005: 41—41.

[4]    RUSSEL R. VirtI O: towardsa a de-facto standard for virtual I/O devices[C]. ACM SIGOPS Operating Systems Review-Research and Developments in the Linux Kernel Archive,2008: 95—103.

[5]    HENSBERGEN E V,MINNICH R. Grave robbers from outer space using 9p2000 under linux[C]. Proceedings of the FREENIX Track:2005 USENIX Annual Technical Conference, 2005:83—94.

[6]    Bell-Labs. Introduction to the 9p protocol, plan 9 programmers manual [EB/OL] . 2000—03/2019—03.

[7]  KIVITY A,KAMAY Y,LAOR D,et al. KVM:the Linux virtualmachine monitor[C]. Ottawa Linux Symposium,2007: 225—230.

[8]  LIGUORI A,HENSBERGEN E V. Experiences with content addressable storage andvirtual disks[C]. Proceedings of the Workshopon I/O Virtualization(WIOV),2008:5—11.

[9]    王紹红. 天津交行无代理IT监控方案设计与研究[J]. 科技创新与应用,2018,28:96—98.

[10]  王海新,罗圣美,佟伟. 基于云计算的虚拟机防病毒架构分析[J]. 信息通信技术,2018,06:69—73.

[11]  陈兴蜀,陈蒙蒙,金鑫. 基于影子内存的无代理虚拟机进程防护[J]. 电子科技大学学报,2018,01:80—87.

[12]  张征. 基于云平台的虚拟机安全隔离和防护[J]. 信息与电脑:理论版,2018,23:174—177.

[13]  何重阳,朱仲马,刘晓浩,等. 虚拟化安全隔离增强技术研究[J]. 软件导刊,2018,11:198—201.

猜你喜欢

云计算
云计算虚拟化技术在电信领域的应用研究
基于云计算的医院信息系统数据安全技术的应用探讨
谈云计算与信息资源共享管理
志愿服务与“互联网+”结合模式探究
云计算与虚拟化
基于云计算的移动学习平台的设计
基于云计算环境下的ERP教学改革分析
基于MapReduce的故障诊断方法
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用