分布式存储原理与实例解析
本专栏对分布式存储系统的原理进行介绍,并介绍具体的开源实例介绍原理在工程中的实际应用。本专栏涉及的存储系统包括Ceph,GlusterFS和ChubaoFS等。
数据存储张
这个作者很懒,什么都没留下…
展开
-
Ceph介绍之RBD实现原理
RBD是Ceph提供的块设备,本文将简要介绍一下其实现原理。Ceph官方文档告诉我们Ceph本质上也是对象存储。而且了解到,Ceph的块存储其实在客户端也会被分为若干个对象进行处理。也即,对于Ceph集群,存储数据的格式就行对象。如下图所示,从镜像(块存储的呈现形式)的信息可以看出,块存储的组成及属性。图 1 RBD镜像属性创建存储池的镜像之后,在存储池中会有相关的对象数据原创 2015-11-28 10:03:32 · 16382 阅读 · 2 评论 -
如何从零安装Ceph分布式存储|CentOS环境
版本信息具体安装之前对操作系统做如下限制,其它版本的操作系统不保证能够安装成功。操作系统:CentOS 6.5Ceph版本号:Hammer V10.2.3设备信息本安装教程假设有4台服务器(或者虚拟机),1台作为管理节点,另外3台作为存储节点。当然,也可以用存储节点中的一台作为管理节点。具体地址和主机名称如图所示。需要在各个服务器上添加解析,方法是...原创 2019-05-11 09:28:57 · 400 阅读 · 0 评论 -
Ceph对象存储RGW架构及安装实战
Ceph RGW架构简介我们知道Ceph可以提供块、文件和对象三种形态的存储。而RGW就是提供对象存储的网关,也即对象存储网关。所谓对象存储网关,也就是对象存储的入口,本质上是一个HTTP服务器,与Nginx和Apache无异。通过这个入口,用户可以通过HTTP协议,以RESTful的方式访问Ceph的对象存储。Ceph RGW的整体架构如图1所示,对象存储网关实际上是调用librados...原创 2019-05-21 15:52:04 · 2977 阅读 · 0 评论 -
Ceph的客户端接口及架构分析
Ceph的客户端通过一套名为librados的接口进行集群的访问,这里的访问包括对集群的整体访问和对象的访问两类接口。这套接口(API)包括C、C++和Python常见语言的实现,接口通过网络实现对Ceph集群的访问。在用户层面,可以在自己的程序中调用该接口,从而集成Ceph集群的存储功能,或者在监控程序中实现对Ceph集群状态的监控。上述接口与Ceph集群的关系如图1所示。图1 客户端与...原创 2019-05-25 10:34:44 · 2276 阅读 · 0 评论 -
Ceph块存储客户端架构及流程简析
Ceph可以提供文件、块和对象三种类型的存储形式,但最为主要的存储形式就是块存储。Ceph块存储可以直接与云计算平台进行对接,比如OpenStack等。另外,Ceph提供了访问块存储的API和内核模块。内核模块解决了通过裸机访问Ceph块存储的问题。本文主要介绍一下用户态块存储客户端的架构和基本的读写流程,后续再详细介绍内核模块客户端的实现。图1 Ceph的块存储在介绍客户端实现之前我...原创 2019-05-25 10:35:42 · 2412 阅读 · 0 评论 -
rdb map出錯rbd sysfs write failed
創建了一個rbd鏡像1然後,在Ceph client端將該rbd鏡像映射為本地設備時出錯。$ rbd map docker_test --name client.adminrbd: sysfs write failedRBD image feature set mismatch. You can disable features unsupported by the kernel ...转载 2019-05-21 20:08:00 · 841 阅读 · 0 评论 -
Ceph BlueStore的状态机
通过queue_transaction将IO送入BlueStore,之后bluestore通过状态机的方式控制整个IO流程。关键代码在BlueStore::_txc_state_proc()函数中。STATE_PREPAREthread: AioCompletionThread::_aio_thread()queue: aio_queue确认该txc是否还有io需要提交到ai...转载 2019-05-13 17:33:57 · 845 阅读 · 0 评论 -
ceph存储引擎bluestore解析
ceph后端支持多种存储引擎,以插件式的方式来进行管理使用,目前支持filestore,kvstore,memstore以及最新的bluestore,目前默认使用的filestore,但是因为filestore在写数据前需要先写journal,会有一倍的写放大,并且filestore一开始只是对于机械盘进行设计的,没有专门针对ssd做优化考虑,因此诞生的bluestore初衷就是为了减少写放大,并...转载 2019-05-13 17:34:57 · 4713 阅读 · 0 评论 -
Ceph BlueStore
Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction在介绍了B...转载 2019-05-23 10:53:59 · 1134 阅读 · 0 评论 -
Ceph BlueStore FreelistManager
Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-freelistmanager.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Int...转载 2019-05-23 10:55:35 · 685 阅读 · 0 评论 -
Ceph BlueStore Allocator
Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-allocator.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduct...转载 2019-05-23 10:56:36 · 1321 阅读 · 0 评论 -
Ceph BlueStore BlueFS
Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-bluefs.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction...转载 2019-05-23 10:57:37 · 2121 阅读 · 0 评论 -
Ceph BlueStore Cache
Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-cache.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction...转载 2019-05-23 10:59:19 · 1513 阅读 · 0 评论 -
数据一致性与Paxos算法
1. CAP与数据一致性1-1. CAP概要分布式系统的假设是,工作在网络环境下的系统拥有多个节点,而这些节点本身会由于各种原因而变得不稳定。这其中就有一个非常重要的概念——CAP原理。这个原理指导着大多数分布式系统的设计过程,CAP原理大致是说分布式系统中一定存在三个特性:一致性(Consistency)、分区容忍性(Partition)和可用性(Availability),且这三个特性...转载 2019-05-24 08:21:17 · 1805 阅读 · 0 评论 -
单机版Ceph环境部署,Linux平台
Ceph已经如火如荼,很多公司都在使用Ceph作为自己的存储系统。日常学习不太可能安装一个Ceph集群,因此本文介绍如何部署一个单节点的Ceph系统。另外,本文安装的后端存储引擎是BlueStore,这个引擎是目前性能比较好,且成熟的引擎。环境说明单节点:可以是VMWare或者VirtualBox虚拟机 操作系统: CentOS 7.4 或者 Ubuntu 18.04 部署...原创 2019-06-03 08:54:57 · 4103 阅读 · 0 评论 -
如何从零安装Ceph分布式存储|Ubuntu环境
版本信息具体安装之前对操作系统做如下限制,其它版本的操作系统不保证能够安装成功。操作系统:Ubuntu 14.04.3Ceph版本号:Hammer V0.94.5设备信息本安装教程假设有4台服务器(或者虚拟机),1台作为管理节点,另外3台作为存储节点。当然,也可以用存储节点中的一台作为管理节点。具体地址和主机名称如图所示。需要在各个服务器上添加解析...原创 2019-05-11 09:25:28 · 800 阅读 · 0 评论 -
基于centos7.5安装部署最新luminous版 ceph集群部署整合openstack
1.搭建部署1.1.基础环境1.1.1.配置yum源码设置yum源# 在全部控制与计算节点设置epel与ceph yum源(base yum源已更新),以node1节点为例; # epel:http://mirrors.aliyun.com/repo/[root@node1 ~]# wget -O /etc/yum.repos.d/epel-7.repo htt...转载 2019-05-15 21:28:25 · 672 阅读 · 0 评论 -
ceph 运维操作-OSD
1.说明1.1介绍OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。2. 常用操作2.1 查看osd状态$ ceph osd stat5 osds: 5 up, 5 in状态说明:集群内(in) 集群外(out) 活着且在运行(up) 挂了且不再运行(down)说明:...转载 2019-05-15 21:25:48 · 2957 阅读 · 0 评论 -
Ceph Calamari软件包介绍
Calamari包含4个主要的软件包,分别在Ceph集群和Calamari服务端。服务端接收Ceph集群端代理的数据,并通过Web加以呈现,具体如下:calamari-clients_1.2.1.1-29-g3790c24_all.deb(calamar客户端,WEBUI代码)calamari-clients-build-output.tar(同calamari-clients_1.2.1原创 2016-02-05 15:15:32 · 1505 阅读 · 0 评论 -
Ceph Calamari组件之Diamond
Diamond是一个数据采集器,可以采集CPU使用情况,磁盘使用情况等多达几十种服务器软硬件的信息。Calamari基于Diamond实现了对Ceph关键数据的采集。 采集的数据可以通过Handler发送到其它后端处理程序进行进一步的处理。后端可以普通的日志,也可以是其它程序,例如Graphite等。只需要简单的配置就能确定后端数据处理的方式。如图为Diamond软件结构示意原创 2016-02-05 15:43:51 · 1980 阅读 · 0 评论 -
Ceph命令之ceph
1. 命令描述ceph命令是一个工具集,用于手动部署和维护Ceph集群。其提供了各种命令集合,可以部署、维护或者管理MON、OSD、PG、MDS等组件。另外,ceph命令时间上是一个Python脚本,该命令本质上是对librados动态库的封装。2. 命令摘要ceph auth [ add | caps | del | export | get | get-key | get-翻译 2016-02-05 15:47:12 · 3576 阅读 · 0 评论 -
Ceph命令之ceph mon(Monitor管理)
本篇介绍Ceph Monitor的子命令,通过子命令的配合实现对MON的管理和配置。1. 添加(add)在某个地址上新增一个名字为的MON服务。示例:ceph mon add 2. 导出(dump)显示特定版本的MON map的格式化的信息,该命令可以指定MON map的版本信息,具体示例如下,参数为epoch:ceph mon dump {}ceph mon翻译 2016-02-05 15:53:54 · 13816 阅读 · 1 评论 -
Ceph Calamari安装问题汇总
在Ceph Calamari的安装(Ubuntu 14.04)过程中遇到很多问题,现总结如下:1 saltstack报错:The Salt Master has rejected this minion's public key!在启动salt minion的时候saltstack报错:The Salt Master has rejected this minion's public原创 2016-02-15 09:53:00 · 2287 阅读 · 0 评论 -
Ceph Calamari 安装(Ubuntu14.04)
1. 概述 Calamari的整个部署架构可以简化为下图,包含客户端和Calamari系统。而Calamari系统由Calamari服务端和运行在Ceph集群上的代理组成。代理不断将数据发送到Calamari服务端,后者将数据存储在数据库中。通过客户端可以通过HTTP协议连接Calamari服务端,并展现Ceph集群系统状态和信息。2. 服务端安装1) 安装salts原创 2016-02-05 15:33:43 · 2273 阅读 · 0 评论 -
分布式存储与传统存储架构
随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要或者虽然能满足要求,但各个服务器之间独立,严重降低了磁盘的利用率。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间,今天IT君给大家分享一下当前主流的存储架构。直连式存储(简称DAS)DAS存储是最为常见的存储形式之一,特别是其是在规模比较小的企业中...原创 2019-04-10 20:34:58 · 53445 阅读 · 0 评论 -
深入解析Ceph分布式存储的内核客户端
作者:Prashant Murthy 原文地址:https://engineering.salesforce.com/deep-dive-into-cephs-kernel-client-edea75787528随着云计算的发展,Ceph已经成为目前最为流行的分布式存储系统,俨然存储界的Linux操作系统。Ceph集块存储、文件存储和对象存储于一身,适用场景广泛,用户众多。本文是介绍Cep...原创 2019-04-22 09:20:07 · 1418 阅读 · 0 评论 -
如何从零安装Ceph分布式存储|CentOS环境
版本信息具体安装之前对操作系统做如下限制,其它版本的操作系统不保证能够安装成功。操作系统:CentOS 6.5Ceph版本号:Hammer V10.2.3设备信息本安装教程假设有4台服务器(或者虚拟机),1台作为管理节点,另外3台作为存储节点。当然,也可以用存储节点中的一台作为管理节点。具体地址和主机名称如图所示。需要在各个服务器上添加解析,方法是打开...原创 2019-04-23 08:44:27 · 426 阅读 · 0 评论 -
深入解析Ceph分布式存储的内核客户端
作者:Prashant Murthy 原文地址:https://engineering.salesforce.com/deep-dive-into-cephs-kernel-client-edea75787528译者:Sunny Zhang随着云计算的发展,Ceph已经成为目前最为流行的分布式存储系统,俨然存储界的Linux操作系统。Ceph集块存储、文件存储和对象存储于一身,适用场景...原创 2019-04-18 14:37:59 · 1700 阅读 · 0 评论 -
基于ceph-RBD的iSCSI-target实现分析
本文总结基于 ceph 存储后端的 iSCSI target 实现,针对几种可能的实现思路进行分析,并输出本文档,本文内容组织结构如下:描述本文的目的及内容; iSCSI 使用 ceph 作为存储后端的基本实现思路; 分别阐述几种可能的实现方式,分析其各自的特点和可能存在的一些技术障碍; 最后简单总结全文。问题提出ceph作为一个真正意义上的统一存储系统,有着很好的应用前景,但到目...转载 2019-05-13 17:50:51 · 2127 阅读 · 0 评论 -
ceph 网络层代码分析(1)
前言本文分析ceph 网络层的源码。 我们查看源代码路径src/msg下有3个子目录。simple async xio这三者个关系是并列关系,是网络层的三种实现。其中simple是老大哥,SimpleMessenger是网络层最早的实现。在06年,当时的网络编程模型还是线程当道,因此simple采用的就是这种简单粗暴的线程模型,每一对通信的peer之间创建四个线程维护连接状态(每...转载 2019-05-14 14:54:43 · 1012 阅读 · 0 评论 -
ceph存储 ceph集群osd故障自我检测
心跳是用于OSD节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。故障检测需要在故障的发现时间和心跳带来的负载之间做权衡,如果心跳频率太高则过多的心跳报文会影响系统性能,如果心跳频率过低则会延长发现故障节点的时间,从而影响系统的可用性。建立连接在大规模部署的场景中,如果任意两个OSD节点间都建立心跳连接将带来巨大的负担。尤其,当新加入一个OSD节点时这个负担就会几倍地增...转载 2019-05-14 16:59:26 · 619 阅读 · 0 评论 -
ceph 写流程(1)
前言前面花了两篇博客的篇幅介绍了读流程。写流程和读流程相比,有大量的流程走向是公用的,我将这些公共的流程总结如下:对于读流程而言,相对比较简单,这也是我们先介绍读流程的原因。先设置一个小目标,达成之后,对总体的大目标也有好处,相当于将大任务分解成了几个小任务。从 execute_ctx 开始,读写流程开始严重的分叉,下图是读流程的流程图写流程的三个侧面写流程之所以比...转载 2019-05-15 10:42:35 · 3235 阅读 · 0 评论 -
Ceph存储引擎BlueStore简析
前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD。同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真的不同介质),另外一个OSD所有内容放在一个裸设备上。什么是BlueStore在老版本的Ceph当中FileStore是默认的对象存储引擎,但FileStore最大的问题是写放大的问题。同时由于需...原创 2019-06-04 20:21:44 · 1214 阅读 · 0 评论