zoukankan      html  css  js  c++  java
  • 二 Ceph存储工作原理及实现

      认识Ceph

      ceph是一个能提供文件存储,快存储和对象存储的分布式存储系统。它提供了一个可无限伸缩的Ceph存储集群

      ceph构架

      参考官网:https://ceph.io/

      中文官网:http://docs.ceph.org.cn/

       ceph架构

      中文图示

       RADOS:Ceph的高可靠,高可拓展,高性能,高自动化都是由这一层来提供的, 用户数据的存储最终也都是通过这一层来进行存储的。

        可以说RADOS就是ceph底层原生的数据引擎, 但实际应用时却不直接使用它,而是分为如下4种方式来使用

      LIBRADOS是一个库, 它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言。如Python,C,C++等.  简单来说,就是给开发人员使用的接口。
      CEPH FS通过Linux内核客户端和FUSE来提供文件系统。(文件存储)
      RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。(块存储)
      RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。(对象存储)

      

      ceph存储数据方法(IO算法)

      1,File用户需要读写的文件。File->Object映射

      a.ino(File的元数据,File的唯一id)

      b.ono(File切分产生的某个object序号,默认以4M分一个快大小)

      c.oid(object id:ino+ono)

      2,Object是RADOS需要的对象,Ceph指定一个静态hash函数计算oid的值,将oid映射成一个近似均匀分布的伪随机值,然后和mask按位相于,得到pgid.Object->PG映射

      a.hash(oid)& mask->pgid

      b.mask=PG总数m(m为2的整数幂)-1

      3.PG(Placement Group)用途是对object的存储进行组织和位置映射(类似于redis cluter里面的slot概念)一个PG里面会有很多object。采用CRUSH算法将pgid代入其中,然后得到一组OSD。PG-》OSD映射

      a.CRUSH

      

      拓展名词

      RESTFUL: RESTFUL是一种架构风格,提供了一组设计原则和约束条件,http就属于这种风格的典型应用。REST最大的几个特点为:资源、统一接口、URI和无状态。

      资源: 网络上一个具体的信息: 一个文件,一张图片,一段视频都算是一种资源

      统一接口:  数据的元操作,即CRUD(create, read, update和delete)操作,分别对应于HTTP方法
        * GET(SELECT):从服务器取出资源(一项或多项)。
        * POST(CREATE):在服务器新建一个资源。
        * PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
        * PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
        * DELETE(DELETE):从服务器删除资源。
        * URI(统一资源定位符):  每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以。最典型的URI即URL
       * 无状态: 一个资源的定位与其它资源无关,不受其它资源的影响。

      

      S3 (Simple Storage Service 简单存储服务): 可以把S3看作是一个超大的硬盘, 里面存放数据资源(文件,图片,视频等),这些资源统称为对象.这些对象存放在存储段里,在S3叫做bucket.

      和硬盘做类比, 存储段(bucket)就相当于目录,对象就相当于文件

      硬盘路径类似`/root/file1.txt`

      S3的URI类似`s3://bucket_name/object_name`

      

      swift: 最初是由Rackspace公司开发的高可用分布式对象存储服务,并于2010年贡献给OpenStack开源社区作为其最初的核心子项目之一.

  • 相关阅读:
    [Ramda] allPass, propEq
    [Elm] Installing and setting up Elm
    [Node.js] Use nodejs-dashboard event loop delay with hrtime()
    [Node.js] Use Realm Object Database with Node.js
    [CSS] Manipulate Images Using CSS Filter and Blend Modes
    Android实现弹出输入法时,顶部固定,中间部分上移的效果
    [置顶] linux下让php支持mysql——寻找消失的mysql
    Conversion between json and object using SBJson lib
    Linux2.6内核--中断线被关闭的情况
    字符串、十六进制、byte数组互转
  • 原文地址:https://www.cnblogs.com/minseo/p/13414855.html
Copyright © 2011-2022 走看看