一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统技术方案

技术编号:15437047 阅读:83 留言:0更新日期:2017-05-25 19:15
本发明专利技术提出一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统,该方法包括步骤1,对现有FUSE内核模块的数据路径添加延迟写功能,其中延迟写功能包括数据在经过内核时,通过VFS层,在FUSE内核模块进行聚合,直接返回到系统调用,仅当聚合数据满足一定大小,或一定时间不再追加时,再通过“/dev/fuse”设备传输到用户态客户端进行数据落盘操作;步骤2,对FUSE内核模块进行多挂载点挂载。通过剥离FUSE模块功能及多虚机映射机制将多虚机数据映射到宿主机,将虚拟机客户端处理操作下放到宿主机端,以减少虚拟机的压力,空出更多的资源供虚拟机进行计算处理任务。

KVM based multi virtual machine mapping, multi-channel fuse acceleration method and system

The invention provides a method and system for accelerated multi virtual machine mapping, KVM multi channel based on fuse, the method comprises the steps of 1, the data path of the existing FUSE kernel module add write delay function, which delayed write functions including data after the kernel, the VFS layer, the polymerization in the FUSE kernel module, direct return to the system call, only when the aggregate data meet certain size, a certain period of time or not, and then through the \/dev/fuse\ device to a user mode client falling disk operating data; step 2, multi mount point mounting on FUSE kernel module. By stripping FUSE module function and mapping mechanism of multi virtual machine virtual machine data is mapped to the host computer, the virtual machine processing operation to the client host computer, virtual machine to reduce the pressure, make more resources for the virtual machine computing tasks.

【技术实现步骤摘要】
一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统
本专利技术涉及文件系统
,特别涉及一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统。
技术介绍
目前文件系统客户端的使用主要提供两种方式:一是API库,像HDFS文件系统,采用JAVA编写,提供API和SHELL脚本供用户使用,用户已有的程序无法直接使用,需要通过HDFS的API函数才能使用,局限了使用范围。一是POSIX语义,即通过mount的方式将文件系统挂在本地目录,如同操作本地文件一样,相对API和SHELL方式,支持POSIX语义的文件系统极大方便了用户的使用,根据客户端编码方式,又分为内核态文件系统客户端和用户态文件系统客户,内核态文件系统将客户端直接嵌入LINUX内核中,使得客户端的性能几乎没有损失,但提高了客户端的编码难度,并且不易于调试。用户态文件系统基于FUSE模块提供的API库进行编码,编码效率更高,调试更加容易。FUSE包含两部分,内核部分和用户态部分,客户端只需要使用用户态API库即可进行编码,针对功能扩展需求能够更好更快的完善,如图1所示,以我们的分布式纠删码参数系统ECFS为例,阐述数据流如何通过FUSE流到客户端。FUSE内核模块加载成功后,生成“/dev/fuse”的杂项设备,当应用程序调用write操作写入数据后,数据通过sys_write系统调用,进入内核态的VFS层(VFS:VirtualFileSystem,采用标准的Unix系统调用读写位于不同物理介质上的文件系统,为各类文件系统提供了一个统一的操作界面和应用程序接口,即在Linux系统中,所有的系统调用都会经过VFS层过度到对应的文件系统中),VFS将数据拷贝到FUSE内核申请的内存中,并将数据写入“/dev/fuse”设备中(对fuse设备的读写即为对内存的读写操作),用户态监测到”/dev/fuse“设备中存在数据时,将其中数据读取出来,并调用客户端注册的钩子函数(文件系统客户端编码时,通过完成FUSEAPI库提供的钩子函数,完成客户端的功能),客户端拿到数据后,经过对应的操作处理后,跟文件系统元数据服务器和对象数据服务器交互,将数据进行存储,随后客户端在处理完这些流程后,将操作结果通过“/dev/fuse”设备返回给VFS,进而返回给应用程序,完成write操作的调用。基于FUSE的用户态文件系统与内核态文件系统相比,存在以下几个缺点:通过测试发现,用户态文件系统较内核态文件系统相比,IOPS较低,用户态文件系统读写速度极慢,极大的影响了系统的性能;FUSE分为两部分,内核部分跟用户态lib库,内核FUSE模块极度依赖于系统内核函数,互不兼容,必须更新内核才能使用,使得FUSE的使用很不方便。通过对图1的分析,我们发现FUSE的实现过程中有以下几个问题:a、每次系统调用路径中,需要若干次内核态与用户态的上下文切换,导致系统进行频繁的上下文切换,带来了系统开销,高版本3.16kernel内核中的writeback_cache功能,无法应用于低版本系统中,使用极为不方便;b、每次系统调用路径中,需要进行4-5次内存拷贝操作,同样需要进行内存的申请和释放操作,内存申请、释放和拷贝操作,严重影响了系统的系统;c、每次系统调用,从调用开始到返回,需要经过用户态、到内核态、再到用户态,再到内核态、最后到用户态一个完整的流程,系统开销很大,导致IOPS较低,系统每次以4k或者更大粒度进行,导致整体读写带宽较低。d、通过源码发现,对设备”/dev/fuse”的处理属于串行操作,系统带宽较低。在文件系统开发过程中,通过大量的测试分析发现,FUSE成为客户端性能的瓶颈。4kB数据小粒度顺序写测试过程中,系统的IO只有79MB/s,1MB数据大粒度顺序写测试过程中,系统IO带宽只有161MB/s,极大限制了系统的系统。小粒度读写进行一次完整的操作需要经过几次用户态、内核态的切换,内存的申请、释放和拷贝等,每次操作都要完整的执行完这些繁琐的流程,并且只有当一个操作完成后,才能进行下一次操作,直接导致了较低的IOPS和带宽,经过研究,我们在内核态代码中,将数据进行缓冲聚合,等到足够多时或者经过一段时间后,一次性进行写入,减少频繁上下文切换,提升IOPS。每次系统调用路径中,需要进行多次内存拷贝操作,同样伴随多次的内存申请、释放和拷贝操作,严重影响了系统的系统,通过测试,每减少一次内存拷贝操作,系统带宽将提升300MB/s,针对频繁的内存申请释放操作,我们通过构建内存分配系统的方法,管理FUSE使用的内存,减少IO通路上频繁的内存操作。通过系统IO通路的分析,我们发现,FUSE在VFS与FUSE之间、内核态与用户态之间、FUSE小粒度聚合存在多次数据拷贝,这些拷贝是多余的,并未带来系统性能的提升,因此,我们通过内存映射的方法,管理内存块区间,减少数据拷贝操作,进一步提升系统性能。
技术实现思路
针对现有技术的不足,本专利技术提出一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统。一种基于kvm的多虚拟机映射、多通路的FUSE加速方法,包括:步骤1,对现有FUSE内核模块的数据路径添加延迟写功能,其中所述延迟写功能包括数据在经过内核时,通过VFS层,在FUSE内核模块进行聚合,直接返回到系统调用,仅当聚合数据满足一定大小,或一定时间不再追加时,再通过“/dev/fuse”设备传输到用户态客户端进行数据落盘操作;步骤2,对FUSE内核模块进行多挂载点挂载。上述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其中,数据在通过FUSE内核模块时,并发通过多个FUSE设备链路进行通信。上述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其中,构建多个内存链表,每个链表定制不同的内存大小,预先申请内存空间,内存链表使用达到上限时,自动异步申请内存,添加到内存链表中,当系统内存缺乏时,定期释放内存链表中的内存空间。上述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其中,数据通过进程间通信机制,传输内存操作命令,包括内存操作相关元数据。本专利技术还提供一种基于kvm的多虚拟机映射、多通路的FUSE加速系统,其中,包括:延迟写模块,对现有FUSE内核模块添加延迟写功能,其中所述返回写功能包括数据在经过内核时,通过VFS层,在FUSE内核模块进行聚合,直接返回到系统调用,仅当聚合数据满足一定大小,或一定时间不在追加时,再通过“/dev/fuse”设备传输到用户态客户端进行数据落盘操作;挂载模块,用于对FUSE内核模块进行多挂载点挂载。上述的基于kvm的多虚拟机映射、多通路的fuse加速系统,其中,数据在通过FUSE内核模块时,并发通过多个FUSE设备链路进行通信。上述的基于kvm的多虚拟机映射、多通路的fuse加速系统,其中,构建多个内存链表,每个链表定制不同的内存大小,预先申请内存空间,内存链表使用达到上限时,自动异步申请内存,添加到内存链表中,当系统内存缺乏时,定期释放内存链表中的内存空间。上述的基于kvm的多虚拟机映射、多通路的fuse加速系统,其中,数据通过进程间通信机制,传输内存操作命令,包括内存操作相关元数据。由以上方案可知,本发本文档来自技高网
...
一种基于kvm的多虚拟机映射、多通路的fuse加速方法及系统

