ceph-简介及安装(luminous)版
什么是ceph:
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是开源软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。
ceph的核心组件:
Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS三大组件。
Ceph OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。
Ceph Monitor:由该英文名字我们可以知道它是一个监视器,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置。
Ceph MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。
查看各种Map的信息可以通过如下命令:ceph osd(mon、pg) dump
ceph架构:

Ceph系统逻辑层次结构:
自下向上,可以将Ceph系统分为四个层次:
- (1)基础存储系统RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储)
顾名思义,这一层本身就是一个完整的对象存储系统,所有存储在Ceph系统中的用户数据事实上最终都是由这一层来存储的。而Ceph的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这一层所提供的。因此,理解RADOS是理解Ceph的基础与关键。
- (2)基础库librados
这一层的功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS(而不是整个Ceph)进行应用开发。特别要注意的是,RADOS是一个对象存储系统,因此,librados实现的API也只是针对对象存储功能的。
RADOS采用C++开发,所提供的原生librados API包括C和C++两种。物理上,librados和基于其上开发的应用位于同一台机器,因而也被称为本地API。应用调用本机上的librados API,再由后者通过socket与RADOS集群中的节点通信并完成各种操作。
- (3)高层应用接口
这一层包括了三个部分:RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System),其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。
RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。RADOS GW提供的API抽象层次更高,但功能则不如librados强大。因此,开发者应针对自己的需求选择使用。
RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问性能。
Ceph FS是通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。
RADOS的存储逻辑架构

