Dvd distributed block device
This presentation is the property of its rightful owner.
Sponsored Links
1 / 37

分布式块 设备 PowerPoint PPT Presentation


  • 89 Views
  • Uploaded on
  • Presentation posted in: General

DVD-Distributed block device . 分布式块 设备. 郭栋 092302. 目录. 背景 DBD 简介 客户端 设计 分布式存储策略 综合流程 相关 项目 demo. 背景. Iaas 提供商需要保证系统有高可用性 物理硬件故障无法预测 需要一种冗余备份机制 传统的 RAID 技术成本高,实现复杂 需要一种更灵活更简单的机制. 概念. DBD Distributed block device D: 在 Linux 下以设备方式使用 B: 设备模拟类似磁盘的块设备 D : 网络节点上的块设备数据分块冗余到各个 节点

Download Presentation

分布式块 设备

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Dvd distributed block device

DVD-Distributed block device

分布式块设备

郭栋 092302


2643079

目录

  • 背景

  • DBD简介

  • 客户端设计

  • 分布式存储策略

  • 综合流程

  • 相关项目

  • demo


2643079

背景

  • Iaas提供商需要保证系统有高可用性

  • 物理硬件故障无法预测

  • 需要一种冗余备份机制

  • 传统的RAID技术成本高,实现复杂

  • 需要一种更灵活更简单的机制


2643079

概念

  • DBD

    • Distributed block device

  • D:在Linux下以设备方式使用

  • B:设备模拟类似磁盘的块设备

  • D:网络节点上的块设备数据分块冗余到各个节点

  • 不是文件系统,不同于HDFS


2643079

主要模块

  • 客户端(计算节点)

    • 虚拟驱动模块(内核态)

    • 本地缓存服务模块

  • 服务端(存储节点)

    • 存储服务模块

    • 服务端缓存模块

    • 自动部署、恢复模块


2643079

整体架构

d

Tree-group storage cluster

Memcachediskcache

Client deamon

TCP

VBD

VBD

Hypervisor

VM

VM

客户端

存储集群


2643079

计算节点

Netlink

共享内存


2643079

计算节点组件

tcp

App

Memcache

Ddb client deamon

User sp

IO system call

netlink

Kernel sp

Diskcache

shm

Linux kernel

Device driver


2643079

组件关系

Dvdb client

控制信号

共享内存

netlink

IO请求

Device driver


2643079

缓存策略

  • 异步缓存,本地内存+本地硬盘二级缓存

  • 内存缓存用哈希表索引,LRU淘汰到硬盘

  • 本地硬盘缓存在内存中通过b+tree索引

yes

Mem cache

Disk cache

Read req

no

no

yes

TCP read

Set cache async


2643079

分布式存储策略

  • 数据均匀分布

  • 多个拷贝

  • 无单点故障

    • 一致性哈希存储(sheepdog)

    • 树组存储(DBD)


Sheepdog

一致性哈希存储(sheepdog)

  • 每个块设备被分为4M大小的object

  • 对象id哈希映射到环上

  • 采用虚拟节点均衡数据


2643079

另外一种方式

  • 一致性哈希缺点:

    • 数据倾斜

    • 虚拟节点容易造成数据丢失

    • 节点失效恢复难度大(异构分布式)

    • 数据难以管理

  • 树组存储

    • 同构分布+异构分布

      • 同构分布:多个数据拷贝

      • 异构分布:数据分散


2643079

基本概念

  • 组采用树型结构组织

  • 每个组由多个物理存储节点构成

  • 不同组数据异构

  • 相同组数据同构

  • 每个节点具有全局视图

  • 每个组有唯一32位id,组内节点id相同

  • 典型为二叉树形式


2643079

存储逻辑结构

00

01

10

11

00

01

10

11


2643079

DBD分布式存储特点

  • 数据:

    • 块设备分为4M大小的元组(tuple)

    • 每个tuple由唯一64位id索引,从0开始编号

    • 前32位为设备id,后32位为tupleid

      • 最多支持4294967296个设备

      • 最每个设备最大为16PB

  • 物理节点:

    • 每个节点用32位唯一id编号

    • 该编号为逻辑树节点编号

    • 数据存储在叶子节点上


