ceph 存储系统

概述

ceph是一个Linux PB级别的分布式存储系统,ceph的目标简单地定义为:
    可轻松扩展到PB容量
    对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽)
    高可靠性

与常见的集中式存储不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用多台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在这些机器的各个磁盘上

ceph架构

ceph架构大概可以划分为四部分:客户端(数据用户)、元数据服务器(缓存和同步分布式元数据)、一个对象存储集群(将数据和元数据作为对象存储)、集群监视器(执行监视功能)

ceph组件

ceph客户端

Linux显示文件系统的一个公共界面(通过虚拟文件系统VFS),ceph的用户视图就是透明的。管理员的视图肯定是不同的,考虑到很多服务器会包含存储系统这一潜在因素。从用户的角度看,他们访问大容量的存储系统,却不知道下面聚合成一个大容量的存储池的元数据服务器,监视器还有独立的对象存储设备。用户只是简单地看到一个安装点,在这个点上可以执行标准文件I/O

ceph元数据服务器

元数据服务器(cmds)的工作就是管理文件系统的名称空间(pools)。虽然元数据和数据两者都存储在对象存储集群,但两者分别管理,支持可扩展性。事实上,元数据在一个元数据服务器集群上被进一步拆分,元数据服务器能够自适应地复制和分配名称空间,避免出现热点。元数据服务器管理名称空间部分,可以(为冗余和性能)进行重叠。元数据服务器到名称空间的映射在 Ceph 中使用动态子树逻辑分区执行,它允许 Ceph 对变化的工作负载进行调整(在元数据服务器之间迁移名称空间)同时保留性能的位置
    元数据服务器管理 inode 空间,将文件名转变为元数据。元数据服务器将文件名转变为索引节点,文件大小,和 Ceph 客户端用于文件 I/O 的分段数据(布局)

ceph监视器

ceph包含实施集群映射管理的监视器,但是故障管理的一些要素是在对象存储本身中执行的。当对象存储设备发生故障或者新设备添加时,监视器就检测和维护一个有效的集群映射。这个功能按一种分布的方式执行,这种方式中映射升级可以和当前的流量通信。Ceph 使用 Paxos,它是一系列分布式共识算法

ceph对象存储集群

和传统的对象存储类似,Ceph 存储节点不仅包括存储,还包括智能。传统的驱动是只响应来自启动者的命令的简单目标。但是对象存储设备是智能设备,它能作为目标和启动者,支持与其他对象存储设备的通信和合作
    从存储角度来看,Ceph 对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。这个动作允许本地实体以最佳方式决定怎样存储一个对象。Ceph 的早期版本在一个名为 EBOFS 的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通知)调优。今天,B-tree 文件系统(BTRFS)可以被用于存储节点,它已经实了部分必要功能(例如嵌入式完整性)
    因为 Ceph 客户实现 CRUSH,而且对磁盘上的文件映射块一无所知,下面的存储设备就能安全地管理对象到块的映射。这允许存储节点复制数据(当发现一个设备出现故障时)。分配故障恢复也允许存储系统扩展,因为故障检测和恢复跨生态系统分配。Ceph 称其为 RADOS

ceph安装

安装环境
    Ceph-0.80.6
    Ubuntu-14.04 LTS

节点信息
    mon:192.168.234.131
    osd0:192.168.234.132
    osd1:192.168.234.133

ceph的一个好处就是没有中心节点,这样以来任何两个节点在存储系统中都是对等的。官方文档的介绍是使用一个admin节点来部署monitor和osds,如下图

这里我们使用一个简化的方式,admin节点用monitor节点来代替。刚才说过,ceph是没有中心节点的,所以ceph完全是可以自己来部署自己

安装前的准备

为每个节点添加磁盘用于对象存储集群

$ parted /dev/sdb
(parted) mklable gpt	#使用gpt分区表
(parted) mkpart primary xfs 0 100%
(parted) quit

$ mkfs.xfs /dev/sdb1	#使用xfs文件系统,单个文件大小没有上限

    添加软件源

$ wget -q -O- ‘https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc‘ | sudo apt-key add -
$ echo deb http://ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
$ sudo apt-get update && sudo apt-get install ceph-deploy

添加hosts信息

在所有节点hosts文件中添加如下信息
192.168.234.131 mon
192.168.234.132 osd0
192.168.234.133 osd1

同步时间

