What You See Is What You Get Element

如何防止静默数据损坏

作者:Martin Petersen 和 Sonny Singh,《Emulex 和 Oracle 最佳实践》

本文介绍 Emulex 和 Oracle 基于 Linux 的数据完整性解决方案,可以防止静默数据损坏。


2013 年 2 月发布

数据丢失和数据损坏可能是灾难性的,但一种新的基于标准的端到端数据完整性解决方案(EMC、Emulex 和 Oralce 共同努力的结果)可通过支持 T10 保护信息 (T10 P1) 标准来减少静默数据损坏的发生。T10 PI 标准针对端到端的高级数据完整性。本文介绍静默数据损坏的危险以及如何实现数据完整性解决方案。

文章、软件下载、演示以及面向 Oracle 系统管理员的其他资源。可在 Oracle Sysadmin Facebook 页面聆听和讨论。

什么是静默数据损坏?

数据损坏经常发生在写入磁盘驱动器的时候。磁盘驱动器损坏有两种基本类型:

  • 第一种是潜在扇区错误,通常由物理磁盘驱动器故障导致。例如,磁盘阵列报告的文件系统读取错误。这种类型的损坏通常由 I/O 路径中的纠错码 (ECC) 或循环冗余校验 (CRC) 检测到,常常会自动纠正。
  • 第二种是静默数据损坏,可在没有警告的情况下发生,可以定义为组件故障或管理操作疏忽所导致的非恶意数据丢失。静默数据损坏发生在读取或写入无效数据时,不会导致 I/O 操作失败。这种类型的损坏是最具灾难性的,如果没有端到端的数据完整性检查,是没有有效的方法来检测它的。

使用虚拟化服务器和多核处理器,会增大故障存储单元导致错误的可能。如果在应用程序或数据中心工作人员不知情的情况下发生这样的错误,就称为静默数据损坏。尽管静默数据损坏相对比较少见,但它可能长时间不被发现,从而导致代价高昂的关键业务功能无法使用的损失。

导致静默数据损坏的常见元凶包括:

  • 操作系统,包括核心操作系统和设备驱动程序
  • 存储硬件和固件
  • 管理错误

什么是数据完整性保护?

数据完整性保护的概念并不新鲜。ECC 和 CRC 在大多数(如果不是所有)服务器、存储阵列、光纤通道主机总线适配器 (HBA) 上都是可用的。但是这些检查只能临时保护单个组件内的数据。当您打算写入的数据沿着数据路径从服务器中运行的应用程序传递到 HBA、交换机、存储阵列,然后到磁盘驱动器的时候,它们并不能保证这些数据不出错。当数据损坏发生时,大多数应用程序并没有意识到磁盘上存储的数据并不是当初打算存储的。

在过去几年里,EMC、Emulex 和 Oracle 共同推动和实现了将保护信息添加到 T10 SBC 标准中这一举措,从而使数据沿着数据路径移动时得到验证,这就确保了不会发生静默数据损坏。

该解决方案如何提供端到端数据完整性?

通过创建与数据创建一致的完整性元数据(也称作保护信息),然后在整个数据路径上验证元数据,并向应用程序指出错误以便加以纠正,最终目的是防止从应用程序到磁盘的过程中发生静默数据损坏,如图 1 所示。

图1 — 提供端到端数据完整性

图 1

以下步骤发生在写入数据时:

  • 第一步:Oracle 自动存储管理库在写入内存时为每个 512 字节扇区添加保护信息。
  • 第二步:保护信息附加到 I/O 请求,在 Oracle Linux 操作系统内核中层层传递,直到 Emulex 驱动程序。
  • 第三步:Emulex LightPulse Lpe16000B 光纤通道 HBA 根据 T10 PI 模型从内存缓冲区收集信息,验证数据完整性,合并数据和保护信息,然后发出 520 字节扇区。
  • 第四步:EMC VMAX 阵列固件验证保护信息并将数据写入磁盘。
  • 第五步也是最后一步:磁盘驱动器固件验证保护信息,然后将数据提交到物理介质。

读取数据时则反过来执行以上步骤。

部署要求和优点

实施此解决方案的关键是确保使用正确的软件版本和硬件设备,要求支持数据完整性增强并经过全面测试。