【技术保护点】
一种基于kvm的多虚拟机映射、多通路的FUSE加速方法,其特征在于,包括:步骤1,对现有FUSE内核模块的数据路径添加延迟写功能,其中所述延迟写功能包括数据在经过内核时,通过VFS层,在FUSE内核模块进行聚合,直接返回到系统调用,仅当聚合数据满足一定大小,或一定时间不再追加时,再通过“/dev/fuse”设备传输到用户态客户端进行数据落盘操作;步骤2,对FUSE内核模块进行多挂载点挂载。

【技术特征摘要】
1.一种基于kvm的多虚拟机映射、多通路的FUSE加速方法,其特征在于,包括:步骤1,对现有FUSE内核模块的数据路径添加延迟写功能,其中所述延迟写功能包括数据在经过内核时,通过VFS层,在FUSE内核模块进行聚合,直接返回到系统调用,仅当聚合数据满足一定大小,或一定时间不再追加时,再通过“/dev/fuse”设备传输到用户态客户端进行数据落盘操作;步骤2,对FUSE内核模块进行多挂载点挂载。2.如权利要求1所述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其特征在于,数据在通过FUSE内核模块时,并发通过多个FUSE设备链路进行通信。3.如权利要求1所述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其特征在于,构建多个内存链表,每个链表定制不同的内存大小,预先申请内存空间,内存链表使用达到上限时,自动异步申请内存,添加到内存链表中,当系统内存缺乏时,定期释放内存链表中的内存空间。4.如权利要求1所述的基于kvm的多虚拟机映射、多通路的fuse加速方法,其特征在于,数据通过进程间通信机制,传输内存操作命令,包括内存操作相关元数据。...

【专利技术属性】
技术研发人员:魏征窦禹邢晶霍志刚
申请(专利权)人:中国科学院计算技术研究所中国科学院国有资产经营有限责任公司
类型:发明
国别省市:北京,11

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

1