- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【精选】RAID子系统分析与实现
RAID子系统分析与实现
概述
本质上来讲,RAID就是模拟一个scsi磁盘,它接收上层Initiator发来的命令,然后将命令分割成更小的”子命令”,再发给具体的磁盘,等这些子命令都执行完成后,再向上层的Initiator返回执行结果。所有的命令都是异步处理的,也就是说,从Initiator来的命令都会存放到自己的一个队列中,这样,RAID同时可以处理更多的命令而不需要Initiator层去等待,当命令完成时,会通过回调机制告诉Initiator命令的完成。
基本术语
先约定以下术语
Partition 分区。一般是指磁盘的一部分,在组建一个RAID时,可以只用磁盘的一部分而不是整个磁盘。但在实际使用过程中,创建RAID时一般都是使用整个磁盘,我们的RAID模块支持只使用磁盘的一部分(分区)来创建RAID。 RAID 指使用Partition来构成的一个行列相间矩阵 Row 包含连续条带(stripe)的一组磁盘 StripeUnit 条带单元,有时也称为chunk,是构成条带的基本单位。
假设条带单元大小是32k,那么数据存放顺序就是disk0 放32k,disk1放32k,这样顺序存放,直至条带结束再返回下一个条带继续存放。 Stripe 跨一个row的一组条带单元。 Good 指RAID状态良好,可以正常提供服务 Degraded 在一个RAID5阵列中,有一块盘坏掉,这时RAID能够提供服务,但是它不能提供容错,这种状态称为降级。 Dead 当一个RAID5阵列有两块盘坏掉时,它将不能提供服务,也不能修复,称为dead状态。.
一个stripe有最大限制,比如最大16块盘做一个row,那么当创建一个32块盘的raid时,就会分成两个row。下图描述前面介绍的这些概念
RAID命令处理
RAID对命令的处理都是按照stripe来处理的,stripe再拆分成stripeUnit发给磁盘处理。
下面以5个磁盘组成的RAID0为例,假设stripeUnit大小为20h。
现在要从AF4h开始的地方读取154h个块,那么
StripeSizeInBlocks = StripeUnitSizeInBlocks*NumDisks=20h*5=A0h
StartStripe = StartBlock / StripeSizeInBlocks = AF4h / A0h = 11h
StartOffset = StartBlock % StripeUnitSizeInBlocks = AF4h % 20h = 14h
那么,起始地址在disk2上的开始地址就是
StartBlock(disk2) = 20h * 11h + 14h = 234h
需要在disk2上访问的块个数为
NumBlocks (disk2) = 20h – 14h = Ch
即向disk2 发出一个scsi命令,开始地址为234h,大小为Ch个”循环方向”,是指RAID中的校验块走向,分为左循环和右循环两种。
左循环是指stripe0的校验块位于阵列中最后一个磁盘上的0号块,strip1校验块位于倒数第2块盘的1号块……,以此类推,等完成一个整循环后,又从最后一块盘重新开始。因其方向看起来像由右向左旋转而下,因此称为左循环,也称作backward.
右循环正好与此相反,右循环也称作forward. 两种方式如下图所示
所谓“异步”和“同步”,是指数据块的写入方式。
“异步”是指当写满一个条带需要转入下一个条带写入时,直接回到0号盘进行写入。也就是每个stripe内都是由低号盘开始写入,写满一个块后转向高号盘继续写入,这种方式不考虑校验块的位置,称为异步。
“同步”则是在写满一个条带,需要将数据写入下一个条带时,先判断下一个条带的校验块位于哪个磁盘,然后将数据写入校验块所在磁盘的下一个磁盘,写满一个数据块后转向高号盘,直至该stripe内编号最大的数据块写满后,再回到同条带内的0号盘写入,直至本条带内的校验块所在的磁盘的前一个磁盘。
实现
RAID部分代码实现为以下几个文件
rt_raid.c: 包括raid模块的初始化,raid数据命令,管理命令线程处理函数的实现等。
rt_raid5.c:具体的命令处理,包括通用的raid读写命令处理以及raid5,6相关的读写函数。
rt_meth.c:stripe上的读写校验方法实现,每个raid命令都是拆分成若干stripe,每个stripe又拆分成若干disk command,这个文件实现了大部分stripe相关的读写命令和回调函数。
rbucket.c:stripe lock实现文件。
raidmang.c:raid命令行管理文件,SES函数处理等,也作为GUI管理的接口。
数据命令处理
您可能关注的文档
- 【精选】R3300手持机软件开发指南.pdf
- 【精选】05-06高等数学(A)解答.ppt
- 【精选】Raivo:A 20-year-old success story_20140430212201_2985.pdf
- 【精选】Q编程培训教材.pdf
- 【精选】RC2-产品规格.pdf
- 【精选】RCA和FMEA在护理质量持续改进中的作用.pdf
- 【精选】RC电路与运放实质.ppt
- 【精选】RC正弦波振荡器方波产生电路实验.doc
- 【精选】Ralph Ellison简介.ppt
- 【精选】REACH限制物质61项(附件17)中文清单.pdf
- 浙江省温州市浙南名校联盟2025-2026学年高一上学期期中联考数学试题含解析.docx
- 26高考数学提分秘诀重难点34圆锥曲线中的定点、定值、定直线问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点35概率与统计的综合问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点31圆锥曲线中的切线与切点弦问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点30圆锥曲线中的弦长问题与长度和、差、商、积问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点29巧解圆锥曲线的离心率问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点28直线与圆的综合(举一反三专项训练)(全国通用)(含解析).docx
- 寡核苷酸药物重复给药毒性研究技术指南.docx
- 重组溶瘤腺病毒生产质量管理标准.docx
- 26高考数学提分秘诀重难点27直线与圆中常考的最值与范围问题(举一反三专项训练)(全国通用)(含解析).docx
最近下载
- 职业技术学院2024级休闲农业经营与管理专业人才培养方案.pdf VIP
- 中国铁路青藏集团有限公司公开招聘备考题库附答案.docx VIP
- 招172人!中国铁路青藏集团有限公司公开招聘备考题库附答案.docx VIP
- 《起重机械安全技术规程》(TSG51-2023)知识培训.pptx VIP
- 2025中国铁路青藏集团有限公司招聘202人笔试题库附答案解析.docx VIP
- 人教版九年级化学上册第1-6单元测试题及答案.pdf VIP
- TSG 51-2023 起重机械安全技术规程.docx VIP
- 2025年下半年教师资格证幼儿园《综合素质》真题试卷(带答案).pdf VIP
- 工程概论知到智慧树期末考试答案题库2024年秋湘潭大学.docx VIP
- 无人机通用动态数据库的分析.pdf VIP
原创力文档


文档评论(0)