2643079

存储方式

  • 根据64位tuple id的后32位计算存放的组

  • 例子:

    • Tuple id:0x0000 0000 0000 0002

00

01

10

11

00

01

10

11


2643079

数学模型

  • 对于一个树形结构,每个节点可由以下一维向量表示:

    id:节点的编号

    d:节点的度

    type:节点类型(内部节点、叶子节点)

    :该节点第一个数据的id

    D:该节点所有父辈节点度的积


2643079

-

0

1

2

01

11

12

02

002

102

202

3, 0, 1, 0, 0}

2, 1, 1, 2, 0}

3, 2, 1, 2, 6}

0, 3, 0, 14, 18}


2643079

  • 对于给定id的tuple,求其应该存放的节点id

  • 从根节点开始进行如下递归计算:

    N=根节点

    do{

    [(tuple_id-N)/D]%d

    N=

    } While(type != 0(叶子节点)


2643079

参数计算

  • D=父节点D * 父节点d


2643079

特殊情况(DBD)

  • 最典型的情况是二叉树,可递归使用异或计算,此时情况会变得特别简单

00

01

10

11

00

01

10

11


2643079

二叉树存储

  • 直接用叶子节点id与tuple id的后位进行异或计算,结果为0表示应该存在该节点。

00

01

10

11

00

01

10

11

…10010

…11110


2643079

增加节点(增加存储能力)

01

10

11

01

10

11

100

000

100

000


2643079

增加节点(增加备份)

00

01

10

11

00

01

10

11

00


2643079

节点移除(人为)

00

01

10

11

01

10

11


2643079

复用方式

00

01

10

11

00

01

10

11


2643079

等价效果

0

1

0

1


2643079

存取过程

  • 存:

    • 客户端连接集群中任意一个节点(Load Banlence),如果连接失败,选择另一节点,把tuple发给它,。

    • 节点将tuple.id 和各组id进行异或运算,得出目标组信息。


2643079

存取过程

  • 随机选择目标组内一个节点(LB),将数据传递给该节点,复制完毕后,进程立即返回,客户端返回写入成功。

  • 如果复制失败,该节点失效,发送广播信息到所有节点,通知移除该id节点,同时选择该组另一个节点复制数据。

  • 该节点收到数据后,发送组播消息,异步复制数据到同组节点。


2643079

存取过程

  • 取:

    • 客户端连接任意一个集群节点,发送请求(addr, size)

    • 该节点返回数据所在组的任一个节点ip给客户端,客户端重新连接目标节点,请求数据。


2643079

自动化部署、自恢复

  • 新节点加入:

    • 参数:组id

    • 广播信息到所有节点,所属组同步数据到节点后,广播新节点加入信息,节点更新全局视图

    • 如果判断是节点分裂(出现新高位1),该组迁移数据后,广播新节点加入信息。

  • 节点失效:

    • 在某次IO操作中发现,发现此节点失效的节点广播该信息,更新全局视图

  • 人为移除:

    • 该节点广播移除信息后结束进程。

  • 缩容:

    • 数据复制到最高位取0的group中

    • 广播退出信息,结束进程。


L andmarks

Landmarks

  • 单机虚拟块设备(√)

  • 本地内存虚拟块设备(√)

  • 双机网络虚拟块设备(进行中。。。)

  • 双机分割数据存储(todo)

  • Tree-group实现(todo)

  • 块存储到tree-group中(todo)


2643079

面临的问题

  • 驱动程序IO阻塞

  • 多设备如何并发?

  • Netlink or kernel socket?

  • Io数据边界和通信协议


2643079

类似项目

  • Sheepdog

  • Ndb

  • Dndb

  • Udisk

  • Amazon ebs


Dvbd distributed virtual block device

DVBD-Distributed virtual block device

分布式虚拟块设备

郭栋 092302


  • Login