一种共享文件的访问方法、系统及相关设备的制造方法

文档序号:9687664阅读:311来源:国知局
一种共享文件的访问方法、系统及相关设备的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体涉及一种共享文件的访问方法、系统及相关设备。
【背景技术】
[0002]硬件辅助虚拟化技术是指在一台物理宿主机上开一个进程模拟计算机硬件,从而虚拟化出多个虚拟机(Virtual Machine,简称VM)。各个虚拟机之间相互隔离,拥有各自的操作系统(Operating System,简称OS),各自独立运行业务。比较常见的是通过Qemu在Linux平台上模拟虚拟机,如图1所示,一种Linux KVM-Qemu模型,其中,Qemu是一款能够在Linux平台上模拟出虚拟机的软件,KVM(Kernel_based Virtual Machine)是Linux中的模块,该KVM模块创建出多个线程vcpu,作为模拟的CPU提供给Qemu使用。
[0003]Linux与虚拟机之间存在文件共享需求。其中,虚拟机需要各种各样的配置文件和数据来运行业务,这些配置文件和数据保存在Linux中,因此,Linux需要将这些配置文件和数据共享给虚拟机。
[0004]目前在Linux与虚拟机中的文件共享技术通过网络文件系统(NetworkFileSystem,简称NFS)实现。NFS安装在虚拟文件系统(Virtual File System,简称VFS)下。如图2所示,Linux与虚拟机之间通过Linux内核的网桥互联,Linux将文件共享给虚拟机实际就是Linux与虚拟机之间通过网络完成文件操作。在文件共享时,对文件的操作信息在端口(socket)中生成网络报文,依次经过虚拟机的TCP/IP层、ΕΤΗ接口,到达虚拟网卡,到达Linux的网桥,再依次经过达Linux的TCP/IP层、端口(socket)到达NFS。可以看出,图2所示的现有技术中,文件共享时涉及到Linux内核的网桥,需要将Linux和虚拟机的虚拟网卡进行配置,Linux与虚拟机之间需要通过NFS服务,需要经过的组件较多,也就是存在多次操作信息拷贝,使得共享效率较低。

【发明内容】

