摘要: 除了吃瓜,还是得吸取教训啊同学们!

这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队。

硬盘门

这里说的硬盘门不是10年前陈老师的那一次,而聊的是最近“腾讯云”用户“前沿数控”的磁盘数据丢失。

关于这次事件,腾讯云是这样说的:

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

腾讯云多少有点打官腔,而前沿数控的说法更加直白:

在使用腾讯云服务器8个月后,我们放在云服务器上的数据全部丢失,腾讯云所谓的三备份数据也全部离奇丢失!

套用一下《天下无贼》的经典台词:

21世纪什么最重要?数据!

一个产品的数据如果丢失或者破坏的话,所受的打击是毁灭性的,因为老用户的服务无法恢复...腾讯云提出了136469的赔偿方案,而前沿数控索赔1000万,双方没有达成一致,这个事件才得以曝光。也就是说,在前沿数控看来,腾讯云的这个所谓的“物理硬盘固件版本bug”,价值1000万!BUG原来这么值钱啊,看来大家还是少写点BUG吧...

我们Fundebug同为创业公司,也是腾讯云和阿里云等云计算公司的用户,并且从事BUG监控服务(此事也涉及到BUG),因此会持续关注这个事件。

腾讯云真的是硬盘固件BUG吗?

腾讯云关于硬盘固件BUG的说明是这样的:

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

腾讯云监控到异常后,第一时间向用户告知故障状态,并立即组织文件系统专家并联合厂商技术专家尝试修复数据。遗憾的是,虽经多方努力,最终仍有部分数据完整性校验失败。经过分析,该硬盘静默错误是在极小概率下被触发。我们随即对固件版本有bug的硬盘全部进行下线处理,确保相关隐患全部排除。

由于腾讯云没有公布“物理硬盘固件版本bug”的任何技术细节,对于这件事的真相我有所疑问:

  • 硬盘的什么固件有BUG?
  • 硬盘固件的哪个版本有BUG?
  • 所谓的极小概率触发是BUG什么意思?究竟什么情况下会出现这个BUG?
  • 硬盘固件应该升级到哪个版本才能修复BUG?
  • 如何升级该硬盘固件?对固件版本有bug的硬盘全部进行下线处理是如何做到的?这个似乎不可能不影响硬盘用户吧?
  • 我们Fundebug的BUG监控插件使用了腾讯云的CDN进行分发,发现CDN服务并不稳定,北京、杭州和天津用户访问时都出现过加载失败的情况,是否与这个BUG有关?(此事我们有向腾讯云提交工单。)

2017年,国外的代码托管站点Gitlab的数据库被误删,他们在Youtube和Twitter上直播了整个修复过程,并且写了两篇博客详细公开了所有技术细节。这样做非常透明和公开,可以赢得用户的信任。

每个公司都会出现各种各样BUG或者故障,腾讯云也不能例外。用户对于云计算平台的要求非常高,因为涉及到能否正常提供服务,因此,作为腾讯云的用户,我们呼吁腾讯云公布这次事件的所有技术细节,这是厘清事件的最佳方式,也是对用户负责的一种表现。

补充: 腾讯云第2份声明关于客户“前沿数控”数据完整性受损的技术复盘完全证明的我的猜测,这个问题不是什么莫名其妙的BUG导致的,而是人为原因导致的。他们还把第1份BUG声明关于用户“前沿数控”数据完整性受损及腾讯云补偿措施的说明删掉了!

当天上午11:57,我们的运维人员收到仓库Ⅰ空间使用率过高告警,准备发起搬迁扩容;在14:05时,运维人员从仓库Ⅰ选择了一批云盘搬迁至新仓库Ⅱ,为了加速搬迁,手动关闭了迁移过程中的数据校验;在20:27 搬迁完成之后,运维人员将客户的云盘访问切至仓库Ⅱ,同时为了释放空间,对仓库Ⅰ中的源数据发起了回收操作;到20:30 监控发现仓库Ⅱ部分云盘出现IO异常。

前沿数控难道没有备份数据?

不难推测,前沿数控完全没有备份数据,它们完全依赖于腾讯云的承若的"99.9999999%的数据可靠性,搭载了云硬盘提供三副本存储策略"。我不清楚腾讯云的这个99.9999999%的数据可靠性是怎么计算出来的,也不知道腾讯云的三副本存储策略是怎么回事,这一点需要腾讯云提供详细的说明。但是,对于每一个产品来说,备份数据,至少备份一下核心数据,这是最基本的常识。所以在这一点上,前沿数控显然存在失误。

所有的创业者和开发者都应该从这个事件吸取教训,不要偷懒,严格备份数据,否则数据一旦出问题,后果非常严重。这里简单介绍一下Fundebug是如何备份数据的,给大家提供参考,以后我会详细介绍我们的数据备份方案:

备份方案 时间粒度 细节
MongoDB复制集 实时 搭建3个节点(1个Primary和2个Secondary)的MongoDB复制集,实时同步数据
阿里云服务器磁盘快照 每天 设置每天凌晨自动快照所有磁盘,包括系统盘和数据盘
mongodump导出核心数据 每天 每天凌晨将MongoDB核心数据导出到复制集之外的服务器磁盘(该磁盘会每天进行快照)
阿里云对象存储 每天 每天凌晨将mongodup导出的数据使用gpg非对称加密之后,上传到阿里云深圳数据中心的对象存储,设置阿里云自动同步到杭州数据中心,每份数据保留1个月
本地硬盘备份 每周 每周六凌晨从阿里云对象存储下载加密的备份数据,存储到本地磁盘

