一种面向RAID阵列的SSD设计优化方法
2014-08-03何晚辉
陈 博,肖 侬,刘 芳,欧 洋,何晚辉
(国防科学技术大学高性能计算国家重点实验室,湖南 长沙 410073)
1 引言
随着大数据时代的到来,目前NAND Flash已经不仅局限于嵌入式领域,基于NAND Flash的SSD(Solid State Disk)已经在大型数据中心得到广泛应用。越来越多的公司开始涉足SSD市场,不仅一些老牌磁盘厂商,例如希捷、西部数据,开始生产SSD,华为公司也宣布其第一款PCIe SSD ES3000正式上市。然而,随着NAND Flash单片容量的不断增大,SSD的容量也不断增加,源科公司的Kylin III MAX的单盘容量达到4.6 TB。
相比机械磁盘,基于NAND Flash的SSD具有诸多优势,例如低延迟、无噪声、抗震动等[1],但是SSD还没有替代机械磁盘,一个很大的原因是SSD的价格远高于机械磁盘。为了降低MYM/GB的价格,相继出现MLC和TLC。但是,相比SLC的105的擦写次数,MLC和TLC的擦写次数急剧下降,仅有104和103[2,3],并且数据的错误率也会增加[4]。
为了保证数据的可靠性,传统的方法是采用ECC校验,在数据写入Flash的每一页时,相应的校验信息写入页的Spare Area。但是,基于海明码的ECC校验仅能检测两位错,纠正一位错;而基于RS和BCH及LDPC的ECC校验能纠正多位错,但是硬件实现复杂,并且增加了数据访问的延迟[5]。
另外一种保证数据可靠性的方法是采用RAID技术。RAID技术可以用在SSD与SSD之间,SSD内部的Flash芯片与芯片之间,提供不同层次的可靠性。当前的一些PCIe SSD产品中已经使用RAID技术来保证数据的可靠性。例如,Violin Memory的闪存系统采用了ECC和独有的RAID技术保证数据的可靠性,在有Flash芯片出现故障时不会造成数据的丢失,华为的ES3000也采用了Dynamic RAID技术保证数据的可靠性。但是, Skyera公司指出,使用最为广泛的RAID5技术在用于SSD阵列时,会缩短SSD寿命。……
