/ 中存储网

关于谷歌重塑数据中心机械硬盘需要知道的两件事

2016-03-07 10:21:46 来源:DOIT

闪存势头越来越猛,磁盘最后的栖身之所不是各种消费级产品,而是在数据中心,没人会认为谷歌要做硬盘,但因为是举世闻名的大型互联网用户,谷歌对硬盘提出了许多看法格外引人关注,这些看法都写在了这个白皮书里——《Disks for Datacenter》。

谷歌发声更能引起关注,因为是用户,而且是是互联网用户,毕竟时代赋予了互联网公司的正确性、正义性,信谷歌,谷歌似乎什么都能做,但面对硬盘,面对现实,谷歌最多是在接口层和固件方面做点文章,谷歌重塑硬盘,其实谷歌的需求更多是为了引起业内讨论,提出了作为用户的需求。

白皮书里列举了谷歌对于重塑数据中心硬盘的种种看法,当然,硬盘的重塑需要与整个产业界的共同努力,启事录创始人张广彬告诉笔者说,其实业内许多硬盘厂商已经开始在做这方面的努力和尝试了。

Eric Brewer是报告的撰写者之一,他除了是谷歌数据中心基础设施的副总裁之外,还是加州大学伯利克分校的教授,他在报告中写道,现在数据中心的硬盘是由历史原因造成的,它继承自PC的软盘,现在应该考虑出现一种TCO更好的磁盘了,过程可能是漫长的,需要经过广泛讨论,但这件事本身是值得考虑的。

笔者查看了这几篇报告,加上之前看的几个报告,总结出了关于谷歌重塑数据中心硬盘需要知道的两件事。

第一件事:为什么这次不是闪存?

不是说闪存来了吗?闪存性能那么好,又说闪存越来越便宜了,没几年就换要替代磁盘了,为什么又回过头来折腾磁盘了呢?

图片Wikibon:2023年单位容量闪存和磁盘的价格将基本一致

在这篇报告中提到,目前来说成本是最主要的,不是说闪存不重要,闪存现在主要还是用在高IO应用领域。

差不多同一时间,谷歌联合多伦多大学发布了另外一份报告——《闪存盘的可测与不可测》,从另一个角度对闪存提出疑问。

报告仔细分析了存放着六年来产生数据的存储设备,包括数百万的磁盘,十多种不同磁盘模型和不同的闪存技术。

报告数据显示,四年来,有超过20%的磁盘发现了不可恢复错误,差不多同样长的时间内,将近80%的磁盘都发现了坏块。相比之下,磁盘在32月时间内,不可恢复错误的比例仅为3.5%。

图注:使用寿命(按PE来算)对失效率的影响


原始比特误码率(RBER)确实会随着使用寿命而增长,但是没以往想象的那么高,并不是呈指数增长的。

图注:横轴是使用次数

在相同的PE下,旧的闪存盘比新的闪存盘失效率要高,闪存盘的年龄影响失效率,看来盘买了不用也是罪,电子产品买新不买旧啊。

令许多人大跌眼镜的是,报告居然说企业级市场常用的SLC闪存在可靠性上并不比总是比MLC强,比如上图所示。

许多全新的SSD也会有坏块,坏块越多未来的错码率就越高,对闪存盘影响越大,这个是可以预测的。

报告提到,原始比特误码率(RBER)是在测量磁盘可靠性时的重要参数,然而RBER在闪存面前没什么意义,因为高RBER并不意味着高UBER,这是人们在面对闪存时候的不可测。

似乎人们对闪存的认识还不够全面,人们还在了解当中,对闪存的研究可不止谷歌做过。

去年Facebook发布的闪存失效率(错码率)报告(A Large-Scale Study of Flash Memory Failures in the Field)也对闪存进行了研究,报告让我们认识到,闪存普及与否不全是价格的因素,还有性能稳定性的因素,因为性能随着使用次数增多是会有衰减的,这可能会影响客户的关键业务。


失效率与使用次数不呈线性。图片来自:闪存失效率报告
 

更重要的是还有可靠性的因素,Facebook的报告中说,闪存失效率在寿命周期并不是线性的,另外温度也会影响闪存的失效率,再加上《闪存盘的可测与不可测》(Flash Reliability in Production: The Expected and the Unexpected)报告所提到的,如果闪存表现不可测将影响在关键业务中的使用。

我们很难说谷歌和Facebook的报告谁更准确,但可以肯定的是,磁盘比闪存成熟的多,一个显而易见的事实是,闪存在数据中心的替代率不高,所以才有了重塑数据中心硬盘的命题。

第二件事,要如何重塑数据中心硬盘,谷歌提出了哪些意见?

Eric表达了对数据中心现有的3.5吋盘的种种不满,近线企业级硬盘不适合当前应用。从以下三点说明:

一,重塑单块磁盘,优化磁盘存储集合的整体表现,简单指标有提升IO,提升容量等。

二,降低(tail latency)尾延迟,比如通过读缓存提升云用户的响应速度,通过提升吞吐量提升MapReduce这类应用的体验,简单来说延迟要大,带宽要高。

三,安全,一方面是固件漏洞引起攻击引起的问题,一方面是固件在加密方面的问题。

具体的做法谷歌指出了是个细节我们来看一下:

1,让硬盘外形变高变细,从而提升IOPS,提升容量,降低单位容量价格。

提升容量。给现有磁盘外形加以改造,思路是说让单个磁盘的盒子放高一些,这样每块硬盘可以放更多的盘片,从而增加容量,增加盘片来增加容量这正式磁盘厂商一直在做的事儿,最近希捷还推出了7碟片的磁盘,容量刷新到了10TB。

