复盘价值1000万的腾讯云硬盘固件"BUG"
摘要: 除了吃瓜,还是得吸取教训啊同学们!
这次,我从纯技术角度分析腾讯云与前沿数控的磁盘数据丢失事件,不站队。
硬盘门
这里说的硬盘门不是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个当事人的矛盾,但是不能解决技术问题,我们除了吃瓜,还是得从这件事中吸取教训。
参考
- 腾讯云 - 关于用户“前沿数控”数据完整性受损及腾讯云补偿措施的说明
- 腾讯云 - 关于客户“前沿数控”数据完整性受损的技术复盘
- 前沿数控- 腾讯云给一家创业公司带来的灾难!
- 前沿数控- 对腾讯云官方回应“前沿数控平台数据丢失”事件的严重不满及声明
- 陈皓 - 从GITLAB误删除数据库想到的
- GitLab - GitLab.com database incident
- GitLab - Postmortem of database outage of January 31
复盘价值1000万的腾讯云硬盘固件"BUG"的更多相关文章
- [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- 腾讯云&硬盘信息
fly@UBT-sCloud:~/pub_work/05-ARM/00-s5pv210$ sudo fdisk -lDisk /dev/ram0: 64 MiB, 67108864 bytes, 13 ...
- 获取云硬盘列表bug
有段时间没写博客了,主要还是刚进新公司,多少有点不适应(真会给自己找理由,明明是手里没技术,肚子里没货,能写啥!).前面几个星期都在修一修horizon的bug,这个没啥很大难度,就是用了一个djan ...
- 腾讯云 LNMP+wordpress 搭建个人网站
折腾了好几个小时才弄好(php nginx略知一二),其实一点都不难! 以此记录一下,献给首次搭建的朋友们!! 1)准备工作:(因为个人用的ubuntu16.04 LTS系统 所以这是debian版 ...
- 容器服务 TKE 存储插件与云硬盘 CBS 最佳实践应用
引言 随着自研上云的深入,越来越多的有状态服务对于在 TKE 集群中使用云上存储能力的需求也越来越强烈. 目前腾讯云容器服务 TKE(Tencent Kubernetes Engine已支持在 TKE ...
- 日吞吐万亿,腾讯云时序数据库CTSDB解密
一.背景 随着移动互联网.物联网.大数据等行业的高速发展,数据在持续的以指数级的速度增长,比如我们使用手机访问互网络时的行为数据,各种可穿戴设备上报的状态数据,工厂中设备传感器采集的指标数据,传统互联 ...
- 这款APP太像微信 腾讯起诉索赔1000万
去年8月,“币应”(inChat)APP上线,号称是一款原创的区块链加密通讯工具,而界面与微信极为相似,图标是白配绿色调,内部界面几乎一模一样,通讯录.朋友圈的界面完全相同.里面的小游戏,也从微信拿来 ...
- 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务
推荐理由: 现如今数据爆炸性增长,人类生活产出的数据越来越多,文字信息,图片信息,视频信息:但有很多信息我们都无法直接使用,需通过一定的处理,才能够获取其中对我们有用的信息,在腾讯云上的万向优图能够对 ...
- 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”
Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...
随机推荐
- 第一周Access课总结
一.问:这节课学到了什么知识? 答:这周课程迎来新的学习领域,作为初次学Access有了一定的了解,Access是office办公软件中的一个极为重要的组成部分,它可以对大量的数据进行存储,查找,统计 ...
- 通过linux核映射驱动访问GPIO
1. HPS GPIO原理 1.功能方块图 linux内核是通过Linux内核memory-mapped device驱动访问GPIO控制器的寄存器而控制HPS端用户的LED和KEY的.memory- ...
- 统计C/C++代码行数
近日在写一个统计项目中C/C++文件(后缀名:C/CPP/CC/H/HPP文件)代码行数的小程序.给定包含C/C++代码的目录,统计目录里所有C/C++文件的总代码行数.有效代码行数.注释行数.空白行 ...
- git diff 理解
0. 理解 git diff 返回信息 1. 命令 $ git diff README.md 2. 返回信息,注解 diff --git a/README.md b/README.md ## 1. 表 ...
- ZZ 使用Jenkins配置Git+Maven的自动化构建
http://blog.csdn.net/xlgen157387/article/details/50353317 Jenkins是帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布 ...
- JavaScrip继承图文总结
JavaScript有多种继承模式,总结起来用到的方法有:原型链的传递.构造函数的借用.对象的复制. 这篇文章讲得很清晰,让我们明白:所有JS对象源于null,并通过原型指针和原型对象来实现继 ...
- iOS调用QQ发起临时会话
iOS调用QQ发起临时会话 iOS调用qq前先判断是否安装qq, 之后通过OpenURL打开对用的qq NSURL *url = [NSURL URLWithString:@"mqq://& ...
- java之Stack详细介绍
1 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Ve ...
- typescript handbook 学习笔记3
概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...
- Docker优势
设计,开发 ---> 测试 ----> 部署,运行 代码+运行环境 ---> 镜像 image 环境一致,资源占用少 自动化平台 Docker image的制作很重要