基于分布式键值对系统 的 虚拟 块设备
DESCRIPTION
基于分布式键值对系统 的 虚拟 块设备. 课题来源:阿里巴巴雲计算. 演讲:董浩亮 指导:戚正伟(副教授) 专业:软件工程 日期: 2010 年 6 月 22 日. 内容概览. 分布式存储现状 (1min) 分布式键值对系统特性 (1min) 块 设备的实现 可行性与系统架构 (2min) 用户态与内核态的通信 (2min) 快照机制的实现 (2min) 实验结果与分析 (3min) 结论 (1min) Q&A (8min). 分布式存储现状. Google File System 无法实现 POSIX 接口,通用性差 - PowerPoint PPT PresentationTRANSCRIPT
基于分布式键值对系统的虚拟块设备
演讲:董浩亮指导:戚正伟(副教授)专业:软件工程日期: 2010 年 6 月 22 日
课题来源:阿里巴巴雲计算
内容概览
分布式存储现状 (1min)
分布式键值对系统特性 (1min)
块设备的实现• 可行性与系统架构 (2min)• 用户态与内核态的通信 (2min)• 快照机制的实现 (2min)
实验结果与分析 (3min)
结论 (1min)
Q&A (8min)
分布式存储现状
Google File System• 无法实现 POSIX 接口,通用性差
SAN + ISCSI• 需要专用硬件,成本高
PVFS 、 PNFS• 靠硬件的 RAID 实现高可靠
分布式存储现状(续)
性能 成本 通用性 可靠性
Google File System 较高 廉价 低 高
SAN+ISCSI 高 昂贵 高 适中
PVFS 较高 适中 高 低
分布式键值对系统特性
分布式键值对系统是个高可靠的哈希表• 每份数据存放 3 份,自动容错
两个基本操作• put(key, value)• value = get(key)
分布式键值对系统受到 CAP 理论制约• 数据一致性、可用性、分区容错性只能选二
Consistency
• 一致性
Availability
• 可用性
Partition tolerance
• 分区容错性1min
可行性与系统架构
块设备的两个基本操作的实现• 写操作—— 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
可行性与系统架构(续)
系统架构图
应用程序
块设备驱动
KV Client用户态程序 KV Server
用户态
内核态
系统调用
网络
用户态与内核态通信
copy_to_user 与 copy_from_user
mmap
socket 通信
性能 安全性 扩展性 便捷性
copy_to_user 低 高 低 高
mmap 高 低 低 低
socket 通信 低 高 高 低
块设备驱动
用户态程序 用户态
内核态
4min
快照机制的实现
快照机制是另一种高可靠性的保证快照机制使用方法是写时复制 (COW)
扇区 1 扇区 2 扇区 3 扇区 4
数据 1 数据 2 数据 3 数据 4
扇区 1 扇区 2 扇区 3 扇区 4
数据 1 数据 2 数据 3 数据 4 数据 5
数据被修改
数据被回滚
6min
快照机制的实现(续 1)
使用 GBF 记录映射关系
扇区 1 扇区 2 扇区 3 扇区 4
1 (蓝) 1 (蓝) 1 (蓝) 1 (蓝)
扇区 1 扇区 2 扇区 3 扇区 4
数据 1 数据 2 数据 3 数据 4
当前状态:蓝当前状态:橙
保存副本
快照机制的实现(续 2)
使用 GBF 记录映射关系
扇区 1 扇区 2 扇区 3 扇区 4
数据 1 数据 2 数据 3 数据 4 数据 5
扇区 1 扇区 2 扇区 3 扇区 4
1 (蓝) 2 (橙) 1 (蓝) 1 (蓝)
当前状态:橙
保存副本
快照机制的实现(续 3)
使用 GBF 记录映射关系
扇区 1 扇区 2 扇区 3 扇区 4
1 (蓝) 1 (蓝) 1 (蓝) 1 (蓝)
扇区 1 扇区 2 扇区 3 扇区 4
数据 1 数据 2 数据 3 数据 4
当前状态:蓝
数据 5
取出副本
快照机制的实现(续 4)
有 GBF 占用的额外空间• 100G 的磁盘,块大小为 4096 ,记录 16 个状态• 100G / 4096×4 / 8 = 12.5M
有 GBF 之后的 Key 生成规则• 写操作—— put (设备 ID+ 扇区号 + 快照号,扇区内
容)• 读操作——扇区内容 =get (设备 ID+ 扇区号 + 快照
号)
实验结果与分析
实验使用的网络环境为千兆网实验中需要关闭 Linux 缓存实验中的 IO 调度算法为 NOOP
实验中将会修改块大小、后台集群规模
8min
实验结果与分析(续 1)
块设备与本地磁盘的性能对比
本地磁盘 关 Cache 开COW
开 Cache 关COW
开 Cache 开COW
0
10
20
30
40
50
60
写速度读速度
MB/S
实验结果与分析(续 2)
连续读写块大小对性能的影响
512 1024 2048 40960
5
10
15
20
25
30
35
40
写速度读速度
Byte
MB/S
实验结果与分析(续 3)
不同应用场景对写性能的影响
512 1024 2048 40960
2
4
6
8
10
12
14
16
18
512B1KB2KB4KB8KB
Byte
MB/S
实验结果与分析(续 4)
不同应用场景对读性能的影响
512 1024 2048 40960
5
10
15
20
25
30
35
40
512B1KB2KB4KB8KB
MB/S
Byte
实验结果与分析(续 5)
后台集群规模性能的影响
10 40 70 1000
5
10
15
20
25
30
写速度读速度
MB/S
台
结论
性能 成本 通用性 可靠性
Google File System 较高 廉价 低 高SAN+ISCSI 高 昂贵 高 适中PVFS 高 适中 高 低虚拟块设备 低 廉价 高 高
虚拟块设备弥补了现有分布式存储的不足虚拟块设备并不是存储的万能解决方案适用于要求数据高可靠,而对性能要求低的程序• 如文档存储、 Web 应用程序等
11min
Q&A
我现在愿意回答你的任何问题!