提升IOPS,把每块盘片的直径缩短,这样盘片小了寻道距离就短了,寻到时间就快了,因为盘片小了,转起来更稳定了,所以硬盘可以转得更快,这样就可以提升RPM,减少寻道时间,从而提升IOPS性能了。

另外,文中还列举了提升并行IOPS的方法还有四种,(1),硬盘内部对角放两个机械臂,每个机械臂覆盖所有盘面,这样无疑会提高成本,但是性能会很高;(2),在一个位置放两个半长的机械臂,每个机械臂负责半个盘面。(3),一个机械臂上做一种双极设计,从而让两个磁头对应两个碟片,这会提升顺序读写性能,但是随机访问没什么好处。(4),一个机械臂,改变机械臂上的磁头,让它可以同时读两个道,这样增加顺序读写性能。

另外,由于一个硬盘封装(硬盘壳)里的碟片更多了,也可以降低成本,打个不太合适的比方,有点像3块钱的可乐和6块钱一瓶的可乐单位容量的价格的区别一样。

2,硬盘缓存,降成本,降低(tail latency)尾延迟。

现在许多硬盘都有自己的缓存(30-100MB),硬盘是要连接到主机的,从成本的角度来说这不太好,我们让磁盘通过PCIe使用主机的RAM,主机那边的RAM比较便宜,这样既可以降低成本还能提高利用率。

另外还提到,硬盘到磁盘的供电电压有12V,5V,还有3.3V,谷歌希望未来能统一成12V的直流电,这样以后设计系统的时候不用再考虑电压的问题了,降低TCO。

3,优化SMR,提升容量。

SMR提升了存储密度但是降低了随机写的性能,因为被删掉的数据的空间只有GC之后才能被重新利用,但什么时候做GC是个问题,时间不好会影响性能,当请求来的时候你GC,这会影响IOPS。

通常,一些可预测生命周期的数据被集中放在SMR的区域,这虽然能缓解问题,但因为这些是冷数据,所以浪费了原有的IOPS能力,不仅如此,更多IOPS集中在了CMR(conventional magnetic recording ),增加了CMR的IOPS压力,所以说SMR提升了单位价格容量的性价比而不是单位IOPS的性价比。

于是谷歌提出了出混合磁盘,既有冷数据又有热数据,既有CMR又有SMR。新数据来了先放在CMR,SMR可以放长久的数据。什么样的混合盘呢?在一个硬盘里分别做优化,一些是对SMR优化的磁头和盘片,一些是对CMR做优化的磁头和盘片。

进一步想,如果未来能有可以动态调整CMR和SMR的配比的硬盘就更好了。

4,硬盘日志,优化IOPS和(tail latency)尾延迟

设立一个日志文件,文件内容是重要的性能或者某一类操作的事件,比如数据完整性的重写,硬盘在执行命令或者普通的读写的时候参考这个日志。系统在不影响性能的时候定时读取这个日志,比如当发现一个延迟很高的读操作时候,读取一下这个日志进行诊断。

5,利用重读(Read Retry)机制降低(tail latency)尾延迟

这条其实是读策略的问题,硬盘的读操作都会进行“有限的尝试”,如果发现坏数据之后会很快返回一个值。谷歌建议把这一机制用在并行读操作,以此来降低(tail latency)尾延迟。

6,改变硬盘故障率,错码率标准,也就是许多媒体说的,不重视硬盘的可靠性。

大意就是说现在的硬盘为了可靠性牺牲了性能,增大了(tail latency)尾延迟,牺牲了存储密度等等。

7,后台任务和后台管理API

磁盘的后台任务可以用来解决和防止故障,但是这些操作影响了延迟性能,但是后台任务又是必须的,为了更好的用它,谷歌提出了几点建议:

比如让所有的任务都可以改变优先级,比如磁盘可以获知后台任务执行所需时间,比如主机来决定什么时候进行后台任务,当主机出问题的时候磁盘可以自己做一些维护工作等等。做一些灵活的调整。

8,灵活的容量配置

1)磁盘有的部分是有缺陷的,但厂商为了提供特定容量的磁盘,会预留一部分空间弥补缺陷部分损失的空间,如果容量太低的话就不能提供而定空间,就得返厂重新生产,或者就按现有容量这么卖。

2)硬盘上不是有做缓存,Reallocation的扇区吗?在硬盘使用的早期把这部分拿出来存储数据,然后一步步的把这些数据拿回来发挥原有的功能。

3)还有就是当磁头故障时磁盘需要重新初始化,然后找回丢失的数据。谷歌建议以后磁头故障的时候别管他,直接继续往下读,这样能延长使用寿命。

9,增大扇区

ECC校验能力的提升使得硬盘服务商能提高扇区的大小,从512B提升到4KB之后降低了ECC的不利影响,而现在许多时候都需要把数据读取到分布式系统当中,如果能继续增加扇区大小的话,会有许多好处。

许多主机软件在写入数据的时候都会加入CRC(周期性循环检查),而现在许多SATA盘都开始支持扩展扇区功能,比如有了4K+16B,64K+256B这样的扇区,据了解,现在许多SCSI磁盘已经有了这样的功能了。

10,通过优化队列管理,提升IOPS

谷歌指出了NCQ和TCQ的许多问题,这个比较复杂,笔者能力有限,想了解的更详细的内容点击下方下载链接获取完整报告吧。

看完这篇报告,笔者感觉谷歌实在是很挑剔,但正如企事录创始人狒哥所说,谷歌其实做不了什么,最多也就在固件和接口层做点内容。诚然,谷歌提出意见为的是引起关注,希望硬盘厂商能行动起来做出一些优化。