【论文阅读】GearDB: A GC-free Key-Value Store on HM-SMR Drives with Gear Compaction


本文介绍了GearDB。SMR driver在顺序写/随机读领域有很大的应用优势。本文的目标在于消除基于SMR drive搭建的LSM-KVS垃圾回收所要的read-merge-write操作造成的开销较大以及造成的存储资源碎片化的问题。GearDB使用三种方式进行优化。下文进行分析。

introduction

1.SMR drives

叠瓦式硬盘:是垂直式硬盘(PMR)的一种延伸。

  • 因受物理极限的限制,磁道宽度(以及写入磁头的尺寸)只能缩小到一定的程度。不同于 PMR 不允许磁道相互重叠的做法,SMR HDD 采用的技术是让数据位循序写入,如其名称所示,磁道会如瓦片般堆叠在另一磁道的部分面积上,借此达到增加磁录密度的目的。同时读取的磁头大小也不相同,这样,读取磁头仍可从磁道上未被覆盖的部分来读取数据。
    叠瓦式硬盘与传统硬盘
  • 一旦已写入的数据要编辑或覆盖时,写入磁头并不会直接在既有的磁道上进行磁录,以避免损坏相邻磁道。编辑后的数据会先在磁盘上的空白处写入,原先旧数据的磁道会暂时维持不动。等到 HDD 闲置时才会执行重组机制,将原先磁道上的旧数据位自动擦除,并重新成为可用空间以供新数据写入。
  • 例如在上图之中,zone1中write pointer指向了Sector C+1,当要更新Sector中的内容时候。系统会加载Sectors A,B,C到缓存中,然后更新Sector1的内容最终写回。这样的机制导致严重的写放大,也影响了硬盘本身的性能。
  • 只要将指针指向zone的第一个block就可以将不含有有效数据的zone重新用作empty zone。
2.HM-SMR(host-managed)

三种SMR类型有:drive-managed, hostmanaged, host-aware

优势在于:

  • 容量大
  • 可预知的性能
  • total cost of ownership(购买成本、操作成本、维护成本)

这样HM-SMR满足了数据中心应用环境下需要可预知性能以及顺序写,随机读应用的需求。

3.在HM-SMR上搭建LSM-tree based KVS遇到的难点:
  • HM-SMR以及KVS上垃圾回收(冗余的读写)会损害性能。同时也会影响硬盘的空间使用率。
  • 当前的垃圾回收基本采用的是(greedy garbage collection),即简单的read-merge-write。
4.our work

从上述的论述我们知道想要在HM-SMR上搭建高性能,高空间利用率的LSM-tree based KVS面临的问题,因此本文提出了GearDB:

  • 提出了新的on-disk data layout:一个zone中仅仅存储来自同一个level的SSTable。这样避免了传统layout中一个zone多个level SSTable的情况。由于同个level的SSTable进行compaction的频率是基本一致的,因而直接避免了反复冗余的读取。
  • 对于每一级的LSM-tree都设置了compaction window。包含了该级的1/k的zones。设置窗口将compaction和相应的碎片化限制在某个区域当中。
  • 提出了新的compaction逻辑-Gear compaction,通过直接清空compaction window的操作,使得SMR-zone无需GC就可重新使用。
  • 基于levelDB进行搭建,发现随机写性能相较提升1.71倍,有效空间利用率达到了89.9%

motivation&&background

1. GC过程耗时很久

由于一个zone中分布着multi-level,不论是Cost-benefit GC policy还是greedy GC policy都占据大部分时间。

在这里插入图片描述

2.空间利用率不好

这里表达的不好指的是85%区域的空间利用率在45%到80%之间。我们期待是是双峰分布。即希望zone不是满就是空。

在这里插入图片描述

3. 空间利用率和性能的权衡

在这里插入图片描述


design-implementation

1.overview

在这里插入图片描述

2. a new on-disk data layout

