RAID扫描机制实现

上传人:添*** 文档编号:189763321 上传时间:2021-08-07 格式:DOCX 页数:9 大小:350.52KB
返回 下载 相关 举报
RAID扫描机制实现_第1页
第1页 / 共9页
RAID扫描机制实现_第2页
第2页 / 共9页
RAID扫描机制实现_第3页
第3页 / 共9页
RAID扫描机制实现_第4页
第4页 / 共9页
RAID扫描机制实现_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《RAID扫描机制实现》由会员分享,可在线阅读,更多相关《RAID扫描机制实现(9页珍藏版)》请在金锄头文库上搜索。

1、RAID扫描机制实现Storware V2的扫描功能包括RAID Group和RAID LUN的扫描发现等流程,扫描功能的实现,实际上是从磁盘的DDF区读取数据,分析磁盘角色,上报RAID Group、RAID LUN等信息。虽然扫描功能与DDF功能紧密相连,但本文档着重研究扫描的具体实现流程,与DDF相关的细节问题请参考STORWARE V2 DDF介绍文档的描述。1 扫描时机扫描功能主要用于两个时机:1、磁盘上下线,包括三种方式:磁盘物理被拔插,磁盘错误处理导致磁盘上下电,中间层offline,驱动给平台提供了快速通道,磁盘插拔通过快速通道上报给扫描模块。2、设备重启,设备上电以后需要扫描

2、所有磁盘的DDF来组装RAID Group和RAID LUN;以上所列情况的扫描流程是完全相同的,都是调用相同的扫描接口函数,无论是只插拔一块磁盘还是同时插拔多块磁盘,对软件处理来说都是一块一块来完成扫描流程。2 读取DDF流程对于读取DDF的流程来说,无论是RG DDF还是LUN DDF,处理流程都类似,都需要先读取主区,再读取备区,通过所有成员磁盘的主备区数据来裁决(冲突处理)如何组成RAID Group 、RAID LUN。具体流程如下:1) 下发读取命令到DISK IO,Disk IO返回读取结果2) 检验DDF是否有效(通过校验CRC、签名等)3) 如果主备区数据一致,则将该磁盘加入

3、生成任务队列4) 如果主备区数据不一致,该磁盘进入冲突任务队列5) 无论DDF的主备区数据是否一致,继续读取其它磁盘6) 如果主区读取失败,备区读取成功,则用备区数据写主区,并返回写结果7) 如果主区读取成功,备区读取失败,则用主区数据写备区,并返回写结果8) 如果主、备任意一个区域出现写失败,则通知LUN该磁盘有IO错误,由LUN决定是否踢盘,并将该磁盘标记为Failed。注:l 读DDF时,是每一块磁盘先读取主区,在读取备区(纵向)l 写DDF时,是先写所有成员盘的主区,再写所有成员盘的备区(横向)3 扫描流程3.1 RG 扫描流程图1 RG扫描流程RG扫描流程的具体说明如下:1) 接收P

4、D加入的消息,启动扫描流程2) 从磁盘的RG DDF区读取DDF的数据3) 判断fauty位是否置位,如果置位则通知PD故障盘点灯4) 如果不是故障盘,则通过in_group位判断是否为成员盘5) 如果是成员盘则判断对应uuid的RG是否存在6) 如果RG存在,则加入RG,并生成VD(对一个LUN来说,每扫描一块磁盘,就生成一个VD)7) 如果RG不存在则生成RG节点,并通知VD模块生成VD,VD通知LUN进行扫描3.2 磁盘为成员盘的流程图2 磁盘为成员盘的处理流程磁盘为成员盘的流程处理说明:1) 分析磁盘的DDF的in_Group位得出该磁盘为RG的成员盘2) 如果该RG存在,则该磁盘加入

5、该RG3) 如果该RG不存在,则创建该UUID的RG4) 通知Disk VD模块生成VD5) 通知LUN SCAN模块有VD加入6) LUN SCAN模块启动扫描线程 注:l in_group位表示该磁盘是否属于RAID Group的,主要用于区别空白盘,全局热备盘;如果能够判断该字段,就可以决定扫描时是否需要读取RAID Group数据区和虚拟磁盘数据区的内容;该字段是在创建RAID Group时设置的,删除RAID Group时会清除,其它任何操作都不会更新该字段;l 对于踢出的盘有两种情况,拔盘导致被踢,故障导致被踢;如果故障被踢,又分为两种情况,自检通过就会初始化,不通过就不再处理;l

