[发明专利]一种KVM虚拟化下处理I/O请求的方法和装置有效
申请号: | 201610019289.0 | 申请日: | 2016-01-12 |
公开(公告)号: | CN106970821B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 张献涛;丁圣阁;田双太 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F3/038 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 赵娟 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 kvm 虚拟 处理 请求 方法 装置 | ||
1.一种KVM虚拟化下处理I/O请求的方法,其特征在于,所述的方法包括:
通过内核虚拟机KVM拦截虚拟机发出的I/O请求,确定与所述I/O请求对应的I/O通道的信息,其中,所述I/O通道具有对应的缓冲区,所述I/O通道的信息包括eventfd文件描述符;
将所述I/O请求写入对应的I/O通道的缓冲区中;
采用所述eventfd通知所述I/O通道对应的用户态进程;
在所述用户态进程中,根据所述eventfd监听对应的I/O通道的事件,并从所述对应的I/O通道的缓冲区中获取I/O请求,对所述I/O请求执行I/O模拟,其中,所述用户态进程包括第一设备模拟进程以及与所述第一设备模拟进程独立的第二设备模拟进程。
2.根据权利要求1所述的方法,其特征在于,所述在所述通过内核虚拟机KVM拦截虚拟机发出的I/O请求,确定与所述I/O请求对应的I/O通道的信息的步骤之前,还包括:
采用所述第一设备模拟进程创建虚拟机,获得所述虚拟机的文件描述符;
采用所述第一设备模拟进程,基于所述虚拟机的文件描述符,创建虚拟处理器vCPU,获得所述vCPU的文件描述符;
采用所述第二设备模拟进程,创建eventfd文件描述符;
采用所述第二设备模拟进程,基于所述虚拟机的文件描述符,创建I/O通道,并将所述I/O通道与所述eventfd文件描述符绑定,获得所述I/O通道的文件描述符;
采用所述第二设备模拟进程,对所述eventfd文件描述符进行监听;
采用所述第二设备模拟进程,基于所述I/O通道的文件描述符,为所述用户态进程映射所述I/O通道的缓冲区;
采用所述第二设备模拟进程,基于所述I/O通道的文件描述符,为所述I/O通道绑定I/O地址区间。
3.根据权利要求2所述的方法,其特征在于,所述I/O请求包括I/O地址,所述通过内核虚拟机KVM拦截虚拟机发出的I/O请求,确定与所述I/O请求对应的I/O通道的信息的步骤包括:
通过内核虚拟机KVM及Intel VT-d硬件技术拦截虚拟机的vCPU线程发出的I/O请求;
从所述I/O请求中提取对应的I/O地址;
确定所述I/O地址所属的I/O地址区间;
通过所述I/O地址区间确定对应的I/O通道,并获取所述I/O通道对应的I/O通道的信息。
4.根据权利要求3所述的方法,其特征在于,所述I/O通道的地址区间包括多个I/O模拟设备的地址子区间;
所述在所述用户态进程中,根据所述eventfd监听对应的I/O通道的事件,并从所述对应的I/O通道的缓冲区中获取I/O请求,对所述I/O请求执行I/O模拟的步骤包括:
在所述用户态进程中,根据所述eventfd确定对应的I/O通道;
从所述对应的I/O通道的缓冲区中获取I/O请求;
依据所述I/O请求中的I/O地址确定对应的I/O模拟设备;
将所述I/O请求分发至所述I/O模拟设备中,通过所述I/O模拟设备对所述I/O请求进行I/O模拟。
5.根据权利要求3或4所述的方法,其特征在于,在所述在所述用户态进程中,根据所述eventfd监听对应的I/O通道的事件,并从所述对应的I/O通道的缓冲区中获取I/O请求,对所述I/O请求执行I/O模拟的步骤之前,还包括:
挂起所述vCPU线程。
6.根据权利要求5所述的方法,其特征在于,在所述在所述用户态进程中,根据所述eventfd监听对应的I/O通道的事件,并从所述对应的I/O通道的缓冲区中获取I/O请求,对所述I/O请求执行I/O模拟的步骤之后,还包括:
唤醒所述挂起的vCPU线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610019289.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:代码存储方法及代码存储装置
- 下一篇:一种容器创建方法及装置