对数据对多个粒度的备份,是非常必要的,无论你使用哪一家云计算平台,无论该平台给了你怎样的承若。如果依赖云计算平台,大概是靠不住的,而且他们的应急处理速度显然没有自己来的快,因为只有开发者自己最了解应用数据,知道如何备份如何恢复才能尽量降低损失。

他们和解了!

我加了前沿数控的负责人的微信,他在朋友圈已经声明和解了。另外,前沿数控所发的两篇微博也删掉了...

花钱能解决2个当事人的矛盾,但是不能解决技术问题,我们除了吃瓜,还是得从这件事中吸取教训。

参考

复盘价值1000万的腾讯云硬盘固件"BUG"的更多相关文章

  1. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  2. 腾讯云&硬盘信息

    fly@UBT-sCloud:~/pub_work/05-ARM/00-s5pv210$ sudo fdisk -lDisk /dev/ram0: 64 MiB, 67108864 bytes, 13 ...

  3. 获取云硬盘列表bug

    有段时间没写博客了,主要还是刚进新公司,多少有点不适应(真会给自己找理由,明明是手里没技术,肚子里没货,能写啥!).前面几个星期都在修一修horizon的bug,这个没啥很大难度,就是用了一个djan ...

  4. 腾讯云 LNMP+wordpress 搭建个人网站

    折腾了好几个小时才弄好(php nginx略知一二),其实一点都不难! 以此记录一下,献给首次搭建的朋友们!! 1)准备工作:(因为个人用的ubuntu16.04 LTS系统  所以这是debian版 ...

  5. 容器服务 TKE 存储插件与云硬盘 CBS 最佳实践应用

    引言 随着自研上云的深入,越来越多的有状态服务对于在 TKE 集群中使用云上存储能力的需求也越来越强烈. 目前腾讯云容器服务 TKE(Tencent Kubernetes Engine已支持在 TKE ...

  6. 日吞吐万亿,腾讯云时序数据库CTSDB解密

    一.背景 随着移动互联网.物联网.大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联 ...

  7. 这款APP太像微信 腾讯起诉索赔1000万

    去年8月,“币应”(inChat)APP上线,号称是一款原创的区块链加密通讯工具,而界面与微信极为相似,图标是白配绿色调,内部界面几乎一模一样,通讯录.朋友圈的界面完全相同.里面的小游戏,也从微信拿来 ...

  8. 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务

    推荐理由: 现如今数据爆炸性增长,人类生活产出的数据越来越多,文字信息,图片信息,视频信息:但有很多信息我们都无法直接使用,需通过一定的处理,才能够获取其中对我们有用的信息,在腾讯云上的万向优图能够对 ...

  9. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

随机推荐

  1. Pycharm 开发 Django 项目

    1. 安装Pycharm, 自行百度安装教程 2. 安装python3 自行百度安装教程 3. 安装Django框架 使用命令: Window的终端控制台输入:安装Django框架. pip inst ...

  2. 背水一战 Windows 10 (92) - 文件系统: 读写“最近访问列表”和“未来访问列表”, 管理以及使用索引

    [源码下载] 背水一战 Windows 10 (92) - 文件系统: 读写“最近访问列表”和“未来访问列表”, 管理以及使用索引 作者:webabcd 介绍背水一战 Windows 10 之 文件系 ...

  3. App设计模式纵横谈(1)

    对我的文章和培训课程感兴趣的可以加我微信16230091进行关注. —————————————————————————————————— 今天聊聊我沉淀比较久的一门技术,设计模式.这里是第一篇,算是概 ...

  4. ZKWeb网页框架1.8正式发布

    1.8.0更新的内容有 破坏性更新 更新ZKWeb.System.Drawing到3.0.0 请修改源代码中的System.Drawing到System.DrawingCore 现在已经不再需要使用D ...

  5. 纯css进度条效果

    <!--html代码--> <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...

  6. dwr学习(一):简单dwr实例

    博客分类:  dwr   最近写ajax写烦了,想着能不能有个更简单的“ajax”,一问就问到这个dwr了.赶紧去官网学习了下,这里写个博客记录一下实例. 测试环境:tomcat6.0 1.新建一个w ...

  7. Android开发工程师文集-提示框,菜单,数据存储,组件篇

    提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();// ...

  8. Maven - 实例-6-聚合与继承

    创建项目 xxx - 继承自testDep.PPP <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= ...

  9. docker+nginx实现负载均衡

    配置nginx配置文件(配置文件运行时是会加载到docker进程中)先建立nginx相关文件和目录,对应下面启动命令中的挂载位置,把主配置文件nginx.conf放到对应位置“/etc/docker/ ...

  10. Python 解析har 文件将域名分类导出

    前言 作为程序员平时主要是使用 shadowsocks 作为代理工具的.shadowsocks 有个很明显的优点儿就是可以设置白名单和黑名单.白名单是会走shadowsocks的自动代理模式. 遇到的 ...