基于virtio-blk技术提升虚拟存储IO性能的方法与流程

文档序号:36791546发布日期:2024-01-23 12:10阅读:24来源:国知局
基于virtio-blk技术提升虚拟存储IO性能的方法与流程

本发明涉及虚拟化存储io,具体涉及基于virtio-blk技术提升虚拟存储io性能的方法。


背景技术:

1、虚拟化技术已经广泛应用于数据中心和云计算环境中,以提高资源的灵活性和利用率。在虚拟化环境中,虚拟机通常需要频繁地进行io操作,包括读取和写入数据到块存储设备。传统的虚拟化方法由于过长的io访问路径,通常会引入较大的io访问延迟,降低了虚拟机的性能,已不能满足当前云计算以及大数据处理对io的性能要求。

2、面对io虚拟化存储高性能要求,业界广泛选用的是基于vhost-user技术的spdk(storage performance development kit)存储性能工具套件方案。该技术方案通过虚拟机和宿主机之间用户态进程通信实现io读写请求,不需要经过宿主机内核,避免了大量系统调用、上下文切换和内核io协议栈的开销。显著的提升了io虚拟化存储的性能,但也存在明显的缺点:1)spdk工具套件需要编译搭建环境,增加了虚拟化管理和使用成本;2)spdk作为操作系统外部工具集成到系统环境中,增大了系统的复杂性和不确定性;3)需要系统提供大页内存共享支持,造成系统内存资源浪费。

3、另一方面,在linux内核和qemu社区上实现了将virtio后端设备数据面处理下沉到内核的vhost技术方案,其性能接近vhost-user技术方案,且管理和使用成本低,但当前主分支最新代码只实现了vhost-scsi方案,并未实现vhost-blk方案。与裸的块设备相比,基于scsi协议的io请求处理更加复杂,性能略低。

4、中国发明专利“基于vhost协议的io虚拟化数据处理的方法及应用”(专利号:cn202211611358)。该发明具体涉及一种基于vhost协议的io虚拟化数据处理的方法。该发明在内核中增加vhost-blk内核模块,qemu通过ioctl方式对vhost-blk进行配置和初始化,vhost-blk内核模块通过轮询guest os共享的virtqueue发送队列获取指令与数据,并调用vfs通用入口函数来处理数据。该发明采用vfs(virtual filesystem switch虚拟文件系统)通用入口处理数据,并没有考虑到如何减少vfs处理带来的io路径开销;轮询的方式虽然能提升响应速度,但增加cpu负载,造成一定的资源浪费。


技术实现思路

1、为解决已有技术存在的不足,本发明提供了一种基于virtio-blk技术提升虚拟存储io性能的方法,包括:

2、步骤s1:在宿主机内核中新增vhost-blk后端设备模块,配置并编译进宿主机内核,在宿主机中加载并启动该模块,该模块主要完成配置响应、io请求数据处理功能;

3、步骤s2:在qemu源码中新增vhost-blk虚拟设备模块,配置并编译进qemu工具内,该模块负责将虚拟机的配置通过ioctl方式下发到宿主机内核中的vhost-blk后端设备模块,完成宿主机内核中vhost-blk后端设备模块的配置过程;

4、步骤s3:通过qemu工具命令行配置虚拟机,在qemu配置虚拟机的命令中,将磁盘设备配置为使用vhost-blk-pci的驱动方式,使vhost-blk后端设备模块接收qemu下发的vhost-blk相关的ioctl指令,将qemu为虚拟机配置的块设备磁盘信息作为私有数据进行保存,使得内核vhost-blk后端设备模块能够直接根据保存的信息对虚拟机配置的块设备磁盘对应的真实物理介质进行读写访问;

5、步骤s4:启动虚拟机,宿主机内核中vhost-blk后端设备模块加载并初始化,qemu通过vhost-blk虚拟设备模块将vhost和virtqueue通用的ioctl控制指令下发到宿主机内核中vhost-blk的后端设备模块以及kvm,完成vhost-blk后端设备模块的配置;

6、步骤s5:基于配置好vhost-blk后端设备模块及vhost-blk虚拟设备模块的虚拟机,完成io请求数据处理。

7、其中,所述步骤s4中,宿主机内核中vhost-blk后端设备模块加载并初始化时,会生成/dev/vhost-blk字符设备,提供给用户层访问,qemu的vhost-blk虚拟设备模块通过vfs接口打开该字符设备,调用ioctl接口将关于vhost设备相关的ioctl控制指令下发到宿主机内核中的vhost-blk后端设备模块,完成vhost-blk后端设备模块的配置。

