基于分布式键值对系统 的 虚拟 块设备

21
基基基基基基基基基 基基基基基 演演 演演演 演演 演演演演 演演演演 :() 演演 演演演演 演演2010 演 6 演 22 演 演演演演 演演演演演演演

Upload: charla

Post on 26-Jan-2016

93 views

Category:

Documents


2 download

DESCRIPTION

基于分布式键值对系统 的 虚拟 块设备. 课题来源:阿里巴巴雲计算. 演讲:董浩亮 指导:戚正伟(副教授) 专业:软件工程 日期: 2010 年 6 月 22 日. 内容概览. 分布式存储现状 (1min) 分布式键值对系统特性 (1min) 块 设备的实现 可行性与系统架构 (2min) 用户态与内核态的通信 (2min) 快照机制的实现 (2min) 实验结果与分析 (3min) 结论 (1min) Q&A (8min). 分布式存储现状. Google File System 无法实现 POSIX 接口,通用性差 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基于分布式键值对系统 的 虚拟 块设备

基于分布式键值对系统的虚拟块设备

演讲:董浩亮指导:戚正伟(副教授)专业:软件工程日期: 2010 年 6 月 22 日

课题来源:阿里巴巴雲计算

Page 2: 基于分布式键值对系统 的 虚拟 块设备

内容概览

分布式存储现状 (1min)

分布式键值对系统特性 (1min)

块设备的实现• 可行性与系统架构 (2min)• 用户态与内核态的通信 (2min)• 快照机制的实现 (2min)

实验结果与分析 (3min)

结论 (1min)

Q&A (8min)

Page 3: 基于分布式键值对系统 的 虚拟 块设备

分布式存储现状

Google File System• 无法实现 POSIX 接口,通用性差

SAN + ISCSI• 需要专用硬件,成本高

PVFS 、 PNFS• 靠硬件的 RAID 实现高可靠

Page 4: 基于分布式键值对系统 的 虚拟 块设备

分布式存储现状(续)

性能 成本 通用性 可靠性

Google File System 较高 廉价 低 高

SAN+ISCSI 高 昂贵 高 适中

PVFS 较高 适中 高 低

Page 5: 基于分布式键值对系统 的 虚拟 块设备

分布式键值对系统特性

分布式键值对系统是个高可靠的哈希表• 每份数据存放 3 份,自动容错

两个基本操作• put(key, value)• value = get(key)

分布式键值对系统受到 CAP 理论制约• 数据一致性、可用性、分区容错性只能选二

Consistency

• 一致性

Availability

• 可用性

Partition tolerance

• 分区容错性1min

Page 6: 基于分布式键值对系统 的 虚拟 块设备

可行性与系统架构

块设备的两个基本操作的实现• 写操作—— put (设备 ID+ 扇区号,扇区内容)• 读操作——扇区内容 =get (设备 ID+ 扇区号)

dd if=/dev/zero of=/dev/vbd1 bs=1024 count=10

put(“vbd1:0”, “00000……”)put(“vbd1:1”, “00000……”)put(“vbd1:2”, “00000……”)

……

2min

Page 7: 基于分布式键值对系统 的 虚拟 块设备

可行性与系统架构(续)

系统架构图

应用程序

块设备驱动

KV Client用户态程序 KV Server

用户态

内核态

系统调用

网络

Page 8: 基于分布式键值对系统 的 虚拟 块设备

用户态与内核态通信

copy_to_user 与 copy_from_user

mmap

socket 通信

性能 安全性 扩展性 便捷性

copy_to_user 低 高 低 高

mmap 高 低 低 低

socket 通信 低 高 高 低

块设备驱动

用户态程序 用户态

内核态

4min

Page 9: 基于分布式键值对系统 的 虚拟 块设备

快照机制的实现

快照机制是另一种高可靠性的保证快照机制使用方法是写时复制 (COW)

