|||
以动态随机存取存储器(DRAM)取代硬盘话怀旧(151109)
闵应骅
上一篇博文从分子电子学的沉浮看创新(151102)得到15817次阅读,本文“以动态随机存取存储器(DRAM)取代硬盘话怀旧”是想说明过去的技术基础对今天的创新仍然非常重要。创新不是空中楼阁,大学生们要好好学习基础知识。对于几千上万台服务器的数据中心,用硬盘速度太慢。据IEEE Spectrum报道,斯坦福大学有人提出来用动态随机存取存储器(DRAM)取代硬盘。这是一个创新的想法。但是,大量的问题在于容错。而容错技术是一个已经发展了50年的老技术,不过遇到了新情况,碰到了新问题。
磁盘存储器已经用了半个世纪。第一个商业化的磁盘出现在1956年,到1970年代就取代了磁带。就像集成电路,今天可以存的数据是1985年时的2万倍,而平均每字节的花费是那时的百万分之一。所以,今天的文件系统、关系数据库都是存在硬盘里。它的对手是闪速存储器,存取快、存储紧密、抗震。所以,所有移动设备,譬如平板电脑、智能手机、手表都是用闪存。笔记本电脑也用闪存代替硬盘,越来越多的数据中心等大型应用都在用闪存,因为速度很关键。动态随机存取存储器(DRAM)作为主存对于长期存储数据是另一种选择。譬如,谷歌的服务人员的查询是存在DRAM中,脸书的社交网络数据是在DRAM中,IBM的沃森人工智能系统所有数据存在DRAM中。过去人们认为DRAM是在计算过程中存那些暂时性的数据,它比闪存快1000倍,但是比硬盘贵100倍,但关电源,数据就丢失了。现在它可能成为主存储器,因为如果DRAM在硬盘或闪存有备份,用户就可以得到它的高速的优越性。而大型的数据中心一般不会关电源。
斯坦福大学建造的一个通用存储系统,称为RAMCloud,它存储数据中心的几百几千服务器里的数据。其备份存于硬盘或闪存,并当服务器故障时自动从备份恢复数据。
读写硬盘数据其所以慢是因为读写头必须机械地在旋转盘上寻找特定磁道,然后等待读写头旋转到所需的数据位置上。这个机械过程很难加快。存储的数据越多,这个时间就越长。在许多场合,数据随机地存在许多不同的小块中,这个时间就更长。这个问题已经存在多年,于是人们对闪存由于速度快而感兴趣。
大规模Web应用需要支持几千万甚至上亿的用户,从而需要与传统完全不同的操作结构。传统的应用处理单机上的存储,而大规模应用由于在许多计算机上,运行应用逻辑和服务器与用户的接口程序,其他计算机可能变成存储服务器,而大部分数据存在硬盘上,经常要用的数据存在存储器里。过去的技术是加载应用程序和它的数据到单机的主存里,应用可以存取数据达到DRAM的速度,即50-100纳秒。但吞吐量受限于单机。1990年代后期,Web大发展,传统应用体系结构无法处理众多网站的负载。此后10年,新的体系结构让大的数据中心用上千台机器一起工作。这样,应用程序和数据是分离的,数据在另一组机器里。这时,数据一般在硬盘里,常用的数据缓存在DRAM。但读写需要应用服务器与数据中心的内部网络的一个存储服务器通信,而存储服务器也许需要存取硬盘,这就需要0.5-10毫秒,比单机情况要慢4-5个数量级。所以,脸书产生一个网页只能查阅几百个数据片,否则时间就太长。开发者就必须把数据片搞得尽可能大。
2009年,斯坦福人开始了RAMCloud项目。他们把所有数据一直存在DRAM中。它不需要额外的硬件,它只是一个普通机器上的软件包,成为RAMCloud服务器,以代替今天的存储服务器。
RAMCloud的存储服务器每个机器配备32-256 GB的DRAM,足够存储所有数据,同时,服务器也包括硬盘和带电池备用的DRAM,另外一个机器称为协调器,管理应用服务器和存储服务器之间的通信。每一个RAMCloud服务器包含两个软件部件:一个主控;一个备用。主控程序用DRAM存储RAMCloud的数据,同时在应用服务器需要时可以用这些数据。备用程序则是保存其他RAMCloud主控在服务器二级存储的冗余数据。RAMCloud的第三个软件部件,协调器,运行在另一台机器上,管理整个RAMCloud集群,当存储服务器失效时协调恢复行动。各应用服务器用RAMCloud库包去存取RAMCloud存储。第一次应用服务器需要通过协调器找出什么主存存了什么数据,以后缓存这些信息到自己,以后就可直接请求相关的主存。
当RAMCloud服务器要取代正常的存储服务器时,它并不像今天的数据库服务器那样复制整个,其数据模型是所谓关键值钥,即包含一些表,每一个表可以包含许多对象,每个对象包含可变长度的钥,它在表中是唯一的,并且对应一个值,这个值可以是大到1MB的任意数据。应用程序要读写任何对象,只要给定表和钥即可。现在的RAMCloud读100字节对象需5微秒,写14微秒,比读硬盘快1000倍,比读闪存快10-20倍。这个加速即使用DRAM也是不可想象的,因为网络基础设施有相当大的延迟。网络中的每一次交换增加10-30微秒,数据请求和响应至少要经过5次交换,数据包的处理必须经过操作系统的进入和离开,又增加60微秒。所以,数据中心内的往返时间就达到几百微秒。
在网络上,RAMCloud有两个改进。一个是用专用交换芯片,内部延迟小于1微秒。另一个是用新一代的网络接口控制器(NIC),它有核心旁路功能,它允许应用直接与NIC通信,发送和接收数据包,而不需要计算机核心操作系统介入。
数据中心一般几年会有一次停电,当停电或服务器故障时数据不能丢,这就要靠硬盘或闪存备用数据,就像今天的硬盘用磁带备用数据一样。其他容错措施还包括写备份、断电时的备份、服务器在备份前失效、存着备份数据的服务器失效、存储器服务器失效的恢复等许多问题。这些问题有点太专业,这里就不详细介绍了。
RAMCloud现在还是一个大学的研究项目,但许多大学的研究组已经用上了RAMCloud的开源程序,譬如华为公司的分布式主存数据库项目。RAMCloud现在存在的一个问题是不支持关系数据库,因为目前还没有一个存储系统支持关系数据库。所以,现在还不太适用于已有企业级的应用。
上图显示RAMCloud自动数据恢复。当服务器失效,只要几秒钟就能实现在线恢复,用户根本感知不到。对云计算数据中心非常适用。一个数据中心有100万CPU核,1千万亿字节的数据,任意核可以在5-10微秒内存取任意的数据,速度比现在快1000倍。
这个程序就是多用DRAM,不用硬盘,基本就是一个软件。但核心问题是容错。这么多机器,这么多数据,一旦发生读写错误,如何自动纠正?一旦某一个机器失效,或者某一个存储器失效,如何发现?如何自动恢复?这些容错的老问题在大数据中心的环境下表现出来更大的复杂性。在1970年代IBM推出360的时候,主要是磁心存储器不可靠,容易出错,所以才出现了容错技术。而今天,DRAM很可靠,但是,太多太大,管理、存储、电源任何一个环节出问题,就使系统不可靠。所以,容错技术仍然不可缺少。谈到容错,大家就想起备用冗余。但是,备用有一系列的深层次问题,不像带两个相机,坏了一个用另一个那么简单。最近,本人在金华的可信计算会议上有一个报告,叫“软件定义的网络中的容错”,大家如果有兴趣,以后可以写一写。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-20 15:26
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社