8、其中,所述步骤s4中,vhost-blk后端设备模块的配置包括:qemu通过vhost-blk虚拟设备模块对宿主机内核中vhost-blk后端设备模块下发关于vhost设备相关的ioctl指令,宿主机内核中vhost-blk后端设备模块响应命令,获取虚拟机地址映射信息,完成vhost设备相关的配置。

9、其中,所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块对宿主机内核中vhost-blk后端设备模块下发关于virtqueue相关的ioctl指令,宿主机内核中vhost-blk后端设备模块响应命令,配置virtqueue的大小和地址,配置用于发送和接收通知的事件文件描述符。

10、其中,所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块下发ioctl命令到宿主机中kvm模块,分配并初始化ioeventfd信息,qemu中的vhost-blk虚拟设备模块将生成ioeventfd信息与特定的pio或mmio内存区域进行绑定,并将所绑定的pio或mmio内存区域信息通过ioctl命令下发到宿主机内核中vhost-blk后端设备模块进行映射关联。

11、其中,所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块下发ioctl命令到宿主机中kvm模块,分配并初始化irqfd信息,qemu中的vhost-blk虚拟设备模块将生成irqfd信息与特定的pio或mmio内存区域进行绑定,并将所绑定的pio或mmio内存区域信息通过ioctl命令下发到宿主机内核中vhost-blk后端设备模块进行映射关联。

12、本发明能够缩短虚拟机io的模拟路径,加速数据处理。通过fio工具做测试,对比目前应用最广泛的virtio-blk方案,在所有场景下,读写数据性能都优于virtio-blk,最高达到三倍的io性能提升,同时cpu使用量与virtio-blk方案基本相同,实现了io性能大幅提升,降低了实际生产中实施的复杂性和使用成本。



技术特征:

1.基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于包括:

2.如权利要求1所述的基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于:所述步骤s4中,宿主机内核中vhost-blk后端设备模块加载并初始化时,会生成/dev/vhost-blk字符设备,提供给用户层访问,qemu的vhost-blk虚拟设备模块通过vfs接口打开该字符设备,调用ioctl接口将关于vhost设备相关的ioctl控制指令下发到宿主机内核中的vhost-blk后端设备模块,完成vhost-blk后端设备模块的配置。

3.如权利要求1所述的基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于:所述步骤s4中,vhost-blk后端设备模块的配置包括:qemu通过vhost-blk虚拟设备模块对宿主机内核中vhost-blk后端设备模块下发关于vhost设备相关的ioctl指令,宿主机内核中vhost-blk后端设备模块响应命令,获取虚拟机地址映射信息,完成vhost设备相关的配置。

4.如权利要求1所述的基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于:所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块对宿主机内核中vhost-blk后端设备模块下发关于virtqueue相关的ioctl指令,宿主机内核中vhost-blk后端设备模块响应命令,配置virtqueue的大小和地址,配置用于发送和接收通知的事件文件描述符。

5.如权利要求1所述的基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于:所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块下发ioctl命令到宿主机中kvm模块,分配并初始化ioeventfd信息,qemu中的vhost-blk虚拟设备模块将生成ioeventfd信息与特定的pio或mmio内存区域进行绑定,并将所绑定的pio或mmio内存区域信息通过ioctl命令下发到宿主机内核中vhost-blk后端设备模块进行映射关联。

6.如权利要求1所述的基于virtio-blk技术提升虚拟存储io性能的方法,其特征在于:所述步骤s4中,vhost-blk后端设备模块的配置还包括:qemu通过vhost-blk虚拟设备模块下发ioctl命令到宿主机中kvm模块,分配并初始化irqfd信息,qemu中的vhost-blk虚拟设备模块将生成irqfd信息与特定的pio或mmio内存区域进行绑定,并将所绑定的pio或mmio内存区域信息通过ioctl命令下发到宿主机内核中vhost-blk后端设备模块进行映射关联。


技术总结
本发明涉及基于virtio‑blk技术提升虚拟存储IO性能的方法,通过将宿主机应用层QEMU中virtio‑blk后端设备模块的数据处理下放到宿主机的内核中,使虚拟机陷入KVM后,可以直接在宿主机内核中进行IO请求的处理,不需要经过宿主机应用层QEMU。本发明能够缩短虚拟机IO的模拟路径,加速数据处理。通过FIO工具做测试,对比目前应用最广泛的virtio‑blk方案,在所有场景下,读写数据性能都优于virtio‑blk,最高达到三倍的IO性能提升,同时CPU使用量与virtio‑blk方案基本相同,实现了IO性能大幅提升,降低了实际生产中实施的复杂性和使用成本。

技术研发人员:雷翔,孙立明,张铎,谢明
受保护的技术使用者:麒麟软件有限公司
技术研发日:
技术公布日:2024/1/22
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1