System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,具体提供一种宿主机与客户机之间文件传输的方法。
技术介绍
1、目前在虚拟化应用中,guestos和hostos之间传输文件主要依赖配通网络后,设置一个共享文件夹,通过网络协议和文件传输协议实现guestos到hostos以及hostos到guestos的文件传输,但是前提必须把guestos和hostos的网络配置好。如果操作系统内核开放人员正在调试网络模块的时候,网络不可用了,这时候通过上述方法在guestos和hostos之间传输文件就变得困难了。
2、qemu提供的qemu-ga方案和 virtiofsd方案在没有网络的情况下也能实现guestos与hostos文件传输。
3、qemu-ga(qemu-guest-agent) 方案提供了相关的api接口,可以开发程序实现从hostos传输文件到guestos的功能, 但是这种方案有两个弊端:
4、1、它是通过json格式传输文件内容,二进制的内容需要用base64编码后才可以装入json格式,然后在guestos中再进行base64解码再写入文件。每段传输的文件buffer都需要 base64编码再解码,会相当耗时。
5、2、qemu-ga的实现原理依靠guestos中虚拟出一个串口设备,并在hostos上映射为一个socket文件,串口设备与socket文件之间形成一个channel,通过channel 就可以进行内外数据互通。但是这种方法的虚拟串口通讯还是基于传统的virtio通道,并没有用上vho
6、virtiofsd方案基于vhost-user框架,在读写小块数据io的时候性能比传统的virtio通道要好,但是它的缺点就是必须在虚拟机启动之前在hostos上选定一个目录作为共享目录,把这个共享目录的路径传给qemu虚拟机。
7、因此,现有不通过网络实现guestos和hostos之间传输文件的方法要么是耗时长、性能低,要么需要提前设定“共享目录”,都无法达到快捷、高效的传输效果。
技术实现思路
1、为了克服上述缺陷,提出了本专利技术,利用virtiofsd的技术原理,在不通过网络堆栈且不配置共享目录的情况下,并保留高性能传输的优点,实现guestos和hostos之间任意文件传输功能。
2、在第一方面,本专利技术提供一种宿主机与客户机之间文件传输的方法,包括步骤:
3、s1:在客户机guest os侧设置信息连接的viofs server模块和viofs drvier模块,在宿主机host os侧设置virtiofsd模块和qemu模块;
4、s2:基于qemu在传输数据初始化时实现virtiofsd模块、 viofs server模块和viofs drvier模块的初始配置、参数传递,以及事件绑定触发响应的关系连接;
5、s3:基于virtio协议实现viofs drvier模块 与virtiofsd模块之间的数据通道;
6、s4:基于步骤s1-s3所搭建的客户机与宿主机之间的传输机制,基于用户发起的文件传输命令,在virtio协议之上封装fuse命令,用来处理文件打开命令,文件读命令、文件写命令和文件关闭命令,完成文件传输;
7、s5:由用户通过命令行的方法发起文件传输命令。
8、进一步,所述文件传输命令包括文件打开命令,文件读命令、文件写命令和文件关闭命令。
9、进一步,
10、viofs server模块是客户机guest os中的一个服务程序,用来接收客户机guestos中的用户g_user发送的传输文件命令并做相应的处理,也会接收viofs drvier模块发过来的传输文件命令做相应的处理;
11、viofs drvier模块是客户机guest os中的一个驱动程序,用于把从viofs server模块接收到的命令先根据virtio协议封装然后通过数据通道下发到宿主机host os的virtiofsd模块,也接收从数据通道传来的根据fuse协议和virtio协议依次封装的命令,先根据virtio协议解析后再发送到viofs drvier模块;
12、virtiofsd模块是宿主机host os的服务程序,用来接收宿主机host os中的用户h_user发送的传输文件命令并做相应的处理,也会接收数据通道发过来的传输文件命令并做相应的处理。
13、进一步,所述步骤s5包括:
14、客户机guest os中的用户g_user通过命令行发起的将guest os中的文件发送给host os的传输文件命令;
15、客户机guest os中的用户g_user通过命令行发起的将host os中的文件发送给guest os的传输文件命令;
16、宿主机host os中的用户h_user通过命令行发起的将guest os中的文件发送给host os的传输文件命令;
17、宿主机host os中的用户h_user通过命令行发起的将host os中的文件发送给guest os的传输文件命令。
18、进一步,在执行所述客户机guest os中的用户g_user通过命令行发起的将guestos中的文件发送给host os的传输文件命令时,包括步骤:
19、a1:g_user通过命令行发送相应的文件传输命令给 viofs server模块,并传递了在host os上的存储路径和在guest os上的读取路径,所述文件传输命令包括打开命令、读命令、写命令和关闭命令;
20、a2:viofs server模块根据读取路径和打开命令,对guest os上的读取路径执行打开操作,然后根据fuse协议将存储路径和打开命令封装为相应的fuse命令发送给viofsdriver模块;
21、a3:viofs driver模块将fuse命令根据virtio协议再次封装并通过数据通道发送给virtiofsd模块;
22、a4:virtiofsd模块根据virtio协议和fuse协议依次解析到存储路径和打开命令,然后对host os上的存储路径执行打开操作,获取文件标识,根据fuse协议和virtio协议将文件标识依次封装并通过数据通道发送给viofs driver模块;
23、a5:viofs driver模块根据virtio协议解析到相应的fuse命令并转发给viofsserver模块;
24、a6:viofs server模块根据fuse协议解析到文件标识后,再根据读命令和指定内存信息对读取路径的文件执行读操作,然后根据fuse协议将写命令、文件标识、指定内存信息和本次写入长度封装为相应的fuse命令发送给viofs driver模块,所述指定内存信息,包括内存开始地址、内存长度和每次本文档来自技高网...
【技术保护点】
1.一种宿主机与客户机之间文件传输的方法,其特征在于,包括步骤:
2.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,所述文件传输命令包括文件打开命令,文件读命令、文件写命令和文件关闭命令。
3.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,
4.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,所述步骤S5包括:
5.根据权利要求4所述的一种宿主机与客户机之间文件传输的方法,其特征在于,在执行所述客户机Guest OS中的用户g_user通过命令行发起的将Guest OS中的文件发送给Host OS的传输文件命令时,包括步骤:
6.根据权利要求4所述的一种宿主机与客户机之间文件传输的方法,其特征在于,在执行所述客户机Guest OS中的用户g_user通过命令行发起的将Host OS中的文件发送给Guest OS的传输文件命令时,包括步骤:
7.根据权利要求4所述的一种宿主机与客户机之间文件传输的方法,其特征在于,在执行所述宿主机Host O
8.根据权利要求4所述的一种宿主机与客户机之间文件传输的方法,其特征在于,在执行所述宿主机Host OS中的用户h_user通过命令行发起的将Host OS中的文件发送给GuestOS的传输文件命令时,包括步骤:
...【技术特征摘要】
1.一种宿主机与客户机之间文件传输的方法,其特征在于,包括步骤:
2.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,所述文件传输命令包括文件打开命令,文件读命令、文件写命令和文件关闭命令。
3.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,
4.根据权利要求1所述的一种宿主机与客户机之间文件传输的方法,其特征在于,所述步骤s5包括:
5.根据权利要求4所述的一种宿主机与客户机之间文件传输的方法,其特征在于,在执行所述客户机guest os中的用户g_user通过命令行发起的将guest os中的文件发送给host os的传输文件命令时,包括步骤:
6....
【专利技术属性】
技术研发人员:王宇锋,雷翔,谢明,张铎,
申请(专利权)人:麒麟软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。