System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于SPDK NVMe Over TCP的单云盘多连接实现方法技术_技高网

一种基于SPDK NVMe Over TCP的单云盘多连接实现方法技术

技术编号:41012927 阅读:17 留言:0更新日期:2024-04-18 21:49
本发明专利技术属于存储技术领域,具体涉及一种基于SPDK NVMe Over TCP的单云盘多连接实现方法。该发明专利技术,使云盘在传输数据时充分使用网卡的队列,并让IO在TCP链接间、TCP链接在网卡队列间实现负载均衡,同时即使其中某些TCP链接出现故障,也能通过现存的正常链接传递IO,从而让整个系统的性能、健壮性都能达到一个比较理想的状态,增加了单个云盘的IO链接数量,相当于为单个云盘提供了更多的并行数据逻辑通路,有助于提升性能,增加了单个云盘的IO链接数量,实则相当于为云盘IO提供了有效备份路径,提高了云盘IO可靠性,在qpair层,针对VM下发的顶层IO请求,通过一定的算法把不同的IO请求散列到不同的I/O qpair,充分保证了IO传输的均衡性。

【技术实现步骤摘要】

本专利技术属于存储,具体涉及一种基于spdk nvme over tcp的单云盘多连接实现方法。


技术介绍

1、spdk是由intel发起、用于加速使用nvme ssd作为后端存储的应用软件加速库,后端nvme ssd可以是本地盘也可以是远端云盘。对于当前spdk基于nvme over tcp的云盘技术,spdk的target和host之间需要建立相应tcp连接。每个云盘与底层的nvme协议中的每一对qpair对应(由submission queue和completion queue组成,可以是admin qpair或者是i/o qpair),同时每个qpair会被映射到一个tcp连接上。如图7、图8所示,如果host映射了target端的4块云盘,那么需要建立1个admin qpair(图7源端口55376)、一个用于attach云盘的qpair(图7源端口55380)、以及每个云盘1个i/o qpair共计4个i/o qpair,整个系统总共就会有6条tcp连接(其中只有i/o qpair会用于业务数据传输)。

2、在底层网卡层面,一条tcp链接最终只会选择使用一个网卡队列(基于五元组的rss等散列算法决定),而当前网卡绝大多数都是支持多队列及默认rss散列算法。就当前分析及实验来看,传统方式中一个云盘仅一条io tcp链接,不能充分发挥出多队列网卡的性能优势,且云盘单io链接在云盘较不稳定。


技术实现思路

1、本专利技术的目的是提供一种基于spdk nvme over tcp的单云盘多连接实现方法,能够使云盘在传输数据时充分使用网卡的队列,并让io在tcp链接间、tcp链接在网卡队列间实现负载均衡,同时即使其中某些tcp链接出现故障,也能通过现存的正常链接传递io,从而让整个系统的性能、健壮性都能达到一个比较理想的状态。

2、本专利技术采取的技术方案具体如下:

3、一种基于spdk nvme over tcp的单云盘多连接实现方法,包括:

4、获取rpc命令,并创建tcp类型的传输port实体;

5、根据rpc命令,创建subsystem并建立内存盘,模拟ssd,以nvme方式存储数据,建立ssd与subsystem的映射关系,配置ssd属于当前subsystem;

6、通过rpc命令创建tcp监听实体,建立tcp类型的端口监听;

7、获取配置文件,根据配置文件,得到云盘创建io qpair的数量,即tcp链接数;

8、根据rpc命令使host获取tgt端ssd信息,并建立admin qpair、ctrl qpair的tcp链接;

9、根据tgt端ssd信息在本地创建ssd实例,并建立与vhost-blk控制器的映射关系,使qemu启动虚拟机,获取vm的数据磁盘,将vm的数据磁盘指定为vhost-blk控制器;

10、获取vm向vhost发出建立io qpair,并创建相应tcp链接的命令;

11、获取计算的源端口及io qpair数量,循环创建io qpair及tcp链接;

12、获取tcp链接的三次握手,确保链接状态为established,实施nvme over tcp协议握手;

13、获取vm对vhost-user映射的磁盘进行认证,下发identify命令,并完成认证,vm启动,并进行io测试以及查看云盘。

14、在一种优选方案中,所述根据rpc命令,创建subsystem并建立内存盘,模拟ssd,以nvme方式存储数据,建立ssd与subsystem的映射关系,配置ssd属于当前subsystem的步骤,包括:

15、获取rpc命令,并创建新的subsystem;

16、根据rpc命令,创建内存盘;

17、将创建的内存盘配置为模拟ssd,并模拟采用nvme标准进行数据存储;

18、将ssd设备的身份信息与subsystem的身份信息进行关联;

19、配置ssd的归属属性;

20、若ssd的归属属性属于subsystem,则表明此配置的归属属性属于数据交换和处理的范围;

21、若ssd的归属属性不属于subsystem,则表明此配置的归属属性不属于数据交换和处理的范围。

