- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第PAGE12页, 共 NUMPAGES \* Arabic 12页
RAID扫描机制实现
Storware V2的扫描功能包括RAID Group和RAID LUN的扫描发现等流程,扫描功能的实现,实际上是从磁盘的DDF区读取数据,分析磁盘角色,上报RAID Group、RAID LUN等信息。虽然扫描功能与DDF功能紧密相连,但本文档着重研究扫描的具体实现流程,与DDF相关的细节问题请参考《STORWARE V2 DDF介绍》文档的描述。
扫描时机
扫描功能主要用于两个时机:
1、磁盘上下线,包括三种方式:磁盘物理被拔插,磁盘错误处理导致磁盘上下电,中间层offline,驱动给平台提供了快速通道,磁盘插拔通过快速通道上报给扫描模块。
2、设备重启,设备上电以后需要扫描所有磁盘的DDF来组装RAID Group和RAID LUN;
以上所列情况的扫描流程是完全相同的,都是调用相同的扫描接口函数,无论是只插拔一块磁盘还是同时插拔多块磁盘,对软件处理来说都是一块一块来完成扫描流程。
读取DDF流程
对于读取DDF的流程来说,无论是RG DDF还是LUN DDF,处理流程都类似,都需要先读取主区,再读取备区,通过所有成员磁盘的主备区数据来裁决(冲突处理)如何组成RAID Group 、RAID LUN。具体流程如下:
下发读取命令到DISK IO,Disk IO返回读取结果
检验DDF是否有效(通过校验CRC、签名等)
如果主备区数据一致,则将该磁盘加入生成任务队列
如果主备区数据不一致,该磁盘进入冲突任务队列
无论DDF的主备区数据是否一致,继续读取其它磁盘
如果主区读取失败,备区读取成功,则用备区数据写主区,并返回写结果
如果主区读取成功,备区读取失败,则用主区数据写备区,并返回写结果
如果主、备任意一个区域出现写失败,则通知LUN该磁盘有IO错误,由LUN决定是否踢盘,并将该磁盘标记为Failed。
注:
读DDF时,是每一块磁盘先读取主区,在读取备区(纵向)
写DDF时,是先写所有成员盘的主区,再写所有成员盘的备区(横向)
扫描流程
RG 扫描流程
图1 RG扫描流程
RG扫描流程的具体说明如下:
接收PD加入的消息,启动扫描流程
从磁盘的RG DDF区读取DDF的数据
判断fauty位是否置位,如果置位则通知PD故障盘点灯
如果不是故障盘,则通过in_group位判断是否为成员盘
如果是成员盘则判断对应uuid的RG是否存在
如果RG存在,则加入RG,并生成VD(对一个LUN来说,每扫描一块磁盘,就生成一个VD)
如果RG不存在则生成RG节点,并通知VD模块生成VD,VD通知LUN进行扫
描
磁盘为成员盘的流程
图2 磁盘为成员盘的处理流程
磁盘为成员盘的流程处理说明:
分析磁盘的DDF的in_Group位得出该磁盘为RG的成员盘
如果该RG存在,则该磁盘加入该RG
如果该RG不存在,则创建该UUID的RG
通知Disk VD模块生成VD
通知LUN SCAN模块有VD加入
LUN SCAN模块启动扫描线程
注:
in_group位表示该磁盘是否属于RAID Group的,主要用于区别空白盘,全局热备盘;如果能够判断该字段,就可以决定扫描时是否需要读取RAID Group数据区和虚拟磁盘数据区的内容;该字段是在创建RAID Group时设置的,删除RAID Group时会清除,其它任何操作都不会更新该字段;
对于踢出的盘有两种情况,拔盘导致被踢,故障导致被踢;如果故障被踢,又分为两种情况,自检通过就会初始化,不通过就不再处理;
若被踢出的磁盘又插入到系统中,重启后,对于没有初始化的故障盘和拔出导致被踢的盘,扫描时会认为是RAID Group中的盘,这样就会与原RAID Group冲突,冲突处理后,原RAID Group正常显示,被踢盘仅显示磁盘
LUN 扫描
LUN SCAN在LUN中所处位置
图3 LUN Scan的位置
子模块
说明
LUN MGT
处理LUN模块管理平面的内容,包括:LUN特性管理命令行,管理LIB库,内核态外部模块接口实现(包括内核态管理命令业务流程实现,事件处理接口实现)
LUN Core
维护LUN存储信息和LUN虚拟磁盘存储信息,并提供管理接口;算法通用流程处理;包括的特性:同步、重建、局部重建等;
LUN Scan
处理虚拟磁盘的插拔及LUN结点的组装
LUN DDF
维护LUN相关的DDF信息并保存到物理磁盘,提供读写及解析,冗余备份及错误恢复等功能
LUN IO
算法在数据通道上的通用处理流程,主要包括对Cache下发数据的预处理,子命令拆分,并下发给具体算法处理
RAID Algorithm
具体的RAID类型,主要包括RAID5
加入的VD不属于已有LUN
图4 加入的
文档评论(0)