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