RamCloud 一些疑惑

来源:互联网 发布:node sass dose not 编辑:程序博客网 时间:2024/06/05 14:43

1、什么是RamCloud?

       RamCloud 利用普通服务器上的内存为介质组成一个分布式存储, 由于普通服务器的内存大小32G~128G,RamCloud为了提供大容量存储,  所以RamCloud设计的目标是大规模,规模大小是1000到10000.

2、RamCloud是如何保证数据不丢失的?

  我们知道内存掉电后数据丢失,如果数据放在内存上,整个集群断电了,数据会丢失吗? 由于RamCloud设计假设是大规模,所以服务器掉电或者坏掉是一个大概率事件,如果同时有3台服务器掉电或者坏掉了,数据会丢失吗? 答案是不会丢失数据。那RamCloud是如何做到的呢?

  RamCloud和其他的分布式存储一样,当写数据时会拷贝到其他服务器,其他分布式存储的备份数据保存在hdd或者ssd上,RamCloud是否像其他分布式存储软件一样,把备份数据放在其他服务器的内存里呢? 答案是否,原因有2个:

  第一是内存的容量本来就小,如果备份数据放在内存上,则整个RamCloud的容量更加小了。如果容量不变,则成本上升。

  第二个数据有可能丢失。对存储系统来说,数据丢失是绝对不能够接受的。

  哪RamCloud把备份数据放在哪里呢?答案是硬盘里。这又引出了几个问题:

  1)由于写需要同步备份到其他服务器,如果备份的是硬盘,导致RamCloud性能下降,这不符合RamCloud 的设计初衷,RamCloud的其中一个设计目标是低时延。

        2) 如果只有一份数据在内存里,如果这个服务器坏掉或者掉电了,这时候是否只能到硬盘里去读数据,这会导致IO 时延急剧下降。这也不符合低时延设计目标。

       哪RamCloud是如何解决上面2个问题的呢?

      第一问题采用nvram卡, nvram其实就是内存条+备份电池+hdd或者ssd. 在正常供电时,读写的是内存,只有当掉电时,备份电池足够保证内存里的数据保存到ssd或者hdd.

      第二个问题采用快速恢复读取磁盘里的数据到内存里,RamCloud采用分布式恢复,在规模比较大的前提下,小于秒级恢复。

  采用nvram卡,又会引出其他问题,nvram卡的内存容量有限,主要受制于nvram卡的备份电池量有限。 如果nvram卡的内存大小有限,哪如果是连续写,最后nvram的cache失效,最后实际上和直接写硬盘一样。这个问题怎么解决呢? 我的思路是多个硬盘同时并发写nvram的数据。

0 0
原创粉丝点击