吴洪成 潘琪
摘 要: 研究基于NAND-FLASH的固态存储模块的开发和应用,具有重要的现实意义。文章提出了一种高可靠固态存储模块实现及其在计算机系统中应用的方法,即采用数据纠错、损耗均衡、过量配置、坏块管理、RAID等技术实现计算机系统的高可靠性存储模块,并考虑非正常断电保护以及数据加密、数据销毁等功能,以满足高可靠、深层次的应用需求。
关键词: 高可靠; 固态存储; NAND-FLASH; 计算机系统
中图分类号:TP399 文献标志码:A 文章编号:1006-8228(2015)09-14-03
Realization and application of high-reliable solid-state storage module
Wu Hongcheng1, Pan Qi2
(1. No.52 Research Institute of CETC, Hangzhou, Zhejiang 310012, China; 2. The air force's military representative office in Zhejiang)
Abstract: Research on the development and application of solid-state storage module based on NAND-FLASH has important practical significance. This paper proposes the realization of a high-reliable solid-state storage module and its application in the computer system, namely the data correction, wear leveling, excess allocation, bad block management, raid, and other technology is used to achieve high reliability storage module for computer system, and taking into account the non-normal power-off protection and data encryption, data destruction , and other functions, to meet the demands of high reliable and in-depth applications.
Key words: high-reliable; solid-state storage; NAND-FLASH; computer system
0 引言
在過去30多年里,硬盘驱动器在计算机系统存储介质中一直占据统治地位,然而除了存储容量有大幅度提升外,其读写速度没有明显的提升。为应对当前计算机系统对存储介质读写速率的需求,尤其是面对广泛的PC机应用市场,研究高可靠、低成本的固态存储模块具有重大的意义,可为计算机商用系统的应用带来数据处理上的革新。
本论文结合NAND-FLASH存储介质的使用特点,提出了一种高可靠固态存储模块的开发及在计算机系统的应用方法,即采用数据纠错、损耗均衡、过量配置、坏块管理、RAID等技术实现计算机系统的高可靠性存储模块,并考虑了非正常断电保护以及数据加密、数据销毁等满足高可靠及深层次的应用需求。
1 固态存储模块的总体实现
面对当前计算机系统的应用需求,本文提出了NAND-
FLASH芯片的高可靠固态存储[1]模块的实现原理,如图1所示。
固态存储模块主要由接口电路、大规模可编程门阵列(FPGA)、数据缓存、嵌入式处理器及其外围电路、协处理器以及存储介质组等几大部分组成。嵌入式处理器为存储模块控制中心,实现对外命令通信、工作流程控制、数据读写、目录管理等各种控制功能。FPGA负责数据流的控制,主要包括外部数据接口逻辑、DDR3数据缓存控制逻辑、内部通信逻辑以及FLASH控制逻辑等。数据缓存主要实现高速、突发用户接口数据流与后端FLASH存储介质组间歇性数据流的速率匹配,通常采用多片高速、大容量数据缓存芯片并行工作[2]实现。存储介质组由多片高密度的NAND-FLASH芯片组成,为实现高速数据读写,采用多通道并行工作[3]的方式实现,并且每通道再采用多片FLASH芯片并行工作。对外接口实现通用(如SATA3.0等)或者专用接口(自定义接口,适用个性化专用需求)。
[外围电路][处理器\&] [内部接口][大规模
可编程门陈列\&] [协处理器][接口
电路] [命令接口] [接口
电路] [数据接口] [数据缓存] [存储
介质组]
图1 高可靠固态存储模块的总体实现原理
2 高可靠存储模块的实现技术及应用方式
结合计算机系统的应用需求,实现固态存储模块数据可靠读写及存储,需要针对NAND-FLASH的主要控制管理技术有数据纠错、损耗均衡、过量配置、坏块管理以及RAID。为提高数据存储的可靠性,在计算机系统传输路径中增加数据校验与纠错技术,以及非正常断电保护技术。考虑到当前数据安全方面存在失窃、遗失、被非授权人员使用的情况,为确保存储模块内数据不被他人获取、利用,最大限度的降低损失,本文提出了相应的数据加密技术、数据销毁技术及其应用方法。
2.1 NAND-FLASH的高可靠应用
NAND-FLASH内部采用非线性宏单元模式,以页为单位读写数据,以块为单位擦除数据,写入前必须擦除数据。NAND-FLASH芯片具有存储容量大、写入速度快等优点,同时也存在位翻转、使用寿命有限、坏块等不足。FLASH控制逻辑通常在FPGA中实现,在FLASH基本控制逻辑的基础上,需通过数据纠错、损耗均衡、过量配置、坏块管理等技术实现对FLASH存储介质的可靠读写,通过RAID技术保护数据完整性。
⑴ 数据纠错
由于NAND-FLASH本身特点,在数据写入、读取过程中数据会有一定概率发生位翻转,从而影响数据的正确性。因此,在使用NAND-FLASH时,需增加纠错算法,采用BCH码(由Bose、Chaudhuri、Hocquenghem共同开发),用于纠正读写过程中产生的位错误,恢复出正确的数据。BCH编码器采用32位并行系数的并行编码技术,有效提高编码模块的编码带宽,单个BCH编码器最高可以达到400MBps的编码速率。为满足高速、高可靠性存储模块需求,采用多个存储控制器[4](集成BCH编码器)并行运行的方式实现读写速率的提升。
⑵ 损耗均衡
NAND-FLASH每个存储单元使用寿命有限,如MLC的厂家标称写入次数小于3000次。针对该特点,在使用NAND-FLASH进行数据存储时,需要对NAND-FLASH的擦除和写入操作进行合理的管理和控制,采用合理、高效的均衡技术,如动态损耗平衡、静态损耗平衡方法,均匀地对NAND-FLASH存储空间进行擦写,避免部分存储空间的使用寿命过早被耗盡,从而在其固有寿命范围内,提高存储模块的整体使用寿命。
⑶ 过量配置
对于提升可靠性与耐用度,在使用上注意损耗平衡的同时,需要空间过量配置。通过损耗均衡方式,擦除量所产生的平均擦写周期变少,但仍会出现了存储块失效的情况,此时需将该些存储块标记为不可用,并从预留的备用区域中重新分配一块存储块到相应的逻辑地址,从而实现空间的过量配置。过量配置不是免费的,需根据存储模块应用场景要求的不同,合理的选择和设计过量配置的空间。一般而言,可靠性越高的存储模块会分配越多的过量配置空间,以牺牲更多的可用空间来换取更长的使用寿命。
⑷ 坏块管理[4]
NAND-FLASH在出厂时存在一定数量的物理坏块,在反复擦写过程中也会出现新的坏块,该些坏块无法保证数据存储的可靠性,应禁止对其进行操作。因此,对NAND-FLASH存储芯片数据操作前,预先读取存储在FLASH中的出厂时坏块信息列表,并实时监测后续FLASH块使用状态,及时监测使用过程中新出现的物理坏块,将发现的无法可靠存储数据的物理块加入坏块列表,使用时禁止使用这些坏块地址。
⑸ RAID技术
考虑到NAND-FLASH芯片的数据块可能出现工作异常导致数据失效的情况,对固态存储模块采用RAID1~RAID7算法[5],并支持算法配置,即模块中数据的冗余保护,又可考虑相应响应场合的经济性。提高数据存储可靠性为适合数据存储可靠性要求较高的金融、医疗、军事等应用,固态存储模块将采用RAID5的方式实现,其中任何一个FLASH芯片工作异常时均可以通过存储在其余通道中的数据恢复该芯片的数据,保证数据可靠存储。
2.2 模块整体的高可靠应用
为提高固态存储模块在计算机系统应用的可靠性,本文采用传输路径数据校验与纠错技术,对存储模块数据读写的全链路进行检测和控制。
存储时数据流从用户接口输入后,经过接口模块、FPGA、SDRAM、FLASH芯片等,其中SDRAM芯片经过两次,分别为写入与读取,并且多通道高速串行通信总线接口每通道的通信速率为Gbps量级。在如此复杂的数据传输路径中,对数据传输路径中可能出现的数据误码检查与纠正,保证数据可靠传输,主要采用DDR3 SDRAM数据的ECC(Error Correcting Code)处理和多级数据流的CRC(Cyclic Redundancy Check)检验(高速串行通信总线接口、FPGA内部整个数据传输及FLASH接口数据传输)。
2.3 高可靠性场合应用
为适应计算机系统特定场合的高可靠性应用需求,固态存储模块采用了数据加密技术、数据销毁技术,以保证存储模块在失窃、遗失、被非授权人员使用时的数据存储可靠性。
2.3.1 非正常断电保护
计算机系统在使用中必须考虑非正常断电对系统的冲击及影响,尤其是考虑其系统内各存储单元的影响,以保证系统继续运行及后续恢复。目前市场上的一般商用固态盘,在多次非正常断电情况下,会出现数据错、元数据损坏等错误,甚至出现不能挂载及存储空间不能识别的严重错误,这对于高可靠性计算机系统而言是致命的。因此,在高可靠性固态存储模块实现上,应充分考虑对非正常断电现象的发生,采取有效的保护措施或设计方法来保证存储模块在非正常断电情况下的数据完整性。具体措施包括:
⑴ 定时更新目录信息,将断电前数据存储信息的损失降到最低;
⑵ 在制定空间保留多份目录备份信息;
⑶ 合理设计上电数据恢复,对非正常断电前写入的数据及目录进行数据完整性校验,最大限度恢复数据及目录等信息;
⑷ 选配欠压检测电路,采用储能器件对存储模块中核心电路进行保护,如触发非正常断电事件、记录非正常断电现象、保护敏感的元数据信息等。
2.3.2 数据加密
数据加密是对输入固态存储模块的数据进行加密后再写入存储介质的一种数据保护措施,是保证数据对敌安全的有效手段之一。根据固态存储模块的工作原理,AES(Advanced Encryption Standard)配合RSA(由Rivest,Shamir和Adleman共同开发)为固态存储模块数据加密的首选加密方案,加密引擎采用FPGA实现。加密后的数据以密文的方式存放在NAND-
FLASH存储介质中,加/解密密钥与加密引擎分离,存储在独立的可信介质中,只有合法用户掌控密钥,安全有效地实现目标数据的加/解密操作,以确保即使存储模块被敌方获取,也无法直接获取有效数据。
2.3.3 数据销毁
应对当前数据私密性不断增加的需求,当存储模块被非授权人员获取时,通过各种破解手段,被加密过的数据迟早仍会被破解,因此固态存储模块中增加数据销毁功能。对于本方案中采用普通NAND-FLASH作为存储介质的数据存储模块,可以采取以下数据销毁[6]措施:
⑴ 快速销毁密钥,失去密钥后存储模块中存储的密文不能被直接读取使用;
⑵ 快速销毁目录,销毁后存储模块中的数据很难被重新组织、恢复成可用的数据;
⑶ 物理销毁,使用高压、大电流电路直接烧坏芯片和电路板等;
⑷ 下发擦除、覆盖写入命令,对已存储数据进行高速擦除,擦除后再写入指定数据进行覆盖。
密钥销毁、目录销毁可以瞬间完成,但销毁不彻底,数据仍然存在于存储介质上;物理销毁也是瞬间完成,具有破坏性,数据被彻底销毁;数据擦除和覆盖写入销毁的速率相对较慢,无破坏性,数据也能被彻底销毁。因此实际应用中,本固态存储模块可根据计算机系统的具体应用场景进行选配,满足各种应用需求,确保数据存储安全可靠。
3 结束语
目前高可靠固态存储模块以VPX 6U的形式体现,模块支持SATA3.0接口及专用接口(如光纤、高速总线等),提供6TB的存储空间,单向读写速率可达最大24Gbps,支持raid方式、非正常断电保护、数据加密机数据销毁等功能的配置,具备数据高可靠性存储能力,能够满足计算机系统高可靠性应用场合,尤其是恶劣环境条件下的数据高可靠存储的应用需求。
参考文献:
[1] 朱知博.基于NAND-FLASH的高速大容量存储系统设计[J].现代电子技术,2011.34(8):170
[2] 张峰.基于Nandflash阵列的高速存储技术[J].电讯技术,2013.53(1):68-71
[3] 胡洋,冯丹.高性能固态盘的多级并行性及算法研究[D].华中科技大学博士学位论文,2012.5.
[4] 汤瑞.一种基于NAND Flash固态硬盘的坏块管理方法[J].电子科技,2014.27(8):40
[5] 韩煜,刘政林.一种高吞吐率、低成本的固态硬盘数据安全方案[J].信息与电子工程,2011.9(5):638
[6] 唐迪,魏英.存储介质数据销毁技术研究[J].信息安全与技术,2012.1:8