6、 若被踢出的磁盘又插入到系统中,重启后,对于没有初始化的故障盘和拔出导致被踢的盘,扫描时会认为是RAID Group中的盘,这样就会与原RAID Group冲突,冲突处理后,原RAID Group正常显示,被踢盘仅显示磁盘3.3 LUN 扫描3.3.1 LUN SCAN在LUN中所处位置图3 LUN Scan的位置子模块说明LUN MGT处理LUN模块管理平面的内容,包括:LUN特性管理命令行,管理LIB库,内核态外部模块接口实现(包括内核态管理命令业务流程实现,事件处理接口实现)LUN Core维护LUN存储信息和LUN虚拟磁盘存储信息,并提供管理接口;算法通用流程处理;包括的特性:同步、重

7、建、局部重建等;LUN Scan处理虚拟磁盘的插拔及LUN结点的组装LUN DDF维护LUN相关的DDF信息并保存到物理磁盘,提供读写及解析,冗余备份及错误恢复等功能LUN IO算法在数据通道上的通用处理流程,主要包括对Cache下发数据的预处理,子命令拆分,并下发给具体算法处理RAID Algorithm具体的RAID类型,主要包括RAID53.3.2 加入的VD不属于已有LUN图4 加入的VD不属于已有LUN1) RAID GROUP扫描DISK DDF后,发现该物理硬盘上划分的VD,上报给LUN扫描模块;2) LUN扫描模块在收到上报的VD后,请求读取DDF;3) LUN DDF模块组装

8、好命令,下发给disk模块; 4) LUN DDF读取到数据后,对数据有效性进行校验; 5) 在读出DDF后,扫描模块会查找当前系统中的LUN,看该VD是否存在于系统中;6) 当找不到这样的结点时,则生成一个Failed(或者N/A)状态的LUN结点;3.3.3 加入VD属于已有LUN图5 加入的VD属于已有LUN1) 如果找到这样的LUN结点,则判断该结点是否可以加入到该LUN中;2) 如果可以加入到LUN中,那么LUN CORE模块会将该VD通过RAID Algorithm加入到LUN中;3) 若不可以加入,则将该VD加入到全局有DDF链表中(用于存放有冲突的VD的链表);4) 对于步骤F

9、7中,磁盘加入到LUN中后,如果LUN处于缺missing磁盘的降级状态且等待时间超过5分钟,或者LUN为不缺missing磁盘的降级或已经处于NORMAL状态,则需要运行该LUN,其流程如下:图6 LUN运行流程1) LUN scan通知LUN MGT运行该LUN;2) LUN MGT调用LUN CORE接口去运行该LUN;3) LUN MGT通知CACHE模块创建LUN结点;4) LUN MGT通知TGT模块创建LUN结点3.3.4 VD移除图7 VD移除流程1) Disk模块上报给LUN INFO模块VD被拔;2) LUN INFO模块在LUN中查找,被拔磁盘是否是LUN中的磁盘;3)

10、若在LUN中找到这样的磁盘,则需要上报给状态机处理;4) 若在LUN中找不到这样的磁盘(冲突磁盘),则需要在全局有DDF链表中查找,并删除在链表中的结点;3.4 冲突处理流程 冲突磁盘 成员磁盘 队列A 队列B假设一个阵列由3块成员磁盘组成,磁盘1,磁盘4曾经为成员磁盘,因先后被拔出而踢盘,磁盘5为重建盘:1) 设备开机后,磁盘1最先扫描上来,在队列A中加入该磁盘,并生成一个节点2) 磁盘2被扫描上来,与磁盘1冲突,磁盘2被加入队列B3) 磁盘3被扫描上来,与磁盘1冲突,被加入入队列B4) 而磁盘2、磁盘3一致,可以组成降级阵列,则删除先前的节点,生成一个新的节点,同时将磁盘磁盘1加入队列B5) 磁盘4被扫描上来,与磁盘2、3冲突,加入队列B6) 磁盘5被扫描上来,与磁盘2、3一致,加入队列A,此时,一个重建中的阵列被成功生成,被踢出的磁盘仅显示磁盘注:l a、aa、aaa仅表示DDF的内容,队列A表示生成队列,队列B表示冲突队列第9页, 共9页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 存储

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号