1.一种DPU本地存储虚拟化中的地址映射方法,其特征在于,包括以下步骤:虚拟机调用主机侧的地址映射配置管理模块提供的系统调用接口进行虚拟机物理地址和主机物理地址的映射配置;地址映射配置管理模块下发虚拟机物理地址和长度至DPU的虚拟地址映射模块;虚拟地址映射模块管理全局的直接内存访问地址资源,先分配主机侧要求长度的全局直接内存访问地址,然后在DPU的预先初始化的映射页表中映射虚拟机物理地址到分配的全局直接内存访问地址,并将分配的全局直接内存访问地址返回给地址映射配置管理模块;地址映射配置管理模块获取到分配的全局直接内存访问地址,在IOMMU中映射分配的全局直接内存访问地址到主机物理地址。
2.根据权利要求1所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,所述虚拟机调用主机侧的地址映射配置管理模块提供的系统调用接口进行虚拟机物理地址和主机物理地址的映射配置,包括:虚拟机启动过程中进行初始化并通过系统调用接口下发虚拟机物理地址和主机物理地址的地址映射请求,主机侧的地址映射配置管理模块接收到虚拟机物理地址和主机物理地址的地址映射请求后进行虚拟机物理地址和主机物理地址的配置。
3.根据权利要求1所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,DPU的预先初始化的映射页表中维护了虚拟机物理地址到分配的全局直接内存访问地址的地址映射,在映射完成后,后续的虚拟机的IO请求下发到DPU后,DPU的虚拟地址映射模块会将IO请求的虚拟机物理地址映射成分配的全局直接内存访问地址并替换。
4.根据权利要求1所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,通过分配的全局直接内存访问地址对不同的虚拟机进行隔离。
5.根据权利要求1所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,在接入的被多个虚拟机共享的SSD进行IO读/写请求处理时,不同的虚拟机通过DPU创建的虚拟磁盘直接将IO读/写请求下发到DPU,通过DPU的虚拟地址映射模块将虚拟机物理地址映射到分配的全局直接内存访问地址并封装新的IO读/写请求,DPU将新的IO读/写请求发送给SSD,SSD通过分配的全局直接内存访问地址直接向主机的内存进行数据搬移。
6.根据权利要求5所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,所述通过DPU的虚拟地址映射模块将虚拟机物理地址映射到分配的全局直接内存访问地址并封装新的IO读/写请求,包括:DPU的存储虚拟化软件栈分别针对不同虚拟机的IO读/写请求进行命令解析,获取命令的数据目的直接内存访问地址,在虚拟化场景中数据目的直接内存访问地址即为不同虚拟机的虚拟机物理地址;根据在DPU的虚拟地址映射模块中已建立的地址映射,存储虚拟化软件栈将虚拟机物理地址通过虚拟地址映射模块进行映射得到分配的全局直接内存访问地址;DPU的存储虚拟化软件栈将分配的全局直接内存访问地址以及命令中其他解析后的字段封装成新的IO读/写请求。
7.根据权利要求6所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,在存储虚拟化软件栈将虚拟机物理地址通过虚拟地址映射模块进行映射时,对地址映射合法性进行判断,若分配的全局直接内存访问地址不合法则返回错误,结束IO读/写请求,若分配的全局直接内存访问地址合法,则返回映射后的全局直接内存访问地址。
8.根据权利要求7所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,在进行地址映射合法性判断时,根据不同虚拟机的虚拟机物理地址范围,在虚拟地址映射模块生成与各虚拟机对应的分配的全局直接内存访问地址的不同地址范围,若映射的虚拟机物理地址范围在分配的全局直接内存访问地址的地址范围内,则判断为合法,否则不合法。
9.根据权利要求5所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,所述DPU将新的IO读/写请求发送给SSD,包括:DPU的存储虚拟化软件栈通过P2P硬件模块将新的IO读/写请求发送给挂载在主机侧的SSD。
10.根据权利要求5所述的DPU本地存储虚拟化中的地址映射方法,其特征在于,所述SSD通过分配的全局直接内存访问地址直接向主机的内存进行数据搬移,包括:SSD收到IO读/写请求并解析命令后,根据获取到的全局直接内存访问地址,发起直接内存访问数据读/写请求;直接内存访问数据读/写请求经过IOMMU,IOMMU对目标全局直接内存访问地址进行映射,检查是否合法,将全局直接内存访问地址映射成主机物理地址,作用于虚拟机的数据缓冲区对应的主机物理内存处。