加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0518zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

静默错误:Oracle数据库是如何应对和处理的 ?

发布时间:2018-08-25 22:42:23 所属栏目:站长百科 来源:盖国强
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 这两天,关于腾讯云『因为静默错误,把创业公司的数据彻底搞丢了』的事件已经传遍了整个互联网,引发了广泛的热议和讨论。 终极故障回放 腾讯云已经于8月7日公布了最近这

在 Google 上,能够找到一些与『静默错误』相关的文献,由于这里不能链接,我统一放在下载中,大家可以自行下载学习:

  • Carnegie Mellon University – Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you? (2007)
  • CERN – Data integrity study (2007)
  • University of Wisconsin-Madison & Network Appliance – An Analysis of Data Corruption in the Storage Stack(2008)
  • Google – Failure Trends in a Large Disk Drive Population (2007)

经过很多研究表明,『静默错误』真实存在,并且不仅仅是磁盘驱动器的原因,在某些情况下,电源电缆、HBA卡、有BUG的驱动程序或微码也会导致静默损坏。

在 Oracle 官网上有一篇 2013 年的文章:How to Prevent Silent Data Corruption,这篇文章的两位作者一个是 Oracle Enterprise Linux 的内核开发者,另外一位来自 Emulex - 光纤卡厂商。

文章这样描述静默损坏:

静默损坏是在没有警告的情况下发生,可以定义为由于组件故障或无意的管理操作而导致的非恶意数据丢失。读取或写入无效数据时并不提示I/O问题,最终导致数据损坏。 这种类型的损坏是迄今为止最具灾难性的,并且没有有效的方法来检测。

通常情况下,保证数据一致性的 ECC 和 CRC 技术可用于大多数服务器,存储阵列和HBA。 但是这些检查仅在单个组件内临时保护数据,无法确保写入的数据在从应用程序传输到HBA,交换机,存储阵列和物理磁盘驱动器的数据路径中不会损坏。 发生数据损坏时,大多数应用程序都不知道存储在磁盘上的数据不是要存储的数据。

在过去几年中,EMC,Emulex和Oracle共同合作推动并实施了T10 SBC标准的附件信息保护功能,该功能可以在数据通过数据路径时对数据进行验证,以确保数据阻止静默损坏的发生。

最终目标是通过创建完整性元数据(也称为保护信息,与数据同时创建),然后在整个数据路径中验证元数据,并将错误回馈给应用程序进行修复,从而提供针对从应用程序到磁盘的静默数据损坏的保护。下图就是这个链路的保护过程:

静默错误:Oracle数据库是如何应对和处理的 ?

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

第一:Oracle自动存储管理库在写入内存时为每个512字节扇区添加保护信息。

第二:保护信息附加到 I / O请求,并通过Oracle Linux操作系统内核中的层传递给Emulex驱动程序。

第三:Emulex LightPulse Lpe16000B光纤通道HBA从内存缓冲区收集信息,验证数据完整性,合并数据和保护信息,然后根据T10 PI模型发送520字节扇区。

第四:EMC VMAX阵列固件验证保护信息并将数据写入磁盘。

第五:磁盘驱动器固件在将数据提交到物理介质之前验证保护信息。

读取数据时,步骤反向完成。

在2013年这篇文章提到,在基于 OEL 和 Emulex 的配置下,增强可以被启用以防范数据损失:

静默错误:Oracle数据库是如何应对和处理的 ?

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!