在mon节点上安装ntp服务器
$ sudo apt-get install ntp
设定其他节点与mon节点进行时间同步
$ sudo ntpdate 192.168.234.131

在所有节点添加ceph专用用户

$ sudo useradd –d /home/ceph –m ceph –s /bin/bash
$ sudo passwd ceph

添加sudo权限

$ echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
$ sudo chmod 0440 /etc/sudoers.d/ceph

    设置adminmon)节点与osds节点ss互通

$ su – ceph
$ ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/home/ceph/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ceph/.ssh/id_rsa.
Your public key has been saved in /home/ceph/.ssh/id_rsa.pub.
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]

    配置config文件

编辑mon节点 /home/ceph/.ssh/config文件添加如下信息
Host mon
   Hostname mon
   User ceph
Host osd0
   Hostname osd0
   User ceph
Host osd1
   Hostname osd1
   User ceph
如果不添加此文件,每次在执行ceph-deploye命令的时候需要指定 –username选项

部署对象存储集群

在这个过程中,我们创建一个对象存储集群,包括一个ceph monitor和三个ceph osd daemon。当这个集群达到 active+clean 的状态时,再扩展这个集群,添加一个元数据服务器(metadate server)和更多的ceph monitor
    ceph-deploy命令会输出文件到当前目录下,并且会利用输出的文件。在整个执行的过程中,我们都是用ceph用户

    
切换到ceph
用户

# su – ceph

创建命令执行目录并授权给ceph

$ sudo mkdir /my-cluster
$ sudo chown ceph:ceph /my-cluster
$ cd /my-cluster

创建集群

$ ceph-deploy new mon

为所有节点安装部署ceph

$ ceph-deploy install mon osd0 osd1

添加ceph monitor

$ ceph-deploy mon create-initial

添加osds

$ ceph-deploy osd prepare mon:/dev/sdb1 osd0:/dev/sdb1 osd1:/dev/sdb1
$ ceph-deploy osd activate mon:/dev/sdb1 osd0:/dev/sdb1 osd1:/dev/sdb1

拷贝配置文件和admin keyadmin节点和其他节点

$ ceph-deploy admin mon osd0 osd1
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
拷贝之后可以使用ceph命令行而不用指定monitor地址和ceph.client.admin.keyring

    查看ceph状态