2.1 传统的layout之后的SMR如下图:
在这里插入图片描述
2.2 新的方式是将同一个level的SSTable放置于同一个zone中,如overview中所示

这里,同一个level的SSTable自然可以占据多个zone,但是仅仅只有一个zone可以接受数据(writing zone)。
这种策略使得一个zone中的SSTable有相同的compaction frequency!从而减少了存储空间的碎片化,同时方便了后续的策略。

3.compaction window

在这里插入图片描述

注意:Scsi是level(i)的compaction window大小;Lli是level(i)的大小上限。

  • compaction window的作用在于将compaction操作限制在某个window中。

  • 在CW中充满的是invalid SSTable的时候就可以像zone一样修改指针变为空(无需数据迁)

  • 每个层次中不同的zones将会轮流成为CW以确保所有的SST都能参与compaction

  • 下面是转化的逻辑:
    在这里插入图片描述

1.A writing zone becomes a full zone once it is filled.
2/3. A writing zone or full zone can be added into a compaction window by rotation. 4.When all SSTables of a compaction window have been invalidated by gear compactions, the zones become empty
5.ready to serve write requests without incurring device-level garbage collection.

4.Gear compaction

4.1 Gear compaction algorithm
对于L(i)和L(i+1)之间的gear compaction,会将数据根据key range分为三个部分:

  • out of L(i+2)’s compaction window - written to L(i+1)
  • out of L(i+2)’s key range - dumped to L(i+2)

可以减少后续的WA(相对于写入L(i+1)之后在dump入L(i+2)中)

  • within L(i+2)’s compaction window - processed to passive compactions(比如和L(i+2)cw中的SSTable进行compaction)

注意为了避免数据被compaction到更高的层次。L(i+2)仅仅在Li+1达到该层大小限制并且and Li+2达到CW的大小限制。

下面将说明gear compaction流程。

1.L0和L1之间active compaction。将结果的数据分为三类。out of L2‘s’CW,in L2’s CW,out of L2’s keyrange
2.将第一类写入L1
3.将第三类dump进入L2
4.将第二类加入L2的CW进行后续compaction。
5.循环1-4步
注意:当写入L(i+2)的数据比一个SSTable来的小,就将这部分数据和写入L(i+1)的数据一同写入L(i+1)
在这里插入图片描述

4.2 sorted data devision
我们从上面的得知,需要比较key的范围将获得的数据分为三类。频繁的对比实际上加大了gear-compaction以及元数据管理的消耗,从而拖慢了性能。这里不论对于CW内或者外的SSTable,如果同一级中的SSTable key range gap 和其他的SSTables键值范围没有重复,就将这些key range合并成为一个大的连续范围。

例如 L(i+2)的CW中有两个SSTable,键的范围分别是a-b和c-d。这时候我们就去查看L(i+2)的其余SSTable。如果其余的SSTables没有键范围是和b-c重叠的。那么我们就可以将L(i+2)'s CW的键范围合并为a-d。这样就有效避免了过多的比较。

4.3 how compaction windows are reclaimed

  • 我们知道,对于充满invalid数据的CW,可以简单地通过修改指针的指向来重新声明为空。
  • 要想是的L(i+1)的CW中所有SSTable全部非法化就需要确保,L(i)中键和L(i+1)中重叠的的SSTables全部加入gear-compaction中。这样当所有的zones都轮流进入CW之后,我们得到L(i)中所有的SSTable。这种方式下,当k个L(i)中的CW被清除,就会有1个L(i+1)的CW被清除。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200906144858554.png#pic_center =400xS)

evaluation

1.load performance

在这里插入图片描述

2.read performance

在这里插入图片描述

3.zone space utilization

在这里插入图片描述

4.用时构成与写放大

在这里插入图片描述
在这里插入图片描述


[1]本文可参考的基于SMR搭建的KVS:LUO, Q., AND ZHANG, L. Implement object storage with smr based key-value store. In Storage Developer Conference (2015).
[2] greedy strategy of GC-[32]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值