RADOS如图所示,RADOS集群主要由2种节点组成。一种是负责数据存储和维护功能的OSD,另一种则是若干个负责完成系统状态监测和维护的monitor。OSD和monitor之间相互传输节点的状态信息,共同得出系统的总体工作运行状态,并形成一个全局系统状态记录数据结构,即所谓的cluster map。这个数据结构和RADOS提供的特定算法相结合,便实现了Ceph“无需查表,算算就好”的核心机制和若干优秀特性。
在使用RADOS系统时,大量的客户端程序通过与OSD或者monitor的交互获取cluster map,然后直接在本地进行计算,得出对象的存储位置后,便直接与对应的OSD通信,完成数据的各种操作。可见,在此过程中,只要保证cluster map不频繁更新,则客户端显然可以不依赖于任何元数据服务器,不进行任何查表操作,便完成数据访问流程。在RADOS的运行过程中,cluster map的更新完全取决于系统的状态变化,而导致这一变化的常见事件只有两种:OSD出现故障,或者RADOS规模扩大。而正常应用场景下,这两种事件发生的频率显然远远低于客户端对数据进行访问的频率。
luminous版部署
http://docs.ceph.com/docs/master/start/
部署前准备
#设置主机名解析
[root@ceph-node1 ~]# cat /etc/hosts
192.168.0.122 ceph-node1
192.168.0.126 ceph-node2
192.168.0.127 ceph-node3 #配置yum源
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo #同步时间
[root@ceph-node1 ~]# yum install ntp ntpdate
[root@ceph-node1 ~]# ntpdate cn.ntp.org.cn
Feb :: ntpdate[]: adjust time server 202.108.6.95 offset -0.005293 sec #创建用户
[root@ceph-node1 ~]# useradd ceph-admin
[root@ceph-node1 ~]# echo "" | passwd --stdin ceph-admin #设置sudo权限
[root@ceph-node1 ~]# echo "ceph-admin ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ceph-admin
ceph-admin ALL = (root) NOPASSWD:ALL
[root@ceph-node1 ~]# cat /etc/sudoers.d/ceph-admin
ceph-admin ALL = (root) NOPASSWD:ALL
[root@ceph-node1 ~]# chmod /etc/sudoers.d/ceph-admin
[root@ceph-node1 ~]# sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers #设置免密钥登陆
[root@ceph-node1 ~]# su - ceph-admin
[ceph-admin@ceph-node1 ~]$ ssh-keygen
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node1
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node2
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node3
安装ceph-deploy
[ceph-admin@ceph-node1 ~]$ sudo yum install ceph-deploy python-pip python-setuptools -y
部署节点
[ceph-admin@ceph-node1 ~]$ mkdir my-cluster
[ceph-admin@ceph-node1 ~]$ cd my-cluster
[ceph-admin@ceph-node1 my-cluster]$ ceph-deploy new ceph-node1 ceph-node2 ceph-node3
[ceph-admin@ceph-node1 my-cluster]$ ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
[ceph-admin@ceph-node1 my-cluster]$ vim ceph.conf
[global]
fsid = cde2c9f7-009e-4bb4-a206-95afa4c43495
mon_initial_members = ceph-node1, ceph-node2, ceph-node3
mon_host = 192.168.0.122,192.168.0.126,192.168.0.127
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx public network = 192.168.0.0/
cluster network = 192.168.0.0/
mon clock drift allowed =
mon clock drift warn backoff =
安装ceph包,替代ceph-deploy install
[ceph-admin@ceph-node1 my-cluster]$ sudo yum install ceph ceph-radosgw
[ceph-admin@ceph-node2 ~]$ sudo yum install ceph ceph-radosgw
[ceph-admin@ceph-node3 ~]$ sudo yum install ceph ceph-radosgw
查看安装版本‘
[ceph-admin@ceph-node1 my-cluster]$ ceph --version
ceph version 12.2. (26dc3775efc7bb286a1d6d66faee0ba30ea23eee) luminous (stable)
初始化monitor,并收集所有密钥
[ceph-admin@ceph-node1 my-cluster]$ ceph-deploy mon create-initial [ceph-admin@ceph-node1 my-cluster]$ ll
total
-rw------- ceph-admin ceph-admin Feb : ceph.bootstrap-mds.keyring
-rw------- ceph-admin ceph-admin Feb : ceph.bootstrap-mgr.keyring
-rw------- ceph-admin ceph-admin Feb : ceph.bootstrap-osd.keyring
-rw------- ceph-admin ceph-admin Feb : ceph.bootstrap-rgw.keyring
-rw------- ceph-admin ceph-admin Feb : ceph.client.admin.keyring
-rw-rw-r-- ceph-admin ceph-admin Feb : ceph.conf
-rw-rw-r-- ceph-admin ceph-admin Feb : ceph-deploy-ceph.log
-rw------- ceph-admin ceph-admin Feb : ceph.mon.keyring
把配置拷贝到个节点
[ceph-admin@ceph-node1 my-cluster]$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
配置osd
for dev in /dev/sdb /dev/sdc /dev/sdd
do
deph-deploy disk zap ceph-node1 $dev
ceph-deploy osd create ceph-node1 --data $dev
deph-deploy disk zap ceph-node2 $dev
ceph-deploy osd create ceph-node2 --data $dev
deph-deploy disk zap ceph-node3 $dev
ceph-deploy osd create ceph-node3 --data $dev
done
[ceph-admin@ceph-node1 my-cluster]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda : 80G disk
├─sda1 : 1G part /boot
├─sda2 : 2G part [SWAP]
└─sda3 : 77G part /
sdb : 20G disk
└─ceph--a98a1209--9b95--40b5--a273--5a24399670f3-osd--block--67017f33--62e3--44e4--b9b2--461e1a591817 : 20G lvm
sdc : 20G disk
└─ceph--d1aac3cb--e1a7----a2ae--3146659ca059-osd--block--7c47ad95----45d5--b2b9--9f2db701d98a : 20G lvm
sdd : 20G disk
└─ceph--b84386fc--b02b--485e--99b5--94ab76e8f996-osd--block--b951860d--325c--48a6--9e98--3dfb2f676546 : 20G lvm
sr0 : 906M rom
部署mgr
[ceph-admin@ceph-node1 my-cluster]$ ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
#开启dashboard模块
[ceph-admin@ceph-node1 my-cluster]$ ceph mgr module enable dashboard
浏览器访问192.168.0.122:7000

