【技术实现步骤摘要】
一种基于RDMA的非易失内存系统的通信方法及服务器
[0001]本专利技术属于非易失存储领域,更具体地,涉及一种基于RDMA的非易失内存系统的通信方法及服务器。
技术介绍
[0002]远程直接内存访问(Remote Direct Memory Access,RDMA)是一种旁路内核实现远端数据零拷贝访问的网络传输技术,提供低延时和高吞吐。随着其价格的不断降低,在数据中心中使用RDMA构建高性能的分布式存储系统成为一种趋势。RDMA包含两种原语,即单边原语和双边原语。单边原语包含RDMA read、RDMAwrite和RDMA atomic。使用单边原语不需要接收端的CPU参与。双边原语类似于socket编程,包含send、recv和write_with_imm。使用双边原语时,发起端和接收端的CPU均需参与数据传输。Write_with_imm原语是一种特殊的双边原语,和RDMA write不同的是,它在消息中携带了额外的immediate域并能在操作完成后及时通知远端服务器。网络往返次数相同时,单边原语比双边原语更快;在C ...
【技术保护点】
【技术特征摘要】
1.一种基于RDMA的非易失内存系统的通信方法,其特征在于,所述非易失内存为服务器的内存,包括如下步骤:所述服务器接收客户端使用RDMA原语发送的写请求,以向服务器写入新版本的指定数据;所述RDMA原语为客户端以用户态直接操作网卡的方式向服务器发送写请求;所述服务器采用异地更新策略根据所述写请求在其数据池中为新版本的指定数据分配相应大小的非易失内存NVM块,并在元数据池中为新版本指定数据的元数据分配日志条目log entry,将写请求中的CRC校验和、数据值的长度和给新版本指定数据分配的非易失内存NVM块的起始偏移地址存储在log entry中,然后修改哈希表的索引,使得哈希表可以索引到分配的新版本指定数据对应的log entry;所述服务器向客户端返回分配的NVM块的起始偏移地址;以便客户端使用RDMA原语中的RDMA write原语将新版本的指定数据传输到服务器缓存,以将所述新版本的指定数据写入到所述分配的NVM块;所述服务器采用日志结构在NVM中维护指定数据的多个版本,每个版本对应的元数据信息集合构成日志条目log entry,同一个指定数据多个版本对应的log entry构成一个链表,最新版本的指定数据在链表的表头,最旧版本的数据在链表的表尾,链表的表头被哈希表索引;log entry存储在元数据池中;所述服务器的后台程序阶段性遍历元数据池中的每个log entry,对log entry对应的指定数据进行完整性验证,当对应版本的数据完整性验证通过,将对应版本的数据持久化到对应的NVM块中;所述服务器接收客户端使用RDMA原语发送的指定数据的读请求,对所述指定数据进行持久化感知的读操作,并向客户端返回存储指定数据的NVM块的起始偏移地址,以保证客户端读取到指定数据最新的完整持久化版本。2.根据权利要求1所述的通信方法,其特征在于,所述服务器在元数据池中分配NVM块用来存储指定数据的元数据;所述服务器在数据池中分配NVM块用来存储指定数据;所述服务器的后台程序对log entry对应的指定数据的完整性验证通过后,将对应的指定数据持久化到数据池中。3.根据权利要求2所述的通信方法,其特征在于,所述服务器每个log entry中保存的指定数据元数据包括:指定数据的NVM块的起始偏移地址、数据值的长度、CRC校验和以及持久化标识位;所述数据值的长度和CRC校验和均由客户端发送的写请求传递给服务器,然后保存在log entry中;所述指定数据的NVM块的起始偏移地址和数据值的长度用于定位服务器数据池中的指定数据,所述CRC校验和用于检查指定数据的完整性,所述持久化标识位用于判断指定数据是否已经完整持久化到NVM块中。4.根据权利要求3所述的通信方法,其特征在于,所述服务器接收客户端发送的指定数据的读请求,对所述指定数据进行持久化感知的读操作,具体包括如下步骤:S101,所述服务器接收客户端通过RDMA send原语发送的指定数据的读请求,所述读请求中包含键;通过所述键可以在哈希表中找到指定数据最新版本对应的log entry存储的位置,进一步通过log entry中指定数据的NVM块起始偏移地址可以找到指定数据最新版本;S102,所述服务器查找哈希表,找到所述键指示的指定数据链表的表头的log entry;
S103,所述服务器检查log entry中的持久化标识位,判断log entry对应版本的指定数据是否已经完整持久化到NVM块中;若已经完整持久化到NVM块中,则执行步骤S105,若未完整持久化到NVM块中,则执行步骤S104;S104,所述服务器通过log entry中记录的指定数据的NVM块的起始偏移地址和数据值的长度定位服务器数据池中的指定数据并计算其CRC校验和,比较计算的CRC校验和与log entry中存储的CRC校验和是否相等;如果相等,则先持久化log entry对应版本的指定数据,然后执行步骤S105;如果不相等,则判断该数据写入是否超时,如果超时则将log entry索引到的存储指定数据的NVM块和存储log entry的NVM块标记为无效,以便内存清理阶段进行回收;并通过存储在log entry中的指针找到前一个版本指定数据对应元数据的log entry,继续执行步骤S103;S105,所述服务器通过RDMA原语向客户端返回log entry中记录的指定数据的NVM块的起始偏移地址;以便客户端通过RDMA read读取服务器数据池中所述NVM块的起始偏移地址处的指定数据。5.根据权利要求3所述的通信方法,其特征在于,所述服务器的后台程序阶段性遍历元数据池中的每个log entry,每次从上次结束的地方开始,对于每个log entry指示的数据池中的指定数据,计算其CRC校验和并与存储在该log entry中的CRC校验和进行比较;如果相等则将其持久化到对应的NVM块中,设置该log entry中的持久化标识位为有效,接着继续检查下一个log entry;如果不相等,则检查该log entry对应的数据写入是否超时,并中止此次遍历,如果写入超时则将该log entry索引到的存储数据的NVM块和存储该log entry的NVM块标记为无效,等待内存清理阶段回收;其中,所述持久化标识位为有效表示对应的数据已经完整持久化到NVM块中。6.一种服务器,...
【专利技术属性】
技术研发人员:王芳,冯丹,施展,杜静文,李伟光,
申请(专利权)人:华中科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。