首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Solidigm:基于PI块减少静默数据损坏

Solidigm:基于PI块减少静默数据损坏

作者头像
数据存储前沿技术
发布2025-02-11 17:08:37
发布2025-02-11 17:08:37
4730
举报

问题意识

静默数据损坏 (Silent Data Corruption) 是什么?

  • • 数据被读取时没有错误,但数据不是上次写入的内容
  • • 频率低,但影响大

静默数据损坏代价高昂,简要回顾一下:

  • • SDC来源
  • • SDC检测需求
  • • 保护信息(PI)作为SDC缓解措施

SDC来源

静默数据损坏 (SDC) 的原因是什么?

  • • 数据错位错误
    • • 数据被写入错误的位置
  • • 数据内容错误
    • • 数据内容在静止或飞行过程中发生变化
  • • 丢失的 I/O 错误
    • • 写操作被标记为完成,但数据实际上没有被写入

可能发生在哪些地方?

  • • 软件和硬件,任何数据被操作、移动或存储的地方
    • • 存储堆栈、DMA 引擎、内存、交换机、NICs、DPUs、HBAs、HDDs、SSDs

可能发生在什么时候?

  • • 数据生命周期中的任何时间
    • • 正常操作条件、电源故障、数据重建/恢复、快照、分层、备份、协议转换、压缩、去重、加密

静默数据损坏 (SDC) 的原因、可能发生的地方和时间。它强调了 SDC 可能发生在数据生命周期的任何阶段,包括正常操作条件和各种数据处理过程中。

SDC检测

解决方案

  • • 确保数据在整个生命周期中的正确性
  • • “端到端”跨越数据中心
    • • 双保险,补充所有其他数据检查

实现

  • • 数据是否正确?
    • • CRC 或 Checksum 校验和
  • • 是正确的数据吗?
    • • 在空间上:携带 LBA 与数据进行比较,以与命令中的地址进行比较
    • • 在时间上:携带写入计数器与数据进行比较,以检测错位数据和丢失的写入
    • • 在应用中:携带标签以表示应用连接

图示静默数据损坏检测的解决方案和实现方法。解决方案包括确保数据在整个生命周期中的正确性,并在数据中心中实现“端到端”的检测。实现方法包括使用 CRC 或校验和来检查数据的正确性,以及在空间、时间和应用中使用不同的技术来确保数据的正确性。

CRC(Cyclic Redundancy Check,循环冗余校验)

作用:

  • • 检测数据错误:CRC 通过计算一个固定长度的校验码来检测数据传输中的错误。
  • • 可靠性高:CRC 可以检测出多种类型的错误,包括单比特错误、双比特错误、突发错误等。
  • • 广泛应用:CRC 广泛应用于网络通信、磁盘存储、文件传输等领域。

计算方法:

  • • CRC 使用一个生成多项式(如 CRC-32)来生成一个固定长度的校验码。
  • • 发送方将数据加上生成的校验码发送给接收方。
  • • 接收方接收到数据后重新计算校验码并与接收到的校验码进行比较。
  • • 如果两者相同,则认为数据正确;否则认为数据有错误。
Checksum(校验和)

作用:

  • • 简单快速:Checksum 通过简单的加法运算来计算一个校验值,用于检测数据传输中的错误。
  • • 易于实现:Checksum 计算方法简单,易于实现。
  • • 常见用途:Checksum 常用于简单的数据传输校验。

计算方法:

  • • Checksum 通常是对数据进行逐字节加总,然后取模(如取 16 位模)得到一个校验值。
  • • 发送方将数据加上校验值发送给接收方。
  • • 接收方接收到数据后重新计算校验值并与接收到的校验值进行比较。
  • • 如果两者相同,则认为数据正确;否则认为数据有错误。
两者的区别
  1. 1. 检测能力:
    • • CRC:检测能力更强,可以检测多种类型的错误。
    • • Checksum:检测能力较弱,容易漏检某些类型的错误(如某些突发错误)。
  2. 2. 计算复杂度:
    • • CRC:计算相对复杂,需要使用生成多项式。
    • • Checksum:计算简单,只需简单的加法运算。
  3. 3. 应用场景:
    • • CRC:广泛应用于需要高可靠性的场景,如网络通信、文件传输等。
    • • Checksum:适用于简单、快速的校验场景,如简单的数据传输。

保护信息(Protection Information)

在数据传输阶段引入PI块,包含:Guard(保护)、App Tag(应用标签)、Stg and Ref Tag(存储和引用标签)。

其中:

Guard Tag(保护标签):

  • • CRC(或在某些应用中使用校验和)

Storage and Reference Tag(存储和引用标签):

  • • 高位比特由存储设备使用
  • • 低位比特包含LBA

Application Tag(应用标签):

  • • 主机应用程序使用的位向量

为解决"静默数据损坏"技术难题,提出基于PI块,旨在提高数据存储系统的可靠性和完整性。主要特点包括:

  1. 1. 数据保护机制:通过在用户数据后附加保护信息(PI),实现全面的数据检查。
  2. 2. 保护信息结构:包括Guard Tag(用于CRC校验)、Storage and Reference Tag(用于存储设备管理和LBA标识)以及Application Tag(供主机应用程序使用)。
  3. 3. 灵活的操作:支持插入、转发和移除操作,并使用控制位和掩码来选择特定的检查和操作。
  4. 4. 广泛兼容性:得到了包括Intel、Linux系统、各种网络和存储硬件在内的广泛行业支持。
  5. 5. 标准化:已在T10和NVMe标准中得到采纳。

PI数据块通常在哪个处理过程增加?

PI块的添加时机:PI块通常在数据写入过程中添加。具体来说,这个过程发生在以下几个阶段: a. 主机写入:当主机应用程序准备写入数据时,可以在数据生成阶段就添加PI块。 b. 存储控制器:在数据传输到存储设备之前,存储控制器也可能会添加或修改PI块。 c. 存储设备内部:某些高级存储设备可能在接收到数据后,在内部添加PI块。 实际上,PI块的添加通常发生在数据链路的最上游,以确保端到端的数据保护。

增加PI块是否导致数据包有效空间减小,进而影响传输效率?

添加PI块会增加数据包的总大小,从而减少用于实际用户数据的有效空间。然而,这种影响在现代存储系统中被认为是可接受的,原因如下: a. 保护价值大于开销:PI块提供的数据完整性保护远远超过了它所占用的额外空间带来的影响。 b. 优化的硬件支持:现代存储硬件(如SSD控制器、HBA等)通常内置了处理PI的硬件加速,minimizing性能影响。 c. 规范化的实现:T10和NVMe等标准已经将PI纳入规范,存储设备和系统都针对包含PI的数据结构进行了优化。 d. 可配置性:许多系统允许根据需求启用或禁用PI功能,为性能和保护之间提供平衡选择。 e. 压缩和重复数据删除:现代存储系统普遍采用这些技术,可以在一定程度上抵消PI带来的空间开销。

总结

  1. 1. 静默数据损坏(SDC)是指数据读取时没有错误,但数据不是最后写入的数据。
  2. 2. SDC的原因包括数据放置错误、数据内容错误和丢失I/O错误。
  3. 3. SDC检测需要通过保护信息来防止数据损坏,并且可以在任何时间进行检测。
  4. 4. 保护信息可以添加到用户数据中,并在所有地方进行检查,以确保数据正确性。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王知鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题意识
    • SDC来源
    • SDC检测
    • 保护信息(Protection Information)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档