Ceph分层存储分析
最近弄Ceph集群考虑要不要加入分层存储 因此花了点时间研究了下
1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示

缓存层(A cache tier)为Ceph客户端提供更好的I/O性能,而数据存储在存储层(a backing storage tier)。用相对快速/昂贵的设备(比如SSD)创建pool作为缓存层(A cache tier),用纠删码池或者相对慢速/便宜的设备创建pool作为经济的存储池。Ceph(The Ceph objecter)负责对象存放的位置,分层代理(the tiering agent)确定什么时候把数据对象从缓存层(the cache)存储到存储层(the backing storage tier)。因此对Ceph客户端而言缓存层(the cache tier)和存储层(the backing storage tier)是完全透明的。
2,了解了结构图和基本概念 看到一个关键词 分层代理
所谓分层代理其实就是分层存储数据迁移方案,缓存分层代理负责在缓存层与存储层间的数据的自动迁移,然而管理员有权利配置数据如何迁移 有两种数据迁移模式 在下面附上自己见解
回写模式 :如果管理员配置缓存层为回写模式,CEPH客户端把数据写入缓存层,并且收到缓存层的ACK,写入缓存层的数据随后迁移到存储层,然后从缓存层清除,读取的话如果客户端要读取的数据在存储层,代理会把数据先迁移到缓存层,后再发往客户端,客户端与缓存层进行IO 大概流程如下所示

只读模式:客户端写数据到存储层,读数据的时候,ceph从存储层拷贝需要的数据到缓存层,根据定义好的规则,旧数据从缓存层删除 配上自己大概流程图

仔细分析两种模式 可以得知 第一种模式客户端只与缓存层进行交互 第二种模式客户端写入时直接与存储层进行交互
为什么进行这种设计,肯定是有不同的应用场景,第一种回写模式主要用于经常变动的数据,第二种只读模式主要用于不经常变动的数据,因为数据是从缓存层读取的,因此数据可能是过时的数据,换一句话说数据是弱一致的,因为客户端写入的时候是不经过缓存层的,缓存层并不能保证数据是最新的 而第一种模式可以保证这一点
3,分层存储的目的和缺点
无疑分层存储的目的在于更好的利用磁盘资源,可以将SSD作为缓冲层,HDD作为后端存储,这样热数据可以在SSD上被快读的读取,大量的冷数据在HDD上存储
个人认为有以下缺点(本人水平为在校研究生 不足之处请指正但请勿喷):
1:使用分层存储可能会引起性能的下降,因为数据要经常移出或读进缓冲,这会增加读取时间,缓冲 的有效应用场景应该是针对大文件,经常读而少写的数据。而且缓存需要足够大。(我们的应用场景是需要经常性频繁的读写小文件,因此觉得这可能不适用)
2:添加缓存层容易引起机制复杂性
3:进行性能测试时会显示出比较差的性能(确定真正的热数据需要昂贵的代价)
因为项目的原因自己有阅读深信服的技术白皮书 看了CEPH的分层存储方案 在这里对深信服的存储技术是怎么做的做一个介绍
1,整体结构


2,首次文件读操作


3,二次文件读操作


4,文件块首次写预缓存


5,文件块二次写更新缓存


看完深信服的存储方案,自己学习到了很多,无疑它的存储方案更加适用 贴上上述技术纯属分享 如有违权 请联系我我会及时删除 以上内容为自己心得 转载请注明出处
Ceph分层存储分析的更多相关文章
- Ceph的Block分析
一个块是一个连续的字节序列(例如一个512字节的连续数据是一个块).基于块的存储接口通常是旋转介质,例如磁盘.光盘.软盘等.块设备接口的普及使得可以用虚拟的块设备成为和大容量数据存储系统交互的接口,如 ...
- 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制
背景 毫无疑问,乘着云计算发展的东风,Ceph已经是当今最火热的软件定义存储开源项目.如下图所示,它在同一底层平台之上可以对外提供三种存储接口,分别是文件存储.对象存储以及块存储,本文主要关注的是对象 ...
- Linux 下的两种分层存储方案
背景介绍 随着固态存储技术 (SSD),SAS 技术的不断进步和普及,存储介质的种类更加多样,采用不同存储介质和接口的存储设备的性能出现了很大差异.SSD 相较于传统的机械硬盘,由于没有磁盘的机械转动 ...
- Ceph块存储介绍
1. 块存储是什么 块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 ,Ceph的块存储是基于RADOS的,因此它也借助R ...
- Ceph对象存储网关中的索引工作原理<转>
Ceph 对象存储网关允许你通过 Swift 及 S3 API 访问 Ceph .它将这些 API 请求转化为 librados 请求.Librados 是一个非常出色的对象存储(库)但是它无法高效的 ...
- 006.Ceph对象存储基础使用
一 Ceph文件系统 1.1 概述 Ceph 对象网关是一个构建在 librados 之上的对象存储接口,它为应用程序访问Ceph 存储集群提供了一个 RESTful 风格的网关 . Ceph 对象存 ...
- kafka系列四、kafka架构原理、高可靠性存储分析及配置优化
一.概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- ceph应用情况分析
1.概述 ceph是分布式的开源存储系统,同时支持块存储.对象存储和文件系统,ceph可以满足高性能.高可靠性和高扩展等特性. 目前ceph作为开源分布式存储已经被大量使用,尤其是在云环境下的应用,下 ...
- 基于LAMP php7.1搭建owncloud云盘与ceph对象存储S3借口整合案例
ownCloud简介 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于 ...
随机推荐
- NeHe OpenGL教程 第四十七课:CG顶点脚本
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- RelativeLayout_布局
RelativeLayout布局 android:layout_marginTop="25dip" //顶部距离 android:gravity="left" ...
- youtube不显示其他人头像
我用的是ss , 右键ss选择pac->编辑本地pac 把ggpht.com加入pac列表即可
- ios开发 iphone中获取网卡地址和ip地址
这是获取网卡的硬件地址的代码,如果无法编译通过,记得把下面的这几个头文件加上把. #include <sys/socket.h> // Per msqr#include <sys/s ...
- HTML音乐播放——切歌
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 自动化测试selenium+java 环境搭建
1.开发环境: a:安装jdk,配置java的环境变量 b:安装eclipse 工具.火狐浏览器(低版本) 2.下载selenium包 selenium-java-2.44.0.jar seleniu ...
- oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)
--查出所有现金中心的单位IDwith AllUnitas(select t.ORGANIZATIONID orgid,t.parentidfrom CDMS_ORGANIZATION t where ...
- 8.adr与ldr伪指令的区别
ldr和adr都是伪指令,区别是ldr是长加载.adr是短加载. 重点:adr指令加载符号地址,加载的是运行时地址: ldr指令加载符号地址时,加载的是链接地址.
- 退出系统时跳出frame框架
传统的系统界面,有iframe页面,当用户退出系统或者session过期或者非法请求时,都要使当前页面跳转到登录页面.比如用户点击注销的按钮在上面得top.jsp里面,方法:<a href=&q ...
- jquery表格增加删除后改变序号
有个小bug,懒得修了. 目的:增加一行的时候,td第一列排序. 删除一行的时候,td第一列排序 <!DOCTYPE HTML> <html> <head> < ...