端到端数据保护浅析

作为最重要的数据保护方式之一,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始终秉持着严谨的态度,持续打磨数据保护技术,防患于未然,为用户数据的安全可靠提供更具信赖的技术保障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/157599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器安全怎么保障,主机安全软件提供一站式保护

服务器主机安全是指保护服务器主机免受未经授权的访问、破坏、窃取或滥用。 现在如今大部分公司、单位的相关数据都是存储在云端服务器上,这样即方便查询也方便保存。 可是一旦服务器主机受到威胁,损失将会不可估计。 以下是一些服务器主机安全的建议…

支付宝生僻字选择器

本文的数据来源于支付宝网页版本生僻字选择器。 let rareWords[{spell: "a",words: ["奡", "靉", "叆"]}, {spell: "b",words: ["仌", "昺", "竝", "霦", "犇", "愊…

MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)

目录 介绍 案例 通过SQLSTATE指定具体的状态码 通过SQLSTATE的代码简写方式 NOT FOUND 介绍 条件处理程序(Handler)可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为: DECLARE handler_action HANDLER FOR c…

Linux调度域与调度组

引入调度域的讨论可以参考这篇文章。这篇笔记重点分析了内核调度域相关的数据结构以及内核用于构建调度域的代码实现,以此来加深对调度域的理解。调度域是调度器进行负载均衡的基础。 调度域拓扑层级 整个系统的调度域组成一个层级结构,内核设计了stru…

上海亚商投顾:沪指冲高回落 短剧、地产股集体走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数早盘冲高,创业板指盘初涨超1%,午后则集体下行翻绿,北证50一度大涨…

MyBatis:关联查询

MyBatis 前言关联查询附懒加载对象为集合时的关联查询 前言 在 MyBatis:配置文件 文章中,最后介绍了可以使用 select 标签的 resultMap 属性实现关联查询,下面简单示例 关联查询 首先,先创建 association_role 和 association_…

Postgresql常用命令函数

1、string_agg()函数 1.1用法: string_agg(expression, delimiter),参数类型(text, text) or (bytea, bytea),返回类型和参数类型一致,第一个参数是字段名,第二个参数是样式,比如,或者#分隔。 1.2实战: SELECT * FR…

深入解析数据结构与算法之堆

文章目录 🥦引言:🥦什么是堆🥦大顶堆与小顶堆🧄大顶堆(Max Heap)🧄小顶堆(Min Heap) 🥦堆的表示🧄数组表示:🧄…

设计模式总结-笔记

一个目标:管理变化,提供复用! 两种手段:分解vs.抽象 八大原则: 依赖倒置原则(DIP) 开放封闭原则(OCP) 单一职责原则(SRP) Liskov替换原则&a…

C/C++内存管理(1):C/C++内存分布,C++内存管理方式

一、C/C内存分布 1.1 1.2 二、C内存管理方式 C可以通过操作符new和delete进行动态内存管理。 2.1 new和delete操作内置类型 int main() {int* p1 new int;// 注意区分p2和p3int* p2 new int(10);// 对*p2进行初始化 10int* p3 new int[10];// p3 指向一块40个字节的int类…

C#,数值计算——插值和外推,PolCoef的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// polynomial coefficients from polynomial values /// </summary> public class PolCoef { public PolCoef() { } /// <summary>…

【Linux】:共享内存

共享内存 一.原理二.创建共享内存1.shmget2.写一个共享内存代码 三.进行通信1.各种接口2.各接口使用代码3.一次简单的通信四.共享内存的特点 一.原理 直接原理 共享内存顾名思义就是共同使用的一块空间。 很明显操作系统需要对这块内存进行管理&#xff0c;那么就避免不了先描…

Python pip 镜像源设置指南

文章目录 Python pip 镜像源设置指南前言安装单个包使用PyPI镜像使用镜像升级 pip设为默认pip镜像结语 Python pip 镜像源设置指南 前言 平时在使用 pip 安装一些包的时候速度非常慢,本文介绍如何在 Python3 下设置 PyPI 设置镜像源,本文以给 Python3 设置清华 镜像源举例. …

2023.11.20使用flask做一个简单图片浏览器

2023.11.20使用flask做一个简单图片浏览器 功能&#xff1a; &#xff08;1&#xff09;输入指定路径&#xff0c;打开文件夹 &#xff08;2&#xff09;判断文件格式为图片 &#xff08;3&#xff09;在前端进行预览 &#xff08;4&#xff09;使用bootstrap进行简单美化 ma…

win11,引导项管理

1&#xff0c;打开cmd,输入msconfig 2,进入引导选项卡 3&#xff0c;删除不需要的引导项

【CSH 入门基础 9 -- 输出 csh 脚本中每一句命令】

文章目录 输出csh脚本中每一句命令 输出csh脚本中每一句命令 在 csh 或 tcsh 脚本中&#xff0c;如果你想要输出脚本中的每一句执行&#xff0c;你可以在脚本的开头使用 -v&#xff08;verbose&#xff09;选项。这个选项会使得 shell 在执行命令前先打印出来。 要在脚本中使…

蓝桥杯每日一题2023.11.21

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 思路&#xff1a; 1.去重排序将其进行预处理 2.用gcd得到最简比值 3.用gcd_sub分别计算分子、分母的指数最大公约数 #include<bits/stdc.h> using namespace std; const int N 110; typedef long long ll; ll…

前端性能优化之LightHouse

优质博文&#xff1a;IT-BLOG-CN 一、LightHouse环境搭建 LightHouse是一款由Google开发的开源工具&#xff0c;用于评估Web应用程序的性能和质量。可以将其看作是一个Chrome扩展程序运行&#xff0c;或从命令行运行。为LightHouse提供一个需要审查的网址&#xff0c;它将针对…

V100 GPU服务器安装CUDNN教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Go语言常用命令详解(三)

文章目录 前言常用命令go get示例参数说明 go install示例参数说明 go list示例 go mod示例参数说明 go work基本用法示例 go tool示例 go version示例 go vet示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命…