Sheepdog介绍

17
刘源 淘宝核心系统内核组 2012 7 14 开源分布式块存储 Sheepdog

Transcript of Sheepdog介绍

Page 1: Sheepdog介绍

刘源淘宝核心系统内核组

2012 年 7 月 14 日

开源分布式块存储Sheepdog

Page 2: Sheepdog介绍

关于我● 曾在英特尔上海开源技术中心虚拟化小组实习,主要做

Moblin 、 Xen 的研发

● 2011 年 1 月加入淘宝

– 1 月到 8 月做内核方面的开发

– 9 月开始做分布式存储 (Sheepdog)

● 热爱开源, Linux 内核, Xen , KVM , QEMU , GIT 有一些补丁贡献。喜欢阅读源码和论文,从大型系统的设计与实现找到成熟的技术

● 目前是 Sheepdog 项目的核心开发,项目维护者之一

Page 3: Sheepdog介绍

提纲

● 虚拟化技术介绍● Sheepdog 介绍● Sheepdog 面临的主要问题● 社区开发介绍● 代码统计● Sheepdog 的应用● 问答

Page 4: Sheepdog介绍

虚拟化介绍● 软件虚拟化(半虚拟化 [Xen PV] ,二进制动态翻

译 [QEMU, Virtual box])

– X86 平台上二进制动态翻译历史最长● 硬件虚拟化(全虚拟化 [KVM, XEN HVM]

– 60 年代,硬件虚拟化技术影响着分时操作系统设计

● MULTIX[UNIX] 虚拟部分资源, CPU 和内存● IBM CP/CMS 虚拟全部资源

– X86 平台大约在 2003 年开始,学习大型机硬件虚拟技术

Page 5: Sheepdog介绍

X86 硬件虚拟化

● CPU 虚拟化 (成熟)– 改变指令集 ISA

● 内存虚拟化(成熟)– 单个 MMU-> 二层 MMU

● IO 虚拟化 ( 目前热点 )

– 增加 IOMMU

– 硬件直接分配给客户机

Page 6: Sheepdog介绍

Sheepdog 介绍● 开源的分布式块存储

– 2009 年由日本 NTT 实验室的 MORITA KAZUTAKA 创建

● 专为虚拟机提供块存储

– 并不完全拘泥于虚拟机,可提供一个虚拟的块设备。

● 无单点

● 低运维开销

– “ 零”配置

– 对内核文件系统无特性假设

– 节点变化无须人工参与即可恢复

– 数据动态均衡负载

– 支持虚拟机的热迁移、镜像快照、模板 & 克隆(快速安装部署)、集群快照

– 计算节点和数据节点混合模式

● 线性扩展,支持上千级别节点

Page 7: Sheepdog介绍

图片来自 http://www.osrg.net/sheepdog/

Page 8: Sheepdog介绍

整体架构

SheepGateway

VM

Sheepstore

SheepGateway

VM

SheepStore

SheepGateway

VM

SheepStore

SheepGateway

VM

Sheepstore

SheepGateway

VM

SheepStore

节点 A 节点 B 节点 C

Page 9: Sheepdog介绍

节点内部

VCPU VCPU

内核

QEMU虚拟机地址空间

PCPU PCPU

VM_ENTRYVM_EXIT

块设备模拟

Sheepdog 存储

读写请求

以太网

KVMeventfd

Page 10: Sheepdog介绍

数据管理● 虚拟机镜像被切分为 4M 大小的对象

– 对象稀疏存储– 每个对象由唯一的 64 位数字索引

– 每个对象有多个拷贝复制到节点上

图片来自 http://www.osrg.net/sheepdog/

Page 11: Sheepdog介绍

Sheepdog 面临的主要问题● 多个节点变化

– 节点加入时,有其它节点当掉 .

– 扩容,缩容等 .

● 数据平衡,节点存储权重

– 虚拟节点和一致性哈希减少恢复时间和数据迁移

● 节点变化时对虚拟机 IO 的影响

– 本地缓存模式,几乎无影响 (高性能)

– 无本地缓存,需要等待对象恢复 (高可靠性),请求重试

● 大规模节点的扩展性

– 目标是上几千节点的规模– 内部算法的扩展性

– 专门的节点控制集群

Page 12: Sheepdog介绍

社区开发介绍● 从一个人到社区

– 2009 年 9 月, Kazutaka宣布项目的成立● JAVA C→

– 2011 年 9 月淘宝开发人员加入开发● Farm, object cache, retry mechanism, recovery rewrite,

zookeeper driver, sheepfs, store rewrite, socket cache rewrite, event handling rewrite...

– 2012 年 3 月 Nebula 的 Christoph Hellwig 加入开发

● 目前代码树处于高速迭代的状态– 每个月合并 100+ 的补丁

– 活跃开发者 5 人 ( 补丁 30+)

● 需要更多的开发者和用户

Page 13: Sheepdog介绍

代码统计● 2011.9 ~ 2012.7

– 代码总计: 22,978

– 补丁总计: 731

– 淘宝修改的行数: 29,508

● 近 10 个月的活跃开发者 ( 补丁 30+)

tailai.ly@taobao:~/sheepdog$ git shortlog -ns ed24aea.. 306 Liu Yuan 142 Christoph Hellwig 128 MORITA Kazutaka 59 levin li 38 Yunkai Zhang

Page 14: Sheepdog介绍

补丁统计 ( 2011.9~ 2012.7 )

428142

14615

补丁比例图

TaobaoNTTNebulaother

SepOct

NovDec

JanFeb

MarApr

MayJun

0

20

40

60

80

100

120

140

160

180

200

38

7356

27 207

28

98

183

140

补丁数

Page 15: Sheepdog介绍

Seq Oct Nov Dec Jan Feb Mar Apr May Jun

0

200

400

600

800

1000

1200

154

368 352

221

8757

235

440

1083

641

邮件列表统计

Page 16: Sheepdog介绍

Sheepdog 的应用

● 数量很小,信息有限,一些小的 startup 和个人用户

● 淘宝目前主要用于开发测试环境

Page 17: Sheepdog介绍

问答