[发明专利]一种块设备写IO整形和多控制器同步系统及同步方法有效
| 申请号: | 201710022292.2 | 申请日: | 2017-01-12 |
| 公开(公告)号: | CN106886368B | 公开(公告)日: | 2019-08-16 |
| 发明(设计)人: | 王道邦;王成武;周泽湘;李艳国;段舒文;于召鑫;潘兴旺;张恒;马赵军;王爽 | 申请(专利权)人: | 北京同有飞骥科技股份有限公司 |
| 主分类号: | G06F3/06 | 分类号: | G06F3/06 |
| 代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 王民盛 |
| 地址: | 100096 北京市海*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 设备 io 整形 控制器 同步 系统 方法 | ||
1.一种块设备写IO整形和多控制器同步系统,其特征在于:包括块设备驱动过滤模块,块设备绑定模块,写IO整形模块,IO转发模块,读间隙模块和IO下刷模块,以及内存池;块设备驱动过滤模块分别与块设备绑定模块、写IO整形模块、内存池连接,写IO整形模块分别与内存池、IO转发模块、读间隙模块连接,内存池与IO下刷模块连接;
块设备驱动过滤模块,用于整个系统的初始化,包括内存资源分配,设备注册和用户管理程序交互;具体为根据用户在用户管理程序交互中输入的底层块设备,为其创建过滤块设备,分配内存池和启动IO下刷模块以及调用块设备绑定模块进行过滤块设备和底层块设备映射,过滤块设备用于用户通过用户管理程序交互进行SAN导出和接收IO请求,并对接收的IO请求调用IO整形模块进行处理;
块设备绑定模块,用于将由所述块设备驱动过滤模块创建的过滤块设备和底层块设备进行映射,指定与块设备对应内存中的数据最终要写入的底层块设备;
写IO整形模块,用于对写IO连续和间隙数据进行合并处理,并对合并完成后的写IO请求和与当前内存中数据不具合并关系的写IO请求写入与块设备对应内存中,并调用所述IO转发模块接口转发合并后的数据,调用IO下刷模块下刷数据;
IO转发模块,用于将写IO整形模块发来的IO转发到集群的其他控制器中,同时注册反馈回调函数,等待其他控制器反馈,其他控制器反馈后将调用回调函数处理返回,成功返回不需要额外处理,失败时,根据返回的错误信息进行相关处理;
读间隙模块,用于读出所述写IO整形模块发来的指定块设备的起始位置和长度的数据,并返回给所述写IO整形模块;
IO下刷模块,用于在内存池水位触发时,将内存中的数据写入底层块设备,写入成功后调用回调函数处理下刷成功的IO请求,并通知其他控制器,其他控制器在收到此反馈时将缓存中的IO请求标记为Clean状态;将缓存池中的下刷成功的IO请求以及标识为Clean的数据清除。
2.根据权利要求1所述的一种块设备写IO整形和多控制器同步系统,其特征在于:所述对写IO间隙数据合并通过以下过程完成:先调用所述读间隙模块从底层绑定的块设备中读出间隙数据,再与当前的写IO请求和缓存中的IO请求进行合并。
3.根据权利要求1所述的一种块设备写IO整形和多控制器同步系统,其特征在于:所述在内存池水位触发时的检查为定时检查或IO入内存池时检查水位,或者是既定时检查又在IO入内存池时检查。
4.根据权利要求1所述的一种块设备写IO整形和多控制器同步系统,其特征在于:所述将内存中的数据写入底层块设备前判断当前自己是否为主控制器,若是,则将满足内存池水位条件的IO请求的数据下刷到对应的块设备。
5.根据权利要求1所述的一种块设备写IO整形和多控制器同步系统,其特征在于:所述底层块设备可以是物理的,也可以是逻辑的,只要是能提供相应块设备标准的接口,均可以与过滤块设备进行配合使用,底层块设备包括FC、IP SAN映射的共享磁盘,或者通过SAS或者PCI-E全交换方式连接到所有控制器的物理磁盘。
6.根据权利要求1-5任一所述的一种块设备写IO整形和多控制器同步系统,其特征在于:所述根据返回的错误信息进行相关处理包括但不限于以下内容:若有控制器超时,在设定重传的次数后,将其标记为失败,并通知所有控制器,将失败的控制器从集群中剔除,并推举剩余控制器中的一个接管其工作。
7.一种块设备写IO整形和多控制器同步方法,基于权利要求2所述一种块设备写IO整形和多控制器同步系统,包括以下内容:
一,启动块设备驱动过滤模块,根据接收的用户指定的底层块设备创建过滤块设备用于前端导出和接收服务器端的读写IO,以及为过滤块设备分配内存池,然后调用块设备绑定模块将底层块设备与过滤块设备进行绑定,与过滤块设备绑定的底层块设备,可以是单个磁盘,或由多个磁盘组件的RAID,或由SAN存储映射出来的逻辑盘;定时调用IO下刷模块检查内存池中数据是否到达水位并将数据下刷到底层块设备;
二,过滤块设备等待服务器端写IO请求,当服务器端写IO到达时,将写IO与缓存中已存在的IO进行比较,对于与缓存IO请求满足请求地址连续性的写IO请求,以及与缓存IO请求满足地址间隙条件的写IO请求,调用写IO整形模块进行整形,对于不满足连续性和写间歇的写IO请求,直接写入到缓存中;
三,写IO整形模块将与缓存IO请求满足请求地址连续性的写IO请求,进行写IO合并并清除内存池中用于合并的缓存IO请求;将与缓存IO请求满足地址间隙条件的写IO请求,调用读间隙模块读取写IO请求与内存池中的写IO请求之间的间隙数据并合并,以及清除内存池中用于合并的缓存IO请求;
四,写IO整形模块将已经合并之后的写IO请求和无法合并的写IO请求写入内存池,调用IO下刷模块检查内存池中数据是否到达水位并将数据下刷到底层块设备;并调用转发模块同时转发到集群中的其他控制器,等待其他控制器的反馈,均成功后,将成功信息返回到过滤块设备进而由过滤块设备返回到服务器端;若有控制器超时,在设定重传的次数后,将其标记为失败,并通知所有控制器,将失败的控制器从集群中剔除,并推举新的控制器接管失效控制器的工作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京同有飞骥科技股份有限公司,未经北京同有飞骥科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710022292.2/1.html,转载请声明来源钻瓜专利网。





