上图是腾讯云官方回应云盘故障致用户数据丢失事件,指出该故障系物理硬盘固件版本bug导致的“静默错误”引起。那么什么是“静默错误”呢,为什么该错误能带来如此严重的后果?
一、什么是静默错误
静默错误在英文中被称为:Silent Data Corruption,我们知道硬盘最核心的使命是正确的存入数据、正确的读出数据,在出错时及时抛出异常告警。磁盘出现异常的情形可能包括硬件错误、固件 BUG 或者软件 BUG、供电问题、介质损坏等,常规的这些问题都能够正常被捕获抛出异常,而最可怕的事情是,数据处理都是正常的,直到你使用的时候才发现数据是错误的、损坏的。这就是静默错误。
有些类型的存储错误在一些存储系统中完全未报告和未检测到。 它们会导致向应用程序提供损坏的数据,而不会发出警告、记录、错误消息或任何类型的通知。 虽然问题经常被识别为静默读取失败,但根本原因可能是写入失败,因此我们将此类错误称为“静默数据损坏”。这些错误很难检测和诊断,更糟糕的是 它们实际上在没有扩展数据完整性检测功能的系统中相当普遍。
在某些情况下,当数据写入硬盘时,应该写入一个位置的数据实际上最终写入另一个位置。 因为某些故障(如所谓固件bug),磁盘不会将此识别为错误,并将返回成功代码。 结果,RAID系统未检测到“错误写入”,因为它仅在硬盘发出错误信号时才采取措施。此时,不仅发生了未检测到的错误,而且还存在数据丢失。
在下图中,数据块C本应该覆盖数据块A,却意外覆盖数据块B,因此数据块B丢失;数据块A保留旧的数据。
数据块A : 应该更新为C,未更新,保留了旧的、错误的数据;
数据块B : 被C覆盖,B数据丢失。
结果,RAID系统和HDD都未检测到此错误而不发出任何警告。 检索B或C的访问却导致返回不正确的数据。
二、静默错误发生的概率
那么“静默损坏”发生的概率有多少呢?文献提供了一组数据:
...一项针对NetApp数据库的150万个硬盘驱动器的为期32个月的学术研究发现,8.5%的SATA磁盘会产生静默损坏。 某些磁盘阵列运行会后台进程验证数据和RAID奇偶校验是否匹配,可以捕获这种类型的错误。 然而,该研究还发现,有13%的错误,后台验证过程未能捕获到。
那些未被发现的错误,就会成为企业的灾难。虽然我们不知道腾讯云所称的“静默错误”是否与此相关,但是静默错误的确值得大家去了解,并基于此优化企业的备份策略,将核心数据丢失的风险降到最低。
备份建议请参考:https://www.jianshu.com/p/5bc6f342eb86
参考文献:https://jtyjs.oss-cn-shanghai.aliyuncs.com/Whitepaper-Silent-Data-Corruption.pdf(点击可直接查看)
参考文章:https://mp.weixin.qq.com/s/ra8TP9kfsPPbY8A3Ayopjg