存储技术一直在不断地发展,从磁带,磁盘,闪存,SSD,内存,硬件的发展十分的快速。目前,数据还主要存储在磁盘中,但随着硬件的发展,基于闪存的存储系统,基于内存的存储系统也被广泛的研究,不久的将来,硬盘也会像磁带一样成为历史,新的存储硬件将有更快的访问速度,更高的带宽,更快的寻址,软件技术也将受此影响。

现在基于内存的系统越来越多,Redis和memcached都是基于内存的存储系统,Hadoop中的明星项目Spark也在内存中计算。随着硬件价格的降低,基于内存的项目越来越多,大量的内存也将对系统设计产生重大影响。

本文将介绍斯坦福大学计算机系的一个研究小组正在创建的一种名为RAMCloud(内存云)的系统,试图以DRAM(动态随机存储器)取代传统硬盘。RAMCloud能够聚合上千台服务器的内存,从而极大地提高数据访问速度。由于DRAM一旦断电就会丢失数据,硬盘(或许还有闪存)仍可用于数据备份。但在日常运行中,所有信息应用访问都直接来自DRAM。

系统特征

  1. 延迟低:延迟只有5到10微秒,非常的迅速。
  2. 高吞吐:每秒能够处理1百多万请求。大部分请求都是少量数据。
  3. 分布式:一个系统支持1000多服务器的集群存储。系统利用这些服务器的内存组成一个大的存储系统。
  4. 存储介质:完全基于内存,磁盘只是用来做备份。
  5. 快速恢复技术:系统出现故障后能够在1-2秒内恢复。

选择DRAM的原因

RAM info

从图片中我们中可以看出存储介质的发展趋势,从图中可以看出,RAM也将成为一种广泛使用的存储介质。

数据模型

data model

RAMCloud是key-value存储系统,最小的存储对象叫object,由key可以直接找到object,每个key属于一个table。

系统架构

Architecture

可以看出系统结构也是单master节点,Coordinator就是主节点,下面的Master的就是存储节点。基于内存的的数据中心对网络要求高,甚至要有专门定制的网络系统。

存储节点架构

Architecture

存储节点也使用了多副本策略用来应付故障。此时才用到磁盘,磁盘主要用来恢复。

Coordinator

Coordinator是存储系统的中心节点。主要用来数据分配并记录相关信息。

Architecture

客户端也会缓存这份位置信息。

快速恢复技术

Architecture

数据从磁盘中进行恢复,存储节点会从磁盘中读出数据并加载到内存进行恢复。这种架构的主要问题在于磁盘的I/O速度。一种解决办法就是并行从磁盘中读取。

Architecture

这种结构不同与上一个的关键就是有多个recovery master,每个master恢复部分数据,每个master同时从一块备份中进行恢复。

Architecture

这种结构更加并行,每个master恢复部分数据,每个master同时从多块备份中进行恢复。

总结

基于内存设计存储系统还面临着很多的问题,现在进行商业化也非常的困难,但我相信不就以后,磁盘就成为过去,内存系统将流行起来。