作为最重要的数据保护方式之一,NVMe端到端数据保护被众多企业用户所看重,它可以有效降低静默错误的发生,保护范围涵盖数据自Host端生成直至写入SSD NAND当中,以及从SSD NAND读取直至返回Host的全部流程。它使得数据不论是在SSD内部,还是SSD外部,都能得到一致性保证。
根据OCP对企业级可靠性给出的建议,数据流经的每一个环节,如PCIe接口、控制器内部、RAM、Flash端口等,都应带有重叠的保护机制,以降低数据出错的风险。如主机PCIe接口到SSD控制器有LCRC和ECRC保护,数据在控制器会添加PI保护信息,RAM带有ECC保护,Flash接口有Scrambler随机化,对数据有CRC校验,LDPC软判决纠错等。
NVMe端到端数据保护的关键在于PI(Protection Information)的使用。完整的端到端数据保护支持由Host端生成PI,提供从Host直至SSD内部的完整端到端数据路径保护。在数据生成时,通过对数据添加PI,并将其作为元数据始终伴随用户数据一同传输和校验,借此降低静默错误的发生;同时,借助ECC(如BCH、LDPC)、Die间RAID5等手段,对检测到的错误数据加以修正,提升整个端到端数据传输过程中的可靠性。PI也可以通过SSD Controller生成,提供SSD盘内的数据保护,通常,我们将后者称为“数据路径保护”技术。
在最新发布的PBlaze6 6530系列企业级SSD中,我们再次对NVMe端到端数据保护能力进行了加强与完善,使其可以满足上述全部要求,达到企业用户更为复杂且严格的数据可靠性要求。
VSS技术为端到端数据保护提供基础
VSS(Viable Sector Size,可变Sector Size)是PBlaze6 6530系列企业级SSD提供的重要功能之一,它允许SSD在保存用户数据的同时,保存该数据的元数据,也就是对PI的存储。它是全闪存阵列实现NVMe端到端数据保护,降低静默错误发生的必要前提。
对PI而言,不论是通过DIF,还是通过DIX的方式实现和传输,其内容构成、大小都是相同的,均为16bit Guard Tag(用户数据的CRC校验信息),16bit Application Tag(应用指定tag)和32bit Reference Tag(防止数据被误用或乱序逻辑块传输),大小8字节;并且,不论是DIF还是DIX,其在SSD内部都是通过DIF的方式存储在NAND当中,即,PI与用户数据连续存放。这就要求SSD在提供标准的用户数据存储空间(如512字节或4096字节)之外,额外提供PI作为元数据的存储区域。PBlaze6 6530系列企业级SSD支持512、512+8、4096、4096+8以及4096+64字节,共5种不同的Sector Size大小,并同时支持DIF和DIX两种传输方式,可通过format命令在建立Namespace时加以指定,以开启NVMe端到端数据保护功能。
值得一提的是,PBlaze6 6530系列企业级SSD还最多支持32个Namespace命名空间,且每一个Namespace都可以设置为需要的格式,如Sector Size大小、指定DIF或DIX,以便为不同应用、业务需求有针对性的提供支持。
支持Type 1、2、3,数据保护更充分
存储问题解决了,接下来就是如何使用PI。根据不同的Reference Tag设置和PI检查方式,PI具体分为Type 0、Type 1、Type 2和Type 3。Type不同,PI所能起到的作用就存在差异。
可以看到,Type 1的要求更加严格。与部分企业级SSD不支持PI,或只支持Type 2或者Type 3相比,PBlaze6 6530系列企业级SSD可以提供对Type 1、2、3的全面支持。它在提供数据一致性和准确性方面的表现也会更加出色,并让企业在部署端到端数据保护功能时可以做到更加灵活。
开启VSS后端到端数据保护功能的验证
PBlaze6 6530系列企业级SSD的VSS功能和端到端数据保护是否被正确开启,可通过简单的读写测试加以验证,以便在SSD正式投入到业务当中后可放心使用。
- 通过format指令,可对LBA format、DIF或DIX、PI Type进行设置;
- 通过对write和read指令中的prinfo参数调整,设置PI的处理和校验方式,它包括PRACT和PRCHK两部分设定:PRACT,指定PI由Host生成,还是由Controller生成,并决定数据在读取时是否将PI返回至Host;PRCHK,指定PI的检查方式,检查guard、application或reference tag中的一个或多个。
在PRACT=0,写入操作中(由Host生成PI),用户也可写入错误的PI信息,模拟静默错误的发生(如修改guard、application或reference字段)。SSD在接收到用户数据和错误的PI之后,会根据PRCHK字段设定的验证方式,基于用户数据生成相应结果并进行比对,判断静默错误是否发生。如,Reference Tag出现错误,会提示如下:
NVMe status:
REFTAG_CHECK: The command was aborted due to an end-to-end reference tag check failure(0x6284)
日志记录为端到端数据保护功能维护提供保障
为进一步提高端到端数据保护功能的可靠性,PBlaze6 6530系列企业级SSD提供了多种功能来记录或提醒用户端到端数据保护功能在运行中所发生的错误。
在其新加入的PEL(Persistent Event Log,持久化日志)功能中,通过对事件05h NVM Subsystem Hardware Error中的Media and Data Integrity Status进行记录,可以对NVMe端到端数据保护出错,如Guard Tag/Application Tag/Reference Tag检错失败等情况进行记录。它可以直观的提醒用户目前端到端数据保护功能遇到的问题。
而在Error Log(标准的NVMe logpage, Logid为1)中,还会更加详细的记录端到端数据保护出错信息,如Reference Tag错误详情等,进一步为PBlaze6 6530系列的端到端数据保护功能提供维护保障。
端到端数据保护开启后不对寿命造成影响
在传统VSS实现的方法中,定义的元数据会侵占一定的ECC区域,使得NAND的纠错能力降低,UBER增加,进而影响NAND的寿命。PBlaze6 6530在设计之初就考虑到了这一点,通过硬件手段与软件层面的双重优化,使得无论用户定义元数据与否,都不会对ECC区域造成侵占,进而避免对寿命造成影响,保证无论哪种模式,都能发挥出SSD应有的性能。
数据的一致性对于企业用户至关重要,是企业级SSD的首要指标。在十余年的研发过程中,Memblaze始终秉持着严谨的态度,持续打磨数据保护技术,防患于未然,为用户数据的安全可靠提供更具信赖的技术保障。