System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种宿主机与客户机之间文件传输的方法技术_技高网

一种宿主机与客户机之间文件传输的方法技术

技术编号:44435541 阅读:0 留言:0更新日期:2025-02-28 18:45
本发明专利技术涉及计算机技术领域,具体提供一种宿主机与客户机之间文件传输的方法,包括步骤:在客户机侧设置信息连接的Viofs Server模块和viofs Drvier模块,在宿主机侧设置virtiofsd模块和Qemu模块;基于Qemu在传输数据初始化时实现virtiofsd模块、Viofs Server模块和viofs Drvier模块的初始配置、参数传递,以及事件绑定触发响应的关系连接;基于virtio协议实现viofs Drvier模块与virtiofsd模块之间的数据通道。在不通过网络堆栈且不配置共享目录的情况下,保留高性能传输的优点,实现宿主机与客户机之间任意文件传输功能。

【技术实现步骤摘要】

本专利技术涉及计算机,具体提供一种宿主机与客户机之间文件传输的方法


技术介绍

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通道,并没有用上vhost的高速通道,所以它的效率也会打折扣。

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 OS中的用户h_user通过命令行发起的将Guest OS中的文件发送给HostOS的传输文件命令时,包括步骤:

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....

【专利技术属性】
技术研发人员:王宇锋雷翔谢明张铎
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1