首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

可扩展性的NVMe存储虚拟化方法和系统 

申请/专利权人:上海交通大学

申请日:2021-12-10

公开(公告)日:2024-05-28

公开(公告)号:CN114138422B

主分类号:G06F9/455

分类号:G06F9/455;G06F9/48;G06F9/50

优先权:

专利状态码:有效-授权

法律状态:2024.05.28#授权;2022.03.22#实质审查的生效;2022.03.04#公开

摘要:本发明提供了一种可扩展性的NVMe存储虚拟化方法和系统,该方法基于中介透传虚拟化方案,支持对虚拟机、安全容器、容器的混合部署,同时满足对高密度部署安全容器、容器的可扩展性需求,该方案实现在系统NVMe驱动层,根据vfiomdev框架提供的接口,创建虚拟的mdev设备,将mdev设备通过vfio传递给虚拟机,从而提供虚拟机使用NVMe设备的能力。它通过修改物理队列分配与调度方式、优化IO轮询线程处理IO任务过程、修改存储资源分配方式、优化NVMe指令地址翻译过程这四个方面提高系统整体的可扩展性。

主权项:1.一种可扩展性的NVMe存储虚拟化方法,其特征在于,所述方法包括如下步骤:步骤S1:输入系统分配给虚拟机安全容器的物理队列数目,构建物理资源池,剩余设备物理队列将预留给原生NVMe驱动,给普通容器使用;步骤S2:输入系统所需要的轮询控制器数目,系统创建相应数目的轮询控制器,每个轮询控制器创建一个IO轮询线程,处理IO任务;步骤S3:输入虚拟机安全容器需要的存储资源数量,存储资源管理模块分配给相应的存储资源;步骤S4:虚拟机安全容器被分配给对应的轮询控制器;步骤S5:轮询控制器给虚拟机安全容器分配物理队列,IO轮询线程处理虚拟机安全容器的IO任务,通过NVMe指令地址翻译模块进行地址翻译;步骤S6:判断IO任务是否结束,若没有结束则返回步骤S5继续执行;所述步骤S2中创建轮询控制器包括如下步骤:步骤S2.1:向物理资源池申请需要的物理队列资源,添加到预备物理资源池;步骤S2.2:创建IO轮询线程,并绑定到CPU核心上;步骤S2.3:轮询控制器初始化虚拟机链表,创建虚拟机安全容器时根据其虚拟控制器id分配到相应的轮询控制器,添加到虚拟机链表上;步骤S2.4:IO轮询线程遍历虚拟机链表,判断虚拟机是否有IO任务需要处理,按设定的调度算法调度虚拟机;步骤S2.5:初始化IO上下文,根据虚拟机的虚拟队列从预备物理资源池获取物理队列,将物理队列与虚拟队列进行绑定,物理队列分为1:1物理队列以及1:N物理队列;步骤S2.6:IO轮询线程处理IO任务,包括从虚拟提交队列读取NVMe指令、翻译NVMe指令和提交NVMe指令;从虚拟完成队列写入NVMe指令完成信息;从物理完成队列读取NVMe指令完成信息;步骤S2.7:将物理队列与虚拟队列进行解绑,返回步骤S2.4;所述步骤S3中分配虚拟机安全容器需要的存储资源包括如下步骤:步骤S3.1:通过fdisk创建一个NVMe分区,所有mdev设备共用该分区;步骤S3.2:将该NVMe分区划分成固定大小的份额;步骤S3.3:输入虚拟机安全容器需要的存储资源数量,系统分配给相应的存储资源片段,记录该片段在分区的起始偏移量;下次分配从未分配的片段开始;步骤S3.4:根据该片段在分区的起始偏移量翻译NVMe指令中的StartLogicalBlockAddress,完成对相应存储资源的访问;所述步骤S5中使用硬件IOMMU进行IO地址翻译包括如下步骤:步骤S5.1:加载NVMe模块时创建IOMMUdomain;步骤S5.2:虚拟机IO地址空间发生变化时,添加一个虚拟机各异的起始偏移量,调用vfio_pin_pages接口获取连续的物理页的起始地址HPA,将物理页固定住,通过IOMMUdomain提供的接口进行IOMMU映射和反映射,记录GPA与HPA的映射关系;步骤S5.3:翻译NVMe指令,将NVMe指令中的GPA添加一个虚拟机各异的起始偏移量;步骤S5.4:IOMMU将GPA翻译成HPA,进行dma操作,完成IO读写任务;步骤S5.5:卸载NVMe模块时释放IOMMUdomain的资源。

全文数据:

权利要求:

百度查询: 上海交通大学 可扩展性的NVMe存储虚拟化方法和系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。