[0005]本发明实施例提供了一种共享文件的访问方法、系统及相关设备,用于简化文件访问流程,提高文件访问效率。
[0006]本发明第一方面提供了一种共享文件的访问方法,应用于虚拟机,上述虚拟机运行在宿主机上,上述虚拟机中安装有虚拟主机文件系统(Virtual Host File System,简称VHFS),上述宿主机的文件被共享到上述VHFS中,上述共享文件的访问方法可包括:
[0007]上述虚拟机检测对上述VHFS中共享文件的操作,获得操作信息;
[0008]上述虚拟机根据上述操作信息生成VHFS请求,并将上述VHFS请求写入上述虚拟机的内存,上述VHFS请求用于请求上述宿主机在上述宿主机上完成对上述共享文件的上述操作;
[0009]上述虚拟机将上述VHFS请求所在内存的地址写入预置通用寄存器,并调用系统切换指令以使上述宿主机处理上述VHFS请求。
[0010]可以看出,本发明第一方面中,虚拟机通过检测对VHFS中共享文件的操作,以获得操作信息,然后根据操作信息生成VHFS请求,将VHFS请求写入虚拟机的内存中,之后再将VHFS请求所在内存的地址写入预置通用寄存器,调用系统切换指令后退出,然后由宿主机来执行后续对VHFS请求的操作。其中,由于预置的寄存器可以由虚拟机操作,也可以由宿主机操作,而虚拟机的内存也是从宿主机的内存中划分给虚拟机的,因此,宿主机可以从预置通用寄存器中拿到VHFS请求所在内存的地址,然后去内存中读取VHFS请求,然后处理该VHFS请求。本发明实施例中整个对文件的操作步骤比较简单,不需要拷贝,能够有效提高文件共享中处理文件的效率。
[0011]在本发明一些实施例中,上述虚拟机检测对上述VHFS中共享文件的操作,获得操作信息包括:上述虚拟机检测对上述VHFS中共享文件的操作,获得操作信息,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打开操作、文件读取操作、文件写入操作、文件创建操作和浏览目录操作中的任意一种。
[0012]在本发明一些实施例中,上述虚拟机根据上述操作信息生成VHFS请求包括:当上述操作命令所指示的操作为文件读取操作或文件写入操作时,上述虚拟机获取上述共享文件所在缓冲区的虚拟机逻辑地址,将上述虚拟机逻辑地址转换成上述虚拟机物理地址;上述虚拟机根据上述文件信息、上述操作命令和上述虚拟机物理地址,生成上述VHFS请求。
[0013]在本发明一些实施例中,上述虚拟机将上述VHFS请求所在内存的地址写入预置通用寄存器,并调用系统切换指令以使上述宿主机处理上述VHFS请求包括:上述虚拟机将上述VHFS请求所在内存的地址写入上述预置通用寄存器;上述虚拟机调用vmcall指令退出非根模式,以使上述宿主机获得控制权处理上述VHFS请求。
[0014]在本发明一些实施例中,上述虚拟机将上述VHFS请求所在内存的地址写入预置通用寄存器,并调用系统切换指令以使上述宿主机处理上述VHFS请求包括:上述虚拟机将上述VHFS请求所在内存的地址写入上述宿主机虚拟的外设部件互连标准PCI设备,并触发上述虚拟机退出非根模式,以使上述宿主机获得控制权处理上述VHFS请求。
[0015]可选地,上述文件信息包括文件描述符或文件路径或文件的节点索引。
[0016]本发明第二方面提供了一种共享文件的访问方法,上述宿主机运行着若干虚拟机,每一个虚拟机中安装有虚拟主机文件系统VHFS,上述宿主机的文件被共享到每一个虚拟机的VHFS中,上述共享文件的访问方法可包括:
[0017]上述宿主机检测到上述虚拟机调用系统切换指令,从预置通用寄存器中读取VHFS请求所在内存的地址,上述VHFS请求为上述虚拟机根据用户对上述虚拟机中的VHFS的共享文件的操作生成,上述VHFS请求用于请求上述宿主机在上述宿主机上完成对上述共享文件的上述操作;
[0018]上述宿主机根据读取的上述VHFS请求所在内存的地址,读取上述VHFS请求,根据上述VHFS请求执行对上述共享文件的上述操作。
[0019]可选地,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打开操作、文件读取操作、文件写入操作、文件创建操作和浏览目录操作中的任意一种。
[0020]在本发明一些实施例中,上述根据上述VHFS请求执行对上述共享文件的上述操作包括:当上述操作命令所指示的操作包括上述文件打开操作或文件读取操作时,上述宿主机将上述虚拟机物理地址转换成主机逻辑地址;上述宿主机根据上述主机逻辑地址以及上述文件信息,查找到上述共享文件;上述宿主机对查找到的上述共享文件执行上述操作命令所指示的操作。
[0021]在本发明一些实施例中,上述根据上述VHFS请求完成对上述共享文件的上述操作之后包括:上述宿主机将执行上述操作的操作结果,返回给上述虚拟机。
[0022]可选地,上述文件信息包括文件描述符或文件路径或文件的节点索引。
[0023]本发明第三方面提供了一种虚拟机,上述虚拟机运行在宿主机上,上述虚拟机中安装有虚拟主机文件系统VHFS,上述宿主机的文件被共享到上述VHFS中,上述虚拟机包括:
[0024]VHFS处理模块,用于检测对上述VHFS中共享文件的操作,获得操作信息;根据上述操作信息生成VHFS请求,并将上述VHFS请求写入上述虚拟机的内存,上述VHFS请求用于请求上述宿主机在上述宿主机上完成对上述共享文件的上述操作;将上述VHFS请求所在内存的地址写入预置通用寄存器,并调用系统切换指令以使上述宿主机处理上述VHFS请求。
[0025]在本发明一些实施例中,上述VHFS处理模块具体用于,检测对上述VHFS中共享文件的操作,获得操作信息,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打开操作、文件读取操作、文件写入操作、文件创建操作和浏览目录操作中的任意一种。
[0026]在本发明一些实施例中,上述VHFS处理模块具体用于,当上述操作命令所指示的操作为文件读取操作或文件写入操作时,获取上述共享文件所在缓冲区的虚拟机逻辑地址,将上述虚拟机逻辑地址转换成上述虚拟机物理地址;根据上述文件信息、上述操作命令和上述虚拟机物理地址,生成上述VHFS请求,上述VHFS请求包括上述文件信息、上述操作命令和上述共享文件所在缓冲区的虚拟机物理地址。
[0027]在本发明一些实施例中,上述VHFS处理模块具体用于,将上述VHFS请求所在内存的地址写入上述预置通用寄存器;调用vmcall指令退出非根模式,以使上述宿主机处理上述VHFS请求。
[0028]在本发明一些实施例中,上述VHFS处理模块具体用于,将上述VHFS请求所在内存的地址写入上述宿主机虚拟的外设部件互连标准PCI设备,并触发上述虚拟机退出非根模式,以使上述宿主机获得控制权处理上述VHFS请求。
[0029]可选地,上述文件信息包括文件描述符或文件路径或文件的节点索引。
[0030]本发明第四方面提供了一种宿主机,上述宿主机运行着若干虚拟机,每一个虚拟机中安装有虚拟主机文件系统VHFS,上述宿主机的文件被共享到每一个虚拟机的VHFS中,上述宿主机包括:
[0031]VHFSD处理模块,用于检测到上述虚拟机调用系统切换指令,从预置通用寄存器中读取VHFS请求所在内存的地址,上述VHFS请求为上述虚拟机根据用户对上述虚拟机中的VHFS的共享文件的操作生成,上述VHFS请求用于请求上述宿主机在上述宿
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1