ceph-简介及安装(luminous)版的更多相关文章
- ceph Luminous版手动安装零散记录
1.安装必要的依赖包,关防火墙,向/etc/hosts内添加域名等 2.安装ceph 配置yum源 (如果嫌慢,可以配置cachedir=/home/yum/$basearch/$releasever ...
- 001 Ceph简介
一.Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.Ceph分布式存储能够在一个统一的系统中同时提供了对象.块.和文件存储 ...
- VMware vSphere 5.1 简介与安装
虚拟化系列-VMware vSphere 5.1 简介与安装 标签: 虚拟化 esxi5.1 VMware vSphere 5.1 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- DNN简介以及安装
开源框架DNN简介以及安装 donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dn ...
- [转载]【虚拟化系列】VMware vSphere 5.1 简介与安装
转载自:http://mabofeng.blog.51cto.com/2661587/1017680 一. VMware vSphere 5.1简介 vSphere是VMware推 ...
- Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍
Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍 目录 简介 安装 入门指令 GUI 工具 C# 驱动介绍 简介 ANSI C 编写,开源,基于内存,可持久化,一个键值对的数据库, ...
- MySQL简介及安装
一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 04 MySQL发展 ...
- Redis系列(一):Redis的简介与安装
原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...
- Docker简介以及安装
Docker简介以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是容器 1.一种虚拟化方案 与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运 ...
- 【安装】Matlab7.0简介及安装
一.简介 Matlab下载官方版是美国MathWorks公司出品的商业数学软件,Matlab7.0下载官方版用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MAT ...
随机推荐
- 爬虫(GET)——传递要查询的关键字
工具:python3 目标:传递关键字,爬取任意关键字的页面 import urllib.request # 定义User-Agent,要爬取的url,以及要查询的关键字 headers = {&qu ...
- 《mac的git安装手册-2》
<mac的git安装手册-2> 下载地址 https://git-scm.com/downloads 如果遇到打不开的情况,请在系统偏好设置内——>安全性与隐私下 ——>选择仍 ...
- robotframework自动化测试之测试数据
相信很多人在做自动化测试的时候都会遇到一个问题,就是用例不能重复执行,比如名称不能重复,手机号码不能重复等等问题,或者在测试用例执行完后通过操作数据库把相关的数据删除: 那么怎么样让我们的测试用例能重 ...
- 2019.03.22 读书笔记 Linq中的IEnumerable与IQueryable
Linq主要分为 Linq to object .Linq to XML .Linq to sql(现在都用EF了). 针对object和sql,微软分别设计了两套接口IEnumerable.IQue ...
- B P5 第十三届北航程序设计竞赛预赛
https://buaacoding.cn/contest-ng/index.html#/188/problems 其实这题挺简单的. 注意到答案的大小最多是22 二分,check长度是mid的不同子 ...
- 查看服务器配置信息prtdiag与systeminfo实用命令
UNIX(SUN服务器)bash-2.05# prtdiag -v系统配置: Sun Microsystems sun4u Sun Fire V890系统时钟频率:150 MHz内存大小:3276 ...
- Tomcat启动时报错:“ Error starting static Resources”问题解决
部署测试环境的时候,需要用到Tomcat.故在Linux上部署了Tomcat,并将开发提供的工程包部署到Tomcat的webapps目录下,启动Tomcat,部署成功.第二天修改工程配置文件时,发现w ...
- 位于XDB的服务器localhost要求用户名和密码,端口占用
问题现象: 从MyEclipse启动部署在tomcat上的web程序后,出现如下问题: 然后访问tomcat主页(http://localhost:8080/),弹出如下对话框: 问题原因: 机器上安 ...
- Spring boot-(3) Spring Boot特性2
1. 外部配置 Spring Boot支持外部配置,以便可以在不同的环境中使用相同的应用程序代码.可以使用properties文件,YAML文件,环境变量或命令行参数进行外部配置.可以使用@Value ...
- Xtrareport 报表的一些属性及控件
基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而每个带区中都包含报表控件. ...