扇区 1 扇区 2 扇区 3 扇区 4

数据 1 数据 2 数据 3 数据 4

扇区 1 扇区 2 扇区 3 扇区 4

数据 1 数据 2 数据 3 数据 4 数据 5

数据被修改

数据被回滚

6min

Page 10: 基于分布式键值对系统 的 虚拟 块设备

快照机制的实现(续 1)

使用 GBF 记录映射关系

扇区 1 扇区 2 扇区 3 扇区 4

1 (蓝) 1 (蓝) 1 (蓝) 1 (蓝)

扇区 1 扇区 2 扇区 3 扇区 4

数据 1 数据 2 数据 3 数据 4

当前状态:蓝当前状态:橙

保存副本

Page 11: 基于分布式键值对系统 的 虚拟 块设备

快照机制的实现(续 2)

使用 GBF 记录映射关系

扇区 1 扇区 2 扇区 3 扇区 4

数据 1 数据 2 数据 3 数据 4 数据 5

扇区 1 扇区 2 扇区 3 扇区 4

1 (蓝) 2 (橙) 1 (蓝) 1 (蓝)

当前状态:橙

保存副本

Page 12: 基于分布式键值对系统 的 虚拟 块设备

快照机制的实现(续 3)

使用 GBF 记录映射关系

扇区 1 扇区 2 扇区 3 扇区 4

1 (蓝) 1 (蓝) 1 (蓝) 1 (蓝)

扇区 1 扇区 2 扇区 3 扇区 4

数据 1 数据 2 数据 3 数据 4

当前状态:蓝

数据 5

取出副本

Page 13: 基于分布式键值对系统 的 虚拟 块设备

快照机制的实现(续 4)

有 GBF 占用的额外空间• 100G 的磁盘,块大小为 4096 ,记录 16 个状态• 100G / 4096×4 / 8 = 12.5M

有 GBF 之后的 Key 生成规则• 写操作—— put (设备 ID+ 扇区号 + 快照号,扇区内

容)• 读操作——扇区内容 =get (设备 ID+ 扇区号 + 快照

号)

Page 14: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析

实验使用的网络环境为千兆网实验中需要关闭 Linux 缓存实验中的 IO 调度算法为 NOOP

实验中将会修改块大小、后台集群规模

8min

Page 15: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析(续 1)

块设备与本地磁盘的性能对比

本地磁盘 关 Cache 开COW

开 Cache 关COW

开 Cache 开COW

0

10

20

30

40

50

60

写速度读速度

MB/S

Page 16: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析(续 2)

连续读写块大小对性能的影响

512 1024 2048 40960

5

10

15

20

25

30

35

40

写速度读速度

Byte

MB/S

Page 17: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析(续 3)

不同应用场景对写性能的影响

512 1024 2048 40960

2

4

6

8

10

12

14

16

18

512B1KB2KB4KB8KB

Byte

MB/S

Page 18: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析(续 4)

不同应用场景对读性能的影响

512 1024 2048 40960

5

10

15

20

25

30

35

40

512B1KB2KB4KB8KB

MB/S

Byte

Page 19: 基于分布式键值对系统 的 虚拟 块设备

实验结果与分析(续 5)

后台集群规模性能的影响

10 40 70 1000

5

10

15

20

25

30

写速度读速度

MB/S

Page 20: 基于分布式键值对系统 的 虚拟 块设备

结论

性能 成本 通用性 可靠性

Google File System 较高 廉价 低 高SAN+ISCSI 高 昂贵 高 适中PVFS 高 适中 高 低虚拟块设备 低 廉价 高 高

虚拟块设备弥补了现有分布式存储的不足虚拟块设备并不是存储的万能解决方案适用于要求数据高可靠,而对性能要求低的程序• 如文档存储、 Web 应用程序等

11min

Page 21: 基于分布式键值对系统 的 虚拟 块设备

Q&A

我现在愿意回答你的任何问题!