闪存势头越来越猛,磁盘最后的栖身之所不是各种消费级产品,而是在数据中心,没人会认为谷歌要做硬盘,但因为是举世闻名的大型互联网用户,谷歌对硬盘提出了许多看法格外引人关注,这些看法都写在了这个白皮书里——《Disks for Datacenter》。
谷歌发声更能引起关注,因为是用户,而且是是互联网用户,毕竟时代赋予了互联网公司的正确性、正义性,信谷歌,谷歌似乎什么都能做,但面对硬盘,面对现实,谷歌最多是在接口层和固件方面做点文章,谷歌重塑硬盘,其实谷歌的需求更多是为了引起业内讨论,提出了作为用户的需求。
白皮书里列举了谷歌对于重塑数据中心硬盘的种种看法,当然,硬盘的重塑需要与整个产业界的共同努力,启事录创始人张广彬告诉笔者说,其实业内许多硬盘厂商已经开始在做这方面的努力和尝试了。
Eric Brewer是报告的撰写者之一,他除了是谷歌数据中心基础设施的副总裁之外,还是加州大学伯利克分校的教授,他在报告中写道,现在数据中心的硬盘是由历史原因造成的,它继承自PC的软盘,现在应该考虑出现一种TCO更好的磁盘了,过程可能是漫长的,需要经过广泛讨论,但这件事本身是值得考虑的。
笔者查看了这几篇报告,加上之前看的几个报告,总结出了关于谷歌重塑数据中心硬盘需要知道的两件事。
第一件事:为什么这次不是闪存?
不是说闪存来了吗?闪存性能那么好,又说闪存越来越便宜了,没几年就换要替代磁盘了,为什么又回过头来折腾磁盘了呢?
在这篇报告中提到,目前来说成本是最主要的,不是说闪存不重要,闪存现在主要还是用在高IO应用领域。
差不多同一时间,谷歌联合多伦多大学发布了另外一份报告——《闪存盘的可测与不可测》,从另一个角度对闪存提出疑问。
报告仔细分析了存放着六年来产生数据的存储设备,包括数百万的磁盘,十多种不同磁盘模型和不同的闪存技术。
报告数据显示,四年来,有超过20%的磁盘发现了不可恢复错误,差不多同样长的时间内,将近80%的磁盘都发现了坏块。相比之下,磁盘在32月时间内,不可恢复错误的比例仅为3.5%。
原始比特误码率(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的许多问题,这个比较复杂,笔者能力有限,想了解的更详细的内容点击下方下载链接获取完整报告吧。
看完这篇报告,笔者感觉谷歌实在是很挑剔,但正如企事录创始人狒哥所说,谷歌其实做不了什么,最多也就在固件和接口层做点内容。诚然,谷歌提出意见为的是引起关注,希望硬盘厂商能行动起来做出一些优化。