一种分布式块存储系统存储锁实现方法及系统与流程
- 国知局
- 2024-09-05 14:57:16
本发明属于计算机软件定义存储领域,涉及一种计算机分布式块存储系统,尤其是涉及一种分布式块存储系统存储锁实现方法及系统。
背景技术:
1、在一个共享存储环境下,多台前端主机可能同时访问同一个存储卷空间,如果此时多台主机在同一个时间点对同一个存储卷进行并发写处理,这种情况发生将导致数据损坏。scsi锁是scsi存储协议中解决对应问题的技术方案。scsi persistent reservation(pr)命令用于应用端对整个lun(存储卷级)设置访问权限,scsi compare and write(caw)命令用于更细粒度的对某个数据块的原子访问控制,也称之为cas(compare and swap)硬件辅助锁。近几年逐渐发展起来的nvme协议也支持相应的pr及caw指令以支持该场景。
2、不管是scsi还是nvme协议都是客户端-服务器的点对点模型的存储协议。而在软件定义存储领域,客户端与存储服务器之间是一对多的io模型。当前市场上主流分布式存储软件为了支持共享存储架构下的pr/caw逻辑,往往在分布式存储的客户端上层引入scsi网关集群,pr/caw在scsi网关层处理的方式解决共享存储架构存储锁的支持问题。这种解决方案不仅将存储系统更加复杂化了,而且降低了存储性能。pr锁信息必须在scsi网关集群间完全同步才能应对前端应用的多路径访问方式,这必将引入集群式的pr锁信息同步机制,复杂化了整个存储技术方案,带来更多故障点,影响存储系统稳定性。而读写请求首先经过scsi网关后需进行scsi协议解析再转化为分布式存储的私有访问解析到后端进行io处理,这样多一层存储链路传输和存储协议转换,对存储性能的影响是巨大的。
技术实现思路
1、本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式块存储系统存储锁实现方法及系统,以实现分布式存储场景对共享存储结构的支持。
2、本发明的目的可以通过以下技术方案来实现:
3、一种分布式块存储系统存储锁实现方法,包括以下步骤:
4、接收应用锁指令,解析所述应用锁指令,根据预先存储的分布式存储集群的集群状态信息,将应用锁指令转化为分布式存储内部对存储卷或存储对象对应偏移位置的锁请求,并发送给对应的存储卷或存储对象的主存储节点;
5、在接收所述主存储节点反馈的锁处理结果后,根据锁处理结果判断是否成功实现存储锁;
6、其中,所述锁处理结果为锁处理成功或错误失败,在锁处理结果为锁处理成功时,所述主存储节点根据锁的最新配置及权限设置对后续同一个存储卷来自不同客户端的读写请求进行访问控制。
7、进一步地,所述集群状态信息包括挂载的卷信息及集群视图信息。
8、进一步地,所述锁请求为卷级pr锁请求或块级caw锁请求。
9、进一步地,所述主存储节点根据所述集群状态信息采用分布式dht哈希算法确定。
10、进一步地,所述主存储节点的确定具体为:
11、若锁请求为卷级pr锁请求,则采用卷元数据所在的存储对象id在数据分布dht哈希环中计算出卷元数据对象的所有副本的存储位置,并将第一副本所在的存储节点作为处理的主存储节点,对于ec存储池,则将第一数据分片作为处理的主存储节点;
12、若锁请求为块级caw锁请求,则将锁请求中指定的逻辑卷偏移地址及数据块长度,转化为对应存储对象的锁请求,每个存储对象的锁请求根据存储对象id在数据分布dht哈希环中分别计算出各自的存储分布位置,各存储分布位置对应的存储节点作为处理的主存储节点。
13、进一步地,所述主存储节点反馈锁处理结果的过程包括:
14、若收到卷级pr锁请求,判断是否为pr_in请求,若是,则读取存储卷元数据,基于卷元数据中的pr信息生成锁处理结果,若否,则为pr_out请求,读取卷元数据,根据所述卷级pr锁请求更新卷元数据pr锁信息,并持久化到分布式存储系统底层存储介质,并同步所述卷元数据pr锁信息到分布式存储系统的所有存储节点,等待所有存储节点同步状态反馈信息后,生成锁处理结果;
15、其中,对同一个卷的pr锁操作,存储节点采用节点级mutex互斥锁进行保护;
16、若收到块级caw锁请求,则构建对该块级caw锁请求指定存储区域的内存级互斥锁,相同存储对象的并发块级caw锁请求加入正在处理的锁请求等待队列,等待前序caw锁操作完成再处理;从底层存储介质读取块级caw锁请求对应的存储位置数据内容,与块级caw锁请求中的预期数据进行比较,判断内容是否一致,根据判断结果生成锁处理结果。
17、进一步地,所述锁请求中包含有发送该锁请求的块访问客户端的客户端id。
18、进一步地,该方法还包括:
19、所述应用锁指令来自异构平台时,将收到的应用锁指令通过passthrough接口转发后再进行解析。
20、本发明还提供一种分布式块存储系统,包括分布式存储集群和多个块设备客户端,其中,
21、所述块设备客户端包括内置有scsi命令解析器的pbdx块驱动,所述scsi命令解析器用于接收并解析应用锁指令,根据预先存储的分布式存储集群的集群状态信息,将应用锁指令转化为分布式存储内部对存储卷或存储对象对应偏移位置的锁请求,并发送给对应的存储卷或存储对象的主存储节点,在接收所述主存储节点反馈的锁处理结果后,根据锁处理结果判断是否成功实现存储锁;
22、所述分布式存储集群包括主存储节点,该主存储节点用于接收所述锁请求并进行相应处理,生成锁处理结果,反馈给所述块设备客户端;
23、其中,所述锁处理结果为锁处理成功或错误失败,在锁处理结果为锁处理成功时,所述主存储节点根据锁的最新配置及权限设置对后续同一个存储卷来自不同客户端的读写请求进行访问控制。
24、进一步地,所述块设备客户端还包括passthrough接口,该passthrough接口用于在转发至所述pbdx块驱动。
25、与现有技术相比,本发明具有以下有益效果:
26、本发明直接解析应用锁指令,无需增加scsi或nvme协议转换网关层,直接通过pbdx私有块访问接口实现锁功能,同时将pr及caw存储锁实现下沉到底层分布式存储逻辑中,通过分布式算法实现锁逻辑,避免了scsipr信息在存储网关层的同步问题以及caw锁逻辑的并发访问原子问题。
技术特征:1.一种分布式块存储系统存储锁实现方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的分布式块存储系统存储锁实现方法,其特征在于,所述集群状态信息包括挂载的卷信息及集群视图信息。
3.根据权利要求1所述的分布式块存储系统存储锁实现方法,其特征在于,所述锁请求为卷级pr锁请求或块级caw锁请求。
4.根据权利要求3所述的分布式块存储系统存储锁实现方法,其特征在于,所述主存储节点根据所述集群状态信息采用分布式dht哈希算法确定。
5.根据权利要求4所述的分布式块存储系统存储锁实现方法,其特征在于,所述主存储节点的确定具体为:
6.根据权利要求3所述的分布式块存储系统存储锁实现方法,其特征在于,所述主存储节点反馈锁处理结果的过程包括:
7.根据权利要求1所述的分布式块存储系统存储锁实现方法,其特征在于,所述锁请求中包含有发送该锁请求的块访问客户端的客户端id。
8.根据权利要求1所述的分布式块存储系统存储锁实现方法,其特征在于,该方法还包括:
9.一种分布式块存储系统,其特征在于,包括分布式存储集群和多个块设备客户端,其中,
10.根据权利要求9所述的分布式块存储系统,其特征在于,所述块设备客户端还包括passthrough接口,该passthrough接口用于在转发至所述pbdx块驱动。
技术总结本发明涉及一种分布式块存储系统存储锁实现方法及系统,所述方法包括:接收应用锁指令,解析应用锁指令,根据预先存储的分布式存储集群的集群状态信息,将应用锁指令转化为分布式存储内部对存储卷或存储对象对应偏移位置的锁请求,并发送给对应的存储卷或存储对象的主存储节点;在接收主存储节点反馈的锁处理结果后,根据锁处理结果判断是否成功实现存储锁;在锁处理结果为锁处理成功时,主存储节点根据锁的最新配置及权限设置对后续同一个存储卷来自不同客户端的读写请求进行访问控制。与现有技术相比,本发明减少了一层存储协议转换所带来的性能损耗以及存储链路损耗,在具有更高的存储访问性能的同时,实现了共享存储架构的存储锁支持。技术研发人员:童飞文,康亮受保护的技术使用者:上海天玑科技股份有限公司技术研发日:技术公布日:2024/9/2本文地址:https://www.jishuxx.com/zhuanli/20240905/288985.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表