$ ceph health
$ ceph status

    添加元数据服务器(mds

$ ceph-deploy mds create mon

接下来就可以使用ceph了

添加存储

ceph可以用作文件存储、块存储、对象存储。这里以块存储来演示ceph的使用

创建存储池(pools

$ ceph osd pool create ceph-pool 256 256

创建块存储设备

$ rbd create ceph-block –size 20480 –pool ceph-pool
size是以MB为单位

将块存储设备映射到本地并挂载使用

$ sudo modprobe rbd
$ sudo rbd map ceph-block –pool ceph-pool
$ rbd showmapped

$ sudo mkfs.ext4 /dev/rbd1
$ mount /dev/rbd1 /mnt
$ cd /mnt
$ ls
lost+found

inkscope安装

inkscope是一个ceph的监控和管理接口,使用nosql解决方案,使用mongodb存储实时热数据和历史数据,两种数据来源于不同的收集器
inkscope:https://github.com/inkscope

准备工作

    inkscope

将inkscope下载后解压缩到 /var/www/inkscope目录

安装apche2mongodb

# apt-get install apache2 mongodb

安装inkscopeViz

修改Apache端口

# vim /etc/apache2/port.conf
Listen 8080

创建虚拟主机配置文件

# vim /etc/apache2/site-available/inkScope.con
<VirtualHost *:8080>
    ServerName  localhost
    ServerAdmin [email protected]

    DocumentRoot /var/www/inkscope/
    <Directory "/var/www/inkscope/">
        Options All
        AllowOverride All
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    WSGIScriptAlias /inkscopeCtrl /var/www/inkscope/inkscopeCtrl/inkscopeCtrl.wsgi
    <Directory "/var/www/inkscope/inkScopeCtrl">
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    ProxyRequests Off  # we don‘t want a "forward proxy", but only a "Reverse proxy"
    ProxyPass /ceph-rest-api/ http://192.168.234.131:5000/api/v0.1/

    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

 启动代理并添加inkScope

# a2enmod proxy_http
# service apache2 restart
# a2ensite inkScope

安装inkscopeCtrl

 添加必要的软件

# apt-get install libapache2-mod-wsgi
# apt-get install python-pip

 配置inkscopeCtrl

执行inkScopeCtrl目录中的install.sh脚本生成配置文件 /opt/inkscope/etc/inkscopeCtrl.conf编辑配置文件
# vim /opt/inkscope/etc/inkscopeCtrl.conf
{
"mongodb_host" : "192.168.234.131",
    "mongodb_port" : "27017",
    "mongodb_user" :"ceph",
    "mongodb_passwd":"",
    "is_mongo_authenticate" : 0,
    "radosgw_url": "http://192.168.234.131",
    "radosgw_admin": "admin",
    "radosgw_key": "11111",
    "radosgw_secret": "11111",
    "cluster": "ceph",
    "is_mongo_replicat" : 0,
    "mongodb_set" : "host_mongodb1:port,host_mongodb2:port,host_mongodb3:port",
    "mongodb_replicaSet" : "replicaset_name",
    "mongodb_read_preference" : "ReadPreference.{your_read_preference_choice}"
}

安装inkscopeProbe

 准备工作

修改mongodb配置
# vim /etc/mongodb.conf
bind_ip = 0.0.0.0
port = 27107

安装必要的软件包

# apt-get install python-dev
# easy_install psutil
# esay_install pymongo

安装

执行inkscopeProbe目录中的install.sh 脚本生成配置文件和执行文件
sysprobe:收集系统信息,必须被安装在所有ceph节点
cephprobe:收集集群信息,只需要安装在某一个ceph节点

 修改sysprobe.conf配置文件

# vim /opt/inkscope/etc/sysprobe.conf
{
"mongodb_host" : "192.168.234.131",
    "is_mongo_replicat" : 0,
    "mongodb_set" : "mongodb0:27017,mongodb1:27017,mongodb2:27017",
    "mongodb_replicaSet" : "replmongo0",
    "mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED",
    "mongodb_port" : 27017,
    "is_mongo_authenticate" : 0,
    "mongodb_user":"ceph",
    "mongodb_passwd":"",
    "cluster": "ceph",
    "mem_refresh": 60,
    "swap_refresh": 600,
    "disk_refresh": 60,
    "partition_refresh": 60,
    "cpu_refresh": 30,
    "net_refresh": 30,
    "mem_window": 1200,
    "swap_window": 3600,
    "disk_window": 1200,
    "partition_window": 1200,
    "cpu_window": 1200,
    "net_window": 1200
}

修改cephprobe.conf配置文件

# vim /opt/inkscope/etc/cephprobe.conf
{
"mongodb_host" : "192.168.234.131",
  	"is_mongo_replicat" : 0,
  	"mongodb_set" : "mongodb0:27017,mongodb1:27017,mongodb2:27017",
  	"mongodb_replicaSet" : "replmongo0",
  	"mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED",
  	"mongodb_port" : 27017,
  	"is_mongo_authenticate" : 0,
  	"mongodb_user":"ceph",
  	"mongodb_passwd":"",
  	"cluster" : "ceph",
  	"ceph_conf": "/etc/ceph/ceph.conf",
  	"ceph_rest_api": "192.168.234.131:5000",
  	"status_refresh": 3,
  	"osd_dump_refresh": 3,
  	"pg_dump_refresh": 60,
  	"crushmap_refresh": 60,
  	"df_refresh": 60,
  	"cluster_window": 1200,
  	"osd_window": 1200,
  	"pool_window": 1200
}

 启动服务

在mon节点执行
# ceph-rest-api –n client.admin

[email protected]:/opt/inkscope/bin# python sysprobe.py start
[email protected]:/opt/inkscope/bin# python cephprobe.py start
[email protected]:/opt/inkscope/bin# python daemon.py
在其他节点上执行
[email protected]:/opt/inkscope/bin# python sysprobe.py start
[email protected]:/opt/inkscope/bin# python daemon.py

状态图

时间: 2024-08-02 12:30:48

ceph 存储系统的相关文章

Ceph存储系统(ceph安装,inkscope安装)--未完

Ceph存储系统 概述 ceph是一个Linux PB级别的分布式存储系统,ceph的目标简单地定义为: 可轻松扩展到PB容量 对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽) 高可靠性 与常见的集中式存储不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用多台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散地存储在这些机器的各个磁盘上 ceph架构 ceph架构大概可以划分为四部分:客户端(数据用户).元数据服务器(缓存和同步分布

Ceph分布式存储系统

Ceph分布式存储系统 Ceph是根据加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上).高性能及高可靠性.Ceph其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是"Sammy",一个香蕉色的蛞蝓,就是头足类中无壳的软体动物.这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻. 其设计遵循了三个原则:数据与元数据的分离,动态的分布式的元数据管理,可靠统一的分布

解析Ceph和9000分布式存储

 Ceph是呼声很高的开源分布式的SDS产品存储系统.同时提供对象存储.块存储和文件系统存储三种功能,满足不同应用需求.Ceph使用C++语言开发,遵循LGPL协议开源.Sage Weil(Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护.2014年Redhat收购 inktank公司,并发布Inktank Ceph企业版,业务场景聚焦云.备份和归档,支持对象和块存储应用.从此出现Ceph开源社区版本和Redhat企业版. OceanStor 9000是

ceph结构和工作原理

Ceph是统一分布式存储系统,具有优异的性能.可靠性.可扩展性.Ceph的底层是RADOS(可靠.自动.分布式对象存储),可以通过 LIBRADOS直接访问到RADOS的对象存储系统.RBD(块设备接口).RADOS Gateway(对象存储接口).Ceph File System(POSIX接口)都是基于RADOS的. Ceph存储系统的逻辑层次结构如下图所示: 自下向上,可以将Ceph系统分为四个层次: (1)基础存储系统RADOS(Reliable, Autonomic,Distribut

ceph分布式存储实战(3)——ceph内部组件

一.RADOS(Reliable Autonomic Distributed Object Storage)1.rados的意思是    可靠.自动.分布式对象存储(可靠的自主分布式对象存储)2.rados的作用    1.rados是ceph集群的基础,是ceph存储系统的核心,ceph中一切都是以对象的形式存储,而rados就是负责存储这些对象,无需考虑数据是啥类型    2.确保数据的一致性和可靠性    3.负责数执行数据的复制.故障检测和恢复    4.负责数据在集群节点之间的迁移和再

ceph简介

1.初认ceph刚到公司后,开始接触软件存储产品,发现都是基于一个叫ceph的开源解决方案来做的.后来慢慢开始关于ceph的一些基础知识和相关操作.接触的产品囊括了ceph所支持的块存储,对象存储和文件存储. 2.ceph来源ceph产生于Sage Weil大神大学时期的相关研究课题的论文,之后逐渐为大众所熟知,Sage Weil后来开办公司主导ceph的开发与社区维护. 3.ceph的特性(1) 高可靠性:所谓"高可靠",首先是针对存储在系统中的数据而言,也即,尽可能保证数据不会丢失

Gluster vs Ceph:开源存储领域的正面较量

https://www.oschina.net/news/49048/gluster-vs-ceph 引言:开源存储软件Ceph和Gluster能够提供相似的特性并且能够为用户节省不小的开支.那么谁更快?谁又更易用呢? 开源的Ceph及Red Hat旗下的Gluster都是成熟的技术,但兴许不久之后就将经历某种重生了.随着存储产业开始向扩展性存储及云的方向发展,将不断会有基于这些低价的软件技术的产品推向市场,而对这些自集成解决方案的补充在近一年来不断涌现. Ceph与Gluster在原理上有着本

ceph分布式存储介绍

一.Ceph简介:        Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统.ceph 的统一体现在可以提供文件系统.块存储和对象存储,分布式体现在可以动态扩展.在国内一些公司的云环境中,通常会采用 ceph 作为openstack 的唯一后端存储来提高数据转发效率.       Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区.在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用.RedHat及O

Ceph 架构以及原理分析

一.架构 Ceph在一个统一的系统中独特地提供对象,块和文件存储. Ceph高度可靠,易于管理且免费. Ceph的强大功能可以改变您公司的IT基础架构以及管理大量数据的能力. Ceph提供了非凡的可扩展性 - 成千上万的客户端访问数PB到数十亿的数据. Ceph节点利用商用硬件和智能守护进程,Ceph存储集群可容纳大量节点,这些节点相互通信以动态地复制和重新分配数据. 二.RADOS-ceph存储集群 Ceph提供基于RADOS的无限可扩展Ceph存储集群,您可以在RADOS中阅读 - 一个可扩