开源混合存储方案(flashcache)

21
开开开开开开开开 Flashcache 开开 开开 开开开开开[email protected] http://yufeng.info

Upload: feng-yu

Post on 10-Jun-2015

32.720 views

Category:

Technology


5 download

DESCRIPTION

开源混合存储方案: 用Flashcache绑定固态盘和磁盘,利用二者的优点,实现高性能IO存储。

TRANSCRIPT

Page 1: 开源混合存储方案(Flashcache)

开源混合存储方案Flashcache

余锋 褚霸淘宝核心系统

[email protected]://yufeng.info

Page 2: 开源混合存储方案(Flashcache)

互联网业务特点

• 人多 • 请求是人发起的,天然读多写少(懒人多)• 熟人之间的关系,天然有热点

Page 3: 开源混合存储方案(Flashcache)

数据存储的需求

业务特点反应在存储上: • 数据量大• 读多写少• 有热点

Page 4: 开源混合存储方案(Flashcache)

机械硬盘特点

• 机械结构,寻道时间长,随机访问慢,高延迟时间• 顺序访问速度快• 每 GB 成本低,容量大• 机械故障,磨损少

Page 5: 开源混合存储方案(Flashcache)

固态盘特点

• 电子器件,无活动部件,可靠性高• 随机访问,无需寻道时间,低延迟时间• 每 GB 成本相对高,容量相当小• Nand 芯片有擦写寿命

Page 6: 开源混合存储方案(Flashcache)

如何利用二者的优点

• 硬盘的高容量,高顺序访问,低成本• 固态盘的高随机访问,低延迟时间

Page 7: 开源混合存储方案(Flashcache)

如何不多花钱呢?

欢迎 Flashcache 闪亮登场!

Page 8: 开源混合存储方案(Flashcache)

Flashcache 介绍

作者 Mohan Srinivasan源于 Facebook ,初始用于加速 MySQL InnoDB 引擎 IO 现在是通用的软件方案块设备加速器 内核模块 , 支持主流 64 位 Linux 更多访问: http://github.com/facebook/flashcache

Page 9: 开源混合存储方案(Flashcache)

Flashcache 在内核的层次

Page 10: 开源混合存储方案(Flashcache)

Flashcache 特性

• 免费,高性能• Device Mapper 层,对外服务体现方式是块设备,无需修改

应用• 支持 write back 和 write through 二种模式• 运行期状态可调整和查看

Page 11: 开源混合存储方案(Flashcache)

我有兴趣!!!

快告诉我如何用!

Page 12: 开源混合存储方案(Flashcache)

硬件设备

• PCI-E 高速 Flash 卡: /dev/vgca0• 硬盘: /dev/sda12

 

Page 13: 开源混合存储方案(Flashcache)

安装

 • 准备好你的源码树• make install

 

Page 14: 开源混合存储方案(Flashcache)

加载

if ( 初次) flashcache_create  cachedev /dev/vgca0 /dev/sda12else flashcache_load  cachedev /dev/vgca0 /dev/sda12 请稍候 ...

在 /dev/mapper 目录下看到我们的虚拟设备 cachedev  

我们的混合盘就绪了: /dev/mapper/cachedev

Page 15: 开源混合存储方案(Flashcache)

使用

• 裸盘使用• 安装文件系统 : mkfs.ext3 /dev/mapper/cachedev

Page 16: 开源混合存储方案(Flashcache)

微调参数

# sysctl dev.flashcache dev.flashcache.cache_all = 0dev.flashcache.reclaim_policy = 0dev.flashcache.dirty_thresh_pct = 90

Page 17: 开源混合存储方案(Flashcache)

Cache 管理

• 预加载文件: flashcache_cacheit  filename• 删除 Cache 中的文件: flashcache_trim filename• 添加进程名单: flashcache_addpids <device_name> w|b

pid1 • 删除进程名单: flashcache_delpids <device_name> w|b

pid1

Page 18: 开源混合存储方案(Flashcache)

查看状态

• # dmsetup status cachedev• # dmsetup table cachedev• # dmsetup info cachedev

Page 19: 开源混合存储方案(Flashcache)

移除设备

• # dmsetup remove cachedev• 耐心等候

 

Page 20: 开源混合存储方案(Flashcache)

效果呢?

固态盘 IO 能力 * 热点百分比还便宜!

Page 21: 开源混合存储方案(Flashcache)

谢谢大家!

Q&A