【技术实现步骤摘要】
本专利技术涉及磁盘数据读写
,特别涉及一种基于双控制器的读写锁方法及装置。
技术介绍
在双控存储服务器中,可以将数个磁盘做成磁盘阵列(RedundantArraysofindependentDisks,RAID)卷组,从而提供高速、安全的数据存储服务。大部分RAID级别(例如RAID5)都需要将磁盘进行条带化管理,而对于一个条带的读写访问必须互斥,否则就会发生数据错误。例如Linux自带的开源RAID使用的是本地条带锁,但它不能满足双控制器对于RAID条带互斥的需求。并且在数据Cache层面,也必须要有对应的双控锁来控制对双控缓存(Cache)的读取与修改的互斥。综上所述,在实际业务上需要的是一种双控的区间锁,可以对某一I/O范围或者条带范围进行锁定。并且,在对端控制器因异常下线的时候,本控制器的双控范围锁需要处理这样的异常以保证没有拿锁者进入无限等待状态。要实现双控锁,必须依赖于双控通讯机制。在这里不讨论双控通讯的实现细节,仅假设存在这样的通讯机制:能够发送数据,能接收并处理数据,并在对端上线或下线时进行事件通知。简单的方案是将整个存储地址空间(即所属的RAID卷组的存储空间)划分成固定的数据块Block(例如64K个单位),在两个控制器上保存这些Block的“所有者”信息(属于本地还是对端),如果在拿锁时该范围属于本地Block,则在本地Block上进行拿锁,否则 ...
【技术保护点】
一种基于双控制器的读写锁方法,其特征在于,所述方法包括:S1:将整个存储地址空间分割为M个区间块,并将所述M个区间块划分为等长的N个区间,所述N和M均为不小于1的整数;S2:在每个区间块上存放一个红黑树的根节点,所述根节点用于保存Area节点,所述Area节点记录对应区域块的存储地址空间;S3:在需要对目标读写区间进行锁定时,确定所述目标读写区间所属的区间块,在所确定到的区间块的红黑树上查找该区间块所属的Area节点,并在查找到的Area节点的红黑树上查找目标读写区间,若未找到所述目标读写区间,则创建所述目标读写区间对应的Block节点,并将创建的Block节点插入到该Area节点所属的红黑树中;S4:在所述Block节点下创建SubLock节点,查找所述SubLock节点中存储地址空间冲突的节点,若所述存储地址空间冲突的节点存在读写冲突,则增加所述SubLock节点的冲突计数,每个SubLock节点代表一个保存存储地址空间的子锁;S5:判断所述冲突计数是否为初始值,若是,则完成对所述目标读写区间的锁定。
【技术特征摘要】 【专利技术属性】
1.一种基于双控制器的读写锁方法,其特征在于,所述方法包
括:
S1:将整个存储地址空间分割为M个区间块,并将所述M个区间
块划分为等长的N个区间,所述N和M均为不小于1的整数;
S2:在每个区间块上存放一个红黑树的根节点,所述根节点用于
保存Area节点,所述Area节点记录对应区域块的存储地址空间;
S3:在需要对目标读写区间进行锁定时,确定所述目标读写区间
所属的区间块,在所确定到的区间块的红黑树上查找该区间块所属的
Area节点,并在查找到的Area节点的红黑树上查找目标读写区间,若
未找到所述目标读写区间,则创建所述目标读写区间对应的Block节
点,并将创建的Block节点插入到该Area节点所属的红黑树中;
S4:在所述Block节点下创建SubLock节点,查找所述SubLock节
点中存储地址空间冲突的节点,若所述存储地址空间冲突的节点存在
读写冲突,则增加所述SubLock节点的冲突计数,每个SubLock节点
代表一个保存存储地址空间的子锁;
S5:判断所述冲突计数是否为初始值,若是,则完成对所述目标
读写区间的锁定。
2.如权利要求1所述的方法,其特征在于,步骤S5中,若否,
则等待所述目标读写区间被释放资源后,再对所述目标读写区间进行
锁定。
3.如权利要求2所述的方法,其特征在于,所述目标读写区间
被释放资源,具体包括:
查找所述目标读写区间的SubLock节点中存储地址空间冲突的
节点X,对每一个存在存储地址空间冲突和读写冲突的节点X,减
少该节点X的冲突计数,若该节点X的冲突计数降到初始值,则完
成该节点X对应的目标读写区间的锁定。
4.如权利要求1所述的方法,其特征在于,步骤S2中,还包括:
将每个区间分配给控制器,所述Area节点还记录有控制器标识;
当向属于对端控制器的目标读写区间进行锁定时,相应地,步骤
S5中,对所述目标读写区间进行锁定之前,还包括:
向所述对端控制器发送转让请求,所述对端控制器在收到转让请
求后,转让所述目标读写区间的所有权;转让完成后直接对所述目标
读写区间进行锁定;
如果不能立即转让,则在本地释放资源之后,进行第二次目标读
写区间所有权转让;如果仍然不能转让,则放弃转让,直接对所述目
标读写区间进行锁定。
5.如权利要求4所述的方法,其特征在于,步骤S2中,将每个
区间分配给控制器,具体包括:
在区间上产生的第一个锁定请求时,会与对端控制器进行一次通
讯,与对端控制器协商该区间的所有权,如果对方未持有该区间的所
有权,则本端控制器获得该区间的所有权;否则本端控制器得知对端
对该控制器的所有权;当双方同时发起对区间的所有权协商时,则使
用随机数+控制器插槽号的方式决定优先级,优先级高的控制器获得
该区间的所有权。
技术研发人员:李浩然,
申请(专利权)人:北京神州云科数据技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。