文档章节

阿里云盘的致命问题

BaiYang
 BaiYang
发布于 2017/02/06 05:21
字数 1141
阅读 271
收藏 0

影响范围

所有使用了阿里云盘,并启用了多副本或主从切换的服务,如:MySQL、Redis、MongoDB、DRBD、Hadoop 以及用户自行开发的应用程序等。

 

表现症状

当发生网络分区等云盘不可用故障时,上述依赖于云盘的服务无法正常完成主从切换和故障转移等操作。所有用户的请求都将被无限期挂起,系统无限期不可用。

 

故障原因

不同于物理磁盘和 RAID 卡等真实设备,ECS 实例在其挂载的阿里云盘不可用时,不会向上层文件系统和应用程序汇报 IO Error,而是对该 IO 请求进行无限次的循环重试。导致上层文件系统和应用程序发生 IO Hang 并永久挂起直至阿里的运维团队成功排除故障。在这段可能几小时甚至数天(参考阿里云香港等机房故障的恢复时间)的时间周期内,系统不可用。

注:阿里云盘可用性 SLA 为 99.95%,年均不可用时间 4.5 小时左右。详见:https://help.aliyun.com/knowledge_detail/40683.html 中的“2.8. 服务可用性”小节。

 

最新进展

阿里云在我提交的工单(工单编号: B974JAC),以及我与其产品经理、技术支持和研发技术等的多方电话会议中均确认了存在此问题,但拒不承诺会解决此问题,理由是:“这个问题目前为止就您一个人反映过”。这是电话会议中他们的原话。

我相信除了小白用户以外,只要部署了高可用集群的兄弟们都能非常明确地明白此问题的严肃性和严重性。

此问题归根结底是由于云盘未遵循真实物理设备的行为规范而造成。阿里云的表现却非常让人失望:

1.在开始先是打太极拳,说这些信息涉及公司机密,不能透露。在我反复追问并投诉:我只想了解在云盘不可用时,我的应用程序发出的读写请求能否返回 IO Error。这种需要暴露给应用的接口行为为何属于公司机密?以后,终于才有人着手回答我的问题。

2.问题回答的非常含糊,不断试图用其数据可靠性 99.9999999% 来混淆其 99.95% 的服务可用性。

3.推卸责任,建议用户使用一个可能引发数据丢失、数据错乱、系统崩溃等未定义行为的第三方驱动来解决问题。那不是把问题越解决越严重么?把一个一段时间不可用的问题生生“解决”成了数据可能永久丢失和错乱的问题?

4.继续推卸责任,建议用户重新编写其应用程序,将其中所有磁盘 IO 都转发到一个专用线程执行,在加上另一个线程来实现超时强制关闭。首先,问题的根源是阿里云盘的行为不符合业界规范,凭什么要用户来为此买单?其次,用户除了自己的应用需要访问磁盘以外,还会用到其它第三方产品,如:Oracle、SQL Server、MySQL、MongoDB 等等。第三方产品千千万万,有开源的,也有闭源的,用户改的过来么?

最后,对于大部分产品来说,所谓“将所有磁盘 IO 都转发到一个专用线程执行”工作量是非常大的,这最少意味着将同步语义转变为异步语义。更有甚者,MongoDB、Varnish、SQLite 等很多 DBMS 类产品均使用了文件映射机制来优化文件缓存和加速 IO 访问效率。在以文件映射方式来访问磁盘时,磁盘 IO 被转换成了内存读写,这时难道让用户专门建个线程去处理内存访问请求?那文件映射还有意义么?

如此种种,在经历了近一个半月的艰苦沟通之后,阿里云才算承认“这确实是个问题”、“您说的确实有道理”,但仍然拒不改正,理由就是可笑的“别人没提过”……

 

为此,我恳请各位多多转发,并向阿里云提出意见,敦促他们尽快改进!

附上截止至发文时的完整工单截图:http://baiy.cn/tmp/io_hang_bug.png

© 著作权归作者所有

共有 人打赏支持
BaiYang
粉丝 23
博文 1
码字总数 1141
作品 0
杨浦
高级程序员
私信 提问
加载中

评论(1)

滔哥
滔哥
大部分情况下来说还是好用的,比如放个小企业站、博客呀之类的~~~ 但...
阿里云服务器怎么样?阿里云购买了肯定不会后悔的!

阿里云服务器怎么样、云服务器如何选择等问题是打算上云的用户常常问的最多的问题,阿里云在国内云计算领域的地位是毋庸置疑的,市场占有率早已超过了半壁江山,阿里云起步早,面对各领域有成...

上987432.com
2018/11/14
0
0
阿里云服务器怎么样?老司机谈谈阿里云服务器的使用感受

阿里云服务器怎么样、云服务器如何选择等问题是云吞铺子经常被问到的问题,云吞铺子使用ECS云服务器也有几年光阴了,经常听到用户在纠结如何选择云服务器?注意,重点在“选择”二字,有选择...

云吞铺子
2018/12/10
0
0
湖北阿里云服务中心分享如何选择云服务器配置?

节点选择 现在阿里云ecs服务器都是采用BGP多线机房,品质差不多,仅仅只是位置不同而已,目前阿里云ECS服务器国内默认华东、华北、华南三个地域。 如上图所示,阿里云节点地区所对应的城市如...

捷讯技术17
2018/06/19
0
0
阿里云K8S服务支持CSI存储卷

CSI插件简介 CSI是Container Storage Interface的简称,为容器编排系统和存储系统之间建立一套标准的存储调用接口。 Kubernetes支持CSI接口标准,并在1.10版本进入beta阶段。K8S除了支持CSI...

6boys
2018/08/07
0
0
阿里云ECS重装系统、阿里云工单系统、RDS、SLB和其他产品介绍

阿里云ECS主机重装系统 阿里云的ECS有两种重装系统的方式 重新选择系统盘 初始化系统盘 重新选择系统盘 这个操作需要先把实例关机。点击实例最右侧的“更多”按钮-->选中磁盘和镜像-->点击更...

李超小牛子
01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java12的新特性

Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性 序 本文主要讲述一下Java12的新特...

go4it
12分钟前
1
0
深入解密比Guava Cache更优秀的缓存-Caffeine

1.前言 读这篇文章之前希望你能好好的阅读: 你应该知道的缓存进化史 和 如何优雅的设计和使用缓存? 。这两篇文章主要从一些实战上面去介绍如何去使用缓存。在这两篇文章中我都比较推荐Caffe...

咖啡拿铁的技术分享
14分钟前
1
0
Java B2B2C多用户商城 springcloud架构 --Eureka服务器搭建及配置

第一步,创建一个普通的springboot项目 以下方法都可以快速创建一个boot项目: 1. 浏览器访问http://start.spring.io/,填写信息,下载zip包,加压到你的ide的工作空间直接使用。 2. 使用ide...

明理萝
25分钟前
0
1
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作

· Oracle 撒手,宣布对个人用户 (Personal Users) , Java 8 官方支持时间持续到 2020 年 12 月;对商业用户(Commercial Users),2019 年 1 月之后不再提供免费更新。 · 红帽喊话,计划在...

Java填坑路
28分钟前
0
0
在 Ali Kubernetes 系统中,我们这样实践混沌工程

在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定。而混沌工程,是通过注入一些“不确定”因素,象放进了一...

阿里云官方博客
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部