在我前一篇《删除码技术将代替RAID》的文章中我曾讲到,在磁盘硬件发展速度逐渐超越校验码方式所能提供的有效保护水平的前提下,前向错误纠正编码将是代替校验码RAID(独立磁盘冗余阵列)的主要竞争技术。不过这里还有一个问题:里德-所罗门(Reed-Solomon)码以及相关的编码技术是否一定是未来代替RAID系统中校验码的技术。
在这个问题上,我同存储领域的一些行家有一些有趣的对话。我的朋友Stephen Foskett认为高水平删除码已经可以适用于主存储。虽然我认为先进删除码甚至比备份和归档等二级存储中的双校验码还好,不过我对于先进删除码是否可以适用于那些对延迟性敏感的应用程序(比如在线交处理数据库)持保留意见。
我最担心的是先进删除码在处理小型写入的时候所带来的开销以及所导致的延迟性。在任何一个RAID系统上,系统写入行为依赖于数据写入是否大于或小于整个RAID集的条带。对于较大的写入请求–比如备份、视频或其他多媒体应用程序–在X个驱动器上写入大数据块会产生X+N次磁盘I/O,而N这个数字等于新增的ECC(错误检查纠正)块数量。因此,对于RAID 5来说,就是X+1,对于RAID 6来说,就是N+2,而对于里德-所罗门框架来说,比如CleverSafe的10:16方案,就是10+16。
如果被写入的数据量小于X乘以条带大小(通常是4-128KB),那么事情就更复杂了。要写入一个4K的数据库页面,RAID 5系统必须读取X个块,重新计算校验码,然后写入X+1个块。在10:16系统上,系统必须读取10个块,然后写入16个块。此外,存储系统上的处理器还有许多计算工作要做,这个流程会给每个小型写入增加额外的延迟性。
解决这个问题的方法就是将删除码流程前端化并利用”在位写入(write-in-place)”和”自由位置写入(write-in-free-space)”文件系统,比如WAFL(任意位置写入文件布局)、ZFS或Nimble Storage的CASL(高速缓存加速顺序性布局)。这些文件系统会使用日志来最大化全条带大小写入的数量。这些文件系统已经将逻辑数据位置从物理位置中分离出来,因此可以将小型写入合并到一个日志上,而这个日志可以存储在闪存上。这些小型写入可以在合并到全条带大小后写入磁盘。由于这些系统经常在写入快照技术上使用重定位,因此它们也希望留下旧数据以用于快照。
然后是解码的开销。传统的RAID系统同时存储原始数据和新增的校验码数据。在正常的情况下,越过校验码数据,从数据所在的磁盘读取原始数据,系统可以满足读取请求。RAID控制器在读取上的计算开销是很小的。
在使用先进删除码的情况下,数据和前向错误纠正信息被编码到每个数据块内。要恢复数据,系统必须先获取编码系统所要求的最小数量以上的数据块,然后将这些数据块解码以恢复数据。一个CleverSafe系统的要求是,每存储16个数据块,起码需要有10个块才能进行解码并满足读取请求。
使用先进删除码的系统对数据块有最小数据量要求,然后再将数据块予以解码。这样做会大幅增加系统的计算负荷。这里需要指出的是它会增加小型写入的开销,因为还没有被覆盖的数据需要被解码,然后结合完新数据后再重新编码。
因此,我们已经讨论过的所有使用高水平删除码的系统都采用向外扩展架构。给每4到18个磁盘驱动器配置一个Xeon处理器可以让这些使用复杂ECC方式的系统有足够的能力处理数据的编码和解码。传统中端阵列中每800多个磁盘驱动器才有4个Xeon处理器,很难应付这样的计算开销。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国