开源混合存储方案(flashcache)
DESCRIPTION
开源混合存储方案: 用Flashcache绑定固态盘和磁盘,利用二者的优点,实现高性能IO存储。TRANSCRIPT
互联网业务特点
• 人多 • 请求是人发起的,天然读多写少(懒人多)• 熟人之间的关系,天然有热点
数据存储的需求
业务特点反应在存储上: • 数据量大• 读多写少• 有热点
机械硬盘特点
• 机械结构,寻道时间长,随机访问慢,高延迟时间• 顺序访问速度快• 每 GB 成本低,容量大• 机械故障,磨损少
固态盘特点
• 电子器件,无活动部件,可靠性高• 随机访问,无需寻道时间,低延迟时间• 每 GB 成本相对高,容量相当小• Nand 芯片有擦写寿命
如何利用二者的优点
• 硬盘的高容量,高顺序访问,低成本• 固态盘的高随机访问,低延迟时间
如何不多花钱呢?
欢迎 Flashcache 闪亮登场!
Flashcache 介绍
作者 Mohan Srinivasan源于 Facebook ,初始用于加速 MySQL InnoDB 引擎 IO 现在是通用的软件方案块设备加速器 内核模块 , 支持主流 64 位 Linux 更多访问: http://github.com/facebook/flashcache
Flashcache 在内核的层次
Flashcache 特性
• 免费,高性能• Device Mapper 层,对外服务体现方式是块设备,无需修改
应用• 支持 write back 和 write through 二种模式• 运行期状态可调整和查看
我有兴趣!!!
快告诉我如何用!
硬件设备
• PCI-E 高速 Flash 卡: /dev/vgca0• 硬盘: /dev/sda12
安装
• 准备好你的源码树• make install
加载
if ( 初次) flashcache_create cachedev /dev/vgca0 /dev/sda12else flashcache_load cachedev /dev/vgca0 /dev/sda12 请稍候 ...
在 /dev/mapper 目录下看到我们的虚拟设备 cachedev
我们的混合盘就绪了: /dev/mapper/cachedev
使用
• 裸盘使用• 安装文件系统 : mkfs.ext3 /dev/mapper/cachedev
微调参数
# sysctl dev.flashcache dev.flashcache.cache_all = 0dev.flashcache.reclaim_policy = 0dev.flashcache.dirty_thresh_pct = 90
Cache 管理
• 预加载文件: flashcache_cacheit filename• 删除 Cache 中的文件: flashcache_trim filename• 添加进程名单: flashcache_addpids <device_name> w|b
pid1 • 删除进程名单: flashcache_delpids <device_name> w|b
pid1
查看状态
• # dmsetup status cachedev• # dmsetup table cachedev• # dmsetup info cachedev
移除设备
• # dmsetup remove cachedev• 耐心等候
效果呢?
固态盘 IO 能力 * 热点百分比还便宜!
谢谢大家!
Q&A