整条写、重构写与读改写

更新时间:2023-05-12 09:30:37 阅读: 评论:0

整条写、重构写与读改写
整条写(Full-Stripee Write):整条写需要修改奇偶校验群组中所有的条带单元,因此新的奇偶校验值可以根据所有新的条带数据计算得到,不需要额外的读、写操作。因此,整条写是最有效的写类型。整条写的例⼦,如 RAID 2、RAID 3。它们每次IO总是⼏乎能保证占⽤所有盘,因此每个条带上的每个Segment都被写更新,所以控制器可以直接利⽤这些更新的数据计算出校验数据之后,在数据被写⼊数据盘的同时,将计算好的校验信息写⼊校验盘。
重构写(Reconstruct Write):如果要写⼊的磁盘数⽬超过阵列磁盘数⽬的⼀半,可采取重构写⽅式。在重构写中,从这个条带中不需要修改的 Segment 中读取原来的数据,再和本条带中所有需要修改的 Segment 上的新数据计算奇偶校验值,并将新的 Segment 数据和没有更改过的 Segment 数据以及新的奇偶校验值⼀并写⼊。显然,重构写要牵涉更多的I/O操作,因此效率⽐整条写低。重构写的例⼦,⽐如在RAID 4中,如果数据盘为8块,某时刻⼀个IO只更新了⼀个条带的6个Segment,剩余两个没有更新。在重构写模式下,会将没有被更新的两个Segment的数据读出,和需要更新的前6个Segment的数据计算出校验数据,然后将这8个 Segment 连同校验数据⼀并写⼊磁盘。可以看出,这个操作只是多出了读两个Segment 中数据的操作和写两个 gment 的操作,但是写的时候⼏乎不产⽣延迟开销,因为是宏观同时写⼊。
读改写(Read-Modify Write):如果要写⼊的磁盘数⽬不⾜阵列磁盘数⽬的⼀半,可采取读改写⽅式。读改写过程是:先从需要修改
的 Segment 上读取旧的数据,再从条带上读取旧的奇偶校验值;根据旧数据、旧校验值和需要修改的 Segment上的新数据计算出这个条带上的新的校验值;最后写⼊新的数据和新的奇偶校验值。这个过程中包含读取、修改和写⼊的⼀个循环周期,因此称为读改写。读改写计算新校验值的公式为:新数据的校验数据=(⽼数据EOR新数据)EOR⽼校验数据。如果待更新的Segment已经超过了条带中总Segment数量的⼀半,则此时不适合⽤读改写,因为读改写需要读出这些 Segment 中的数据和校验数据。⽽如果采⽤重构写,只需要读取剩余不准备更新数据的 Segment 中的数据即可,⽽后者数量⽐前者要少。所以超过⼀半⽤重构写,不到⼀半⽤读改写。整条更新就⽤整条写。
写效率排列为整条写>重构写>读改写。

本文发布于:2023-05-12 09:30:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/597635.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   校验   需要   改写   计算   重构   条带
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图