当每个组件满足表 1 所列最低版本要求时,支持端到端数据完整性。

表 1
应用程序/操作系统层
应用程序 任何 Oracle Database 应用程序
数据库 Oracle Database 11g,包括 Oracle 自动存储管理
操作系统 Oracle Linux 5.x 或 6.x,包含 Unbreakable Enterprise Kernel 版本 2.6.39-200.24.1 或更高版本;Oracle ASMLib 2.0.8 或更高版本
存储层
HBA 模型(驱动程序/固件) Emulex LPe12000-E 或 LPe12002-E,包含固件 2.01a10 或更高版本及驱动程序 8.3.5.68.6p 或更高版本

Emulex LightPulse LPe16000 或 LPe16000B,包含固件 1.1.21 或更高版本及驱动程序 8.3.5.68.6p 或更高版本

:还支持等效的 OEM HBA (-E) 模型。
阵列 EMC Symmetrix VMAX 系列,包含 Enginuity 5876.82.57

Emulex LightPulse LPe16000B 16G FC HBA 支持保护信息分流,可提高 30% 的整体性能。该数据完整性解决方案让您能够保护数据和资源,同时最大限度地达到服务水平协议的要求。最新的 Emulex LightPulse LPe16000B 16G FC HBA 通过 vEngine CPU 分流技术以全线速性能提供业界最高水平的数据完整性,没有系统开销。此外,Emulex 的 BlockGuard 数据完整性特性还可使那些使用 Oralce 产品的存储区域网络 (SAN) 部署运行得更快更好。

该数据完整性解决方案通过乐 EMC E-Lab 认证,这有助于确保 Oracle 体系 — 从应用程序到企业存储阵列 — 所有 I/O 操作的全面数据完整性。EMC 是第一个加入 Emulex 和 Oracle 实施此端到端数据完整性解决方案的企业存储阵列供应商。

配置要求

该数据完整性解决方案体现了真正的无缝架构。对可配置性没有额外的要求。如果相关的存储、HBA、固件、驱动程序、Oracle 自动存储管理以及 Oracle ASMLib 组件都已到位,将自动启用数据保护。这意味着您可以进行日常系统管理任务,而不必担心繁琐的参数调优。

可以使用 oracleasm-discover 命令(该命令会显示与每个 Oracle 自动存储管理磁盘有关的数据完整性配置文件)验证数据保护是否启用,如下例所示。此命令无需参数,只是打印发现的设备列表。

# oracleasm-discover
Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
[ASM Library - Generic Linux, version 2.0.8 (KABI_V2)] Discovered 
disk: ORCL:P00 [20971520 blocks (10737418240 bytes), maxio 512, integrity 
DIX1-512/512-IP] Discovered disk: ORCL:P01 [20971520 blocks (10737418240 bytes), 
maxio 512, integrity DIX1-512/512-IP] [...]

异常处理

T10 PI 可防止几种常见的静默数据损坏情形。HBA、存储设备和操作系统可采取步骤确保不会写入损坏的数据。

如果遇到数据完整性错误,Oracle ASMLib 将尝试重试 I/O 命令。数据完整性错误消息和重试消息记录在 Oracle 自动存储管理跟踪日志中。

总结

通过 Emulex、EMC 和 Oracle 的共同努力和多年的开发与合作,Oracle 基于 Linux 的端到端数据完整性解决方案得以实现。

Oracle 自动存储管理生成的数据保护信息通过 Oracle Linux 操作系统进行验证,然后传递到 Emulex HBA 和 EMC VMAX 阵列,从而实现贯穿整个 I/O 体系的全程保护。

另请参见

关于作者

Martin Petersen 自 20 世纪 90 年代初起就开始涉足 Linux 内核开发。他任职于 Oracle Linux 工程组,专注于未来 I/O 及存储技术。

Sonny Singh 任职 Emulex 营销组已三年。他负责通过 Oracle 销售的所有 Emulex 解决方案的入站管理和联合市场营销,专注于联合品牌解决方案的品牌建设、上市策略和开发。

修订版 1.0,2013 年 2 月 15 日

关注我们:
博客 | Facebook | Twitter | YouTube