查看原文
其他

运维专家分析“腾讯云与前沿数控的磁盘数据丢失事件”

布道 51CTO技术栈 2018-09-21

从技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,避免类似问题再次发生。



近日,腾讯云用户“前沿数控”平台一块操作系统云盘,因受所在物理硬盘固件版本 Bug 导致的静默错误(写入数据和读取出来的不一致)影响,文件系统元数据损坏。


8 月 6 日,腾讯云官微发布关于用户“前沿数控”数据完整性受损及腾讯云补偿措施的说明 。


腾讯云表示,监控到异常后,第一时间向用户告知故障状态,并立即组织文件系统专家并联合厂商技术专家尝试修复数据。虽经多方努力,最终仍有部分数据完整性校验失败。


经过分析,该硬盘静默错误是在极小概率下被触发,腾讯云随即对固件版本有 Bug 的硬盘全部进行下线处理,确保相关隐患全部排除。

作为运维专家,纯从技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,避免类似的问题再次发生。


硬盘固件详解和数据保护机制


固件又称 Firmware,就是“固化在硬件中的软件”,不太恰当但是好理解的就是:固件就是硬盘的操作系统。


固件 Firmware 是安装在硬盘的一个小记忆芯片上的,用于引导硬盘工作,担任着一个系统最基础最底层的工作。它是用汇编语言编写的引导命令、控制语句和执行语句,协调和控制硬盘各个内部部件之间相互作用。


对于固件的保存位置来说,不同品牌的硬盘各不相同。硬盘在工作时,用户可以访问的是零磁道以后的位置,因此固件区是无法访问的。


只有通过专业工具,将硬盘置于工厂状态下,才能实现对硬盘进行读写固件区信息、获取固件区模块和表格配置图、获取扇区分配表、进行 LBA (逻辑地址)与 CHS (物理地址)互换、进行低级格式化以及读、写硬盘的闪存芯片等操作。


固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其他软件组成,因此固件也就决定着硬件设备的功能及性能。


在硬盘中,固件负责驱动、控制、解码、传送、检测等工作,如管理数据的存放位置、记录已经损坏的缺陷扇区、避免使用过程中再次用到这些坏的缺陷扇区、记录硬盘在工作中的温度或出现的错误等。少了固件的硬盘就只是一堆机械和电子元件,不能正常运转,更不用说在其中读写数据了。


硬盘固件分为几个不同的工作区,不同品牌、不同型号的硬盘,其工作区各不相同,不同工作区的组成模块也不尽相同,有的硬盘只有 A、B 两个工作区,而有的硬盘有 A、B、C 三个工作区。


硬盘的固件信息以模块的形式表现出来,可能每个模块记录一个信息,也可能一个模块记录多个信息。这些模块的大小并不一致,有些模块只有几个字节,有些则达到几十个字节,它们并不是连续存放的,而是各有其固定的位置。硬盘固件的信息模块包括管理模块、配置和设置表、缺陷列表以及工作记录表等。


为了解决为了组合廉价的小磁盘来代替昂贵的大磁盘,同时在磁盘失效的时候能保护数据引入了 RAID 机制,RAID 可以充分发挥出多块磁盘的优势,可以提升磁盘速度,增大容量,提供容错等能力,此种 RAID 方案被服务器、存储厂家延用至今。


RAID 0 


又称为 Stripe 或 Striping (分条),即数据分条技术。RAID 0 可以把多块硬盘连成一个容量更大的硬盘群,从而提高磁盘的性能和吞吐量,要求至少两个磁盘。 


  • 优点 

读写性能高,可用容量为各个磁盘的容量和 。

  • 缺点 

无容错,无冗余,不适用于安全性要求高的类型。


RAID 1


又称为 Mirror 或 Mirroring (镜像)。RAID 1 把一个磁盘的数据镜像放在另一个磁盘上面,在不影响性能的情况下最大限度的保证系统的可靠性和可修复性。 


  • 优点 

很高的数据冗余能力,安全性高 

  • 缺点 

磁盘容量是总容量的一半,成本高


RAID 5


是 RAID 0 和 RAID 1 的折衷方案,但没有完全使用 RAID 1 镜像概念,而是使用了”奇偶校验信息”来作为数据恢复的方式,需要至少三个或更多的磁盘。 


  • 优点 

容错性,数据冗余能力,读性能高,安全性较高 

  • 缺点 

与 RAID 1 相比,由于采用的是奇偶校验方式,数据保障程度要差一些,而磁盘利用率要高一些。


RAID 10 


又称为镜像阵列条带。如 RAID 0 一样,数据跨磁盘抽取,也如 RAID 1一样,每个磁盘都有一个镜像磁盘。因此 RAID 10 又称为 RAID 0+1。 


  • 优点 

100% 数据冗余,安全性高 

  • 缺点 

价格相对较高,磁盘利用率 50%


硬盘固件Bug?


腾讯云的公告称因硬盘固件 Bug,导致文件系统元数据受损,数据无法恢复。相信一线的运维同学对公告也有同样的疑惑:

  • 硬盘是哪一品牌的硬盘?

  • 服务器或存储是否进行 RAID 进行数据保护?

  • 硬盘的固件的哪一版本有 Bug?升级到哪个版本能避免此问题?

  • 极小概率触发 Bug,触发的场景又是什么?

  • 存在问题硬盘下线策略是什么,会不会对使用的用户有二次影响?


建议把 Bug 的详情和升级方案进行公布,让更多的公司来避免相似的问题,相信也是一种贡献。


服务可用性


腾讯云承诺的"99.9999999% 的数据可靠性,搭载了云硬盘提供三副本存储策略,保障了数据在任何一副本出现故障时快速进行迁移和恢复。”按照正常思维逻辑,前沿数控的数据有三个副本,三个副本不可能在一台机器、同一块磁盘上。难道是宣传销售的一个噱头?


公有云不需要备份?


前沿数控显然存在失误,云服务的使用者要对数据负责,不是完全依赖于云服务提供商。出现数据丢失跟灾备措施有直接的关系,建议使用云架构方式的企业,所有的数据必须进行多云或者异地方式进行备份。本次腾讯云与前沿数控的磁盘数据丢失事件就是血的教训。


墨菲定律告诉我们,容易犯错误是人类与生俱来的弱点,不论科技多发达,事故都会发生。而且我们解决问题的手段越高明,面临的麻烦就越严重。所以,我们在事前应该是尽可能想得周到、全面一些。


本人从事运维工作十年有余,精通网站架构,对各家的云都有了解,熟知数据对创业公司的重要性。如有需要,愿提供技术支持


作者:刘晓明

简介:互联网公司运维技术负责人,拥有 10 年的互联网开发和运维经验。一直致力于运维工具的开发和运维专家服务的推进,赋能开发,提高效能。最后给自己代个盐,欢迎大家有空时翻下我牌子(知乎号:布道,微信:AiDevOps),看看“开发运维”专栏的文章和公众号的文章,希望多些关注和点赞是给作者最好的鼓励 !

编辑:关崇、孙淑娟

投稿:有投稿、寻求报道意向技术人请联络 editor@51cto.com

精彩文章推荐:

一文详解:如何设计出高可用的分布式架构?

如何使用Spring Cloud构建微服务架构?(文末赠书)

用Python来看3天破10亿的《我不是药神》到底神在哪?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存