22、在一种优选方案中,所述获取配置文件,根据配置文件,得到云盘创建io qpair的数量,即tcp链接数的步骤,包括:

23、获取配置文件,所述配置文件包括每个云盘所需创建的io qpair数量的信息;

24、根据每个云盘所需创建的io qpair数量的信息,创建io qpair,即为tcp链接数。

25、在一种优选方案中,所述根据rpc命令使host获取tgt端ssd信息,并建立adminqpair、ctrl qpair的tcp链接的步骤,包括:

26、获取rpc命令;

27、根据rpc命令使host获取tgt端ssd信息;

28、根据获取的tgt端ssd信息,建立admin qpair和ctrl qpair;

29、根据建立admin qpair和ctrl qpair,分别创建tcp链接。

30、在一种优选方案中,所述根据tgt端ssd信息在本地创建ssd实例,并建立与vhost-blk控制器的映射关系,使qemu启动虚拟机,获取vm的数据磁盘,将vm的数据磁盘指定为vhost-blk控制器的步骤,包括:

31、从tgt端获取的ssd信息;

32、根据ssd信息,在本地系统中创建一个模拟ssd实例;

33、根据创建的模拟ssd实例,创建vhost-blk控制器;

34、建立ssd实例与vhost-blk控制器之间的映射;

35、获取qemu命令;

36、根据qemu命令,启动虚拟机;

37、获取vm的数据磁盘;

38、根据vhost-blk控制器配置vm的数据磁盘;

39、将配置后的vm的数据磁盘为vhost-blk控制器。

40、在一种优选方案中,所述获取vm向vhost发出建立io qpair,并创建相应tcp链接的命令的步骤,包括:

41、获取vm内部生成用于建立io qpair的命令;

42、将建立io qpair的命令传输至vhost;

43、vhost根据接收的建立io qpair的命令,创建tcp链接。

44、在一种优选方案中,所述获取计算的源端口及io qpair数量,循环创建io qpair及tcp链接的步骤,包括:

45、获取计算的源端口值和io qpair数量的信息;

46、根据计算的源端口及io qpair数量,逐个创建io qpair;

47、对于每个创本文档来自技高网...

【技术保护点】

1.一种基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,包括:

2.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述根据RPC命令,创建subsystem并建立内存盘,模拟SSD,以NVMe方式存储数据,建立SSD与subsystem的映射关系,配置SSD属于当前subsystem的步骤,包括:

3.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述获取配置文件,根据配置文件,得到云盘创建IO qpair的数量,即TCP链接数的步骤,包括:

4.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述根据RPC命令使Host获取TGT端SSD信息,并建立admin qpair、ctrl qpair的TCP链接的步骤,包括:

5.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述根据TGT端SSD信息在本地创建SSD实例,并建立与vhost-blk控制器的映射关系,使qemu启动虚拟机,获取VM的数据磁盘,将VM的数据磁盘指定为vhost-blk控制器的步骤,包括:

6.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述获取VM向vhost发出建立IO qpair,并创建相应TCP链接的命令的步骤,包括:

7.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述获取计算的源端口及IO qpair数量,循环创建IO qpair及TCP链接的步骤,包括:

8.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述获取TCP链接的三次握手,确保链接状态为ESTABLISHED,实施NVMe Over TCP协议握手的步骤,包括:

9.根据权利要求1所述的基于SPDK NVMe Over TCP的单云盘多连接实现方法,其特征在于,所述获取VM对vhost-user映射的磁盘进行认证,下发identify命令,并完成认证,VM启动,并进行IO测试以及查看云盘的步骤,包括:

10.一种基于SPDK NVMe Over TCP的单云盘多连接实现终端,其特征在于,包括:

...

【技术特征摘要】

1.一种基于spdk nvme over tcp的单云盘多连接实现方法,其特征在于,包括:

2.根据权利要求1所述的基于spdk nvme over tcp的单云盘多连接实现方法,其特征在于,所述根据rpc命令,创建subsystem并建立内存盘,模拟ssd,以nvme方式存储数据,建立ssd与subsystem的映射关系,配置ssd属于当前subsystem的步骤,包括:

3.根据权利要求1所述的基于spdk nvme over tcp的单云盘多连接实现方法,其特征在于,所述获取配置文件,根据配置文件,得到云盘创建io qpair的数量,即tcp链接数的步骤,包括:

4.根据权利要求1所述的基于spdk nvme over tcp的单云盘多连接实现方法,其特征在于,所述根据rpc命令使host获取tgt端ssd信息,并建立admin qpair、ctrl qpair的tcp链接的步骤,包括:

5.根据权利要求1所述的基于spdk nvme over tcp的单云盘多连接实现方法,其特征在于,所述根据tgt端ssd信息在本地创建ssd实例,并建立与vhost-blk控制器的映射关系,使qemu启动虚拟机,获取vm的...

【专利技术属性】
技术研发人员:孙政王雷刘欣刘尧吴重云
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1