文档章节

ceph各个组件的安装

浪里个浪浪
 浪里个浪浪
发布于 2016/05/29 12:55
字数 3058
阅读 312
收藏 0

ceph中文文档

#增加一个osd 安装前准备(a主机部署了ceph-deplay需要在b主机上部署增加osd) 安装前需要配置ssh免密登录,和hosts,这里不记录了 ##【在b主机上】 增加ceph源 Vim /etc/yum.repo.d/ceph.repo

[ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

保存退出 开始安装ceph Yum install ceph –y 完毕之后初始化目录

#!/bin/sh
mkdir -p /data/ceph
mv /var/lib/ceph/* /data/ceph
rm -fr /var/lib/ceph
cd /var/lib
ln -s /data/ceph ceph
cd /var/log
rm -fr ceph
mkdir -p /data/ceph/log
ln -s  /data/ceph/log  ceph

初始化之后scp配置文件和keyring密钥环到/etc/ceph/目录 scp ceph.conf root@t102:/etc/ceph scp ceph.client.admin.keyring root@t102:/etc/ceph 之后就可以在机器上看到ceph的状态

Ceph –s
cluster 4236dc8e-709c-473e-a628-0800c62c51f9
health HEALTH_OK
monmap e3: 5 mons at {c207=192.168.12.07:6789/0,c208=192.168.12.08:6789/0,c209=192.168.12.09:6789/0,d139=192.168.3.139:6789/0,t81=192.168.2.81:6789/0}
election epoch 30, quorum 0,1,2,3,4 d139,c207,c208,c209,t81
mdsmap e80: 1/1/1 up {0=c207=up:active}, 1 up:standby
osdmap e2154: 56 osds: 56 up, 56 in
pgmap v236705: 2000 pgs, 2 pools, 38101 kB data, 29 objects
            6990 MB used, 15087 GB / 15094 GB avail
                2000 active+clean

到这里之后主机基本配置就已经完毕了 查看磁盘当前分区情况 ls /dev/sd* 如果发现有分区可以使用下面脚本删除

#!/bin/sh
fori in $(ls /dev/sd*|grep -v sda|grep -v 1)
do
    parted $i<<ESXU
    rm 1
    quit
    ESXU
Done

但是还有的用分区做了raid,但是没有清理映射,这样解除:

root@c209 ~]# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md127 : active (auto-read-only) raid5 sdh[6] sdf[4] sdd[2] sdj[8] sde[3] sdg[5] sdi[7] sdb[0] sdl[11] sdc[1] sdk[9]
2929049600 blocks super 1.2 level 5, 512k chunk, algorithm 2 [11/11] [UUUUUUUUUUU]

root@c209 ~]#mdadm --stop -s /dev/md127

保证磁盘干干净净,没有被其他程序占用之后就可以可是远程安装了。 ###【在a主机上】 部署脚本如下,h1是a主机的host,每3行一块盘,没有的自行屏蔽(听我的,直接直接用ts8,ssd真幸福)

#!/bin/sh

h1=t102

ceph-deploy --ceph-conf=/etc/ceph/ceph.conf disk zap $h1:/dev/sdb
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd  prepare  $h1:/dev/sdb
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd activate  $h1:/dev/sdb1:/dev/sdb2

ceph-deploy --ceph-conf=/etc/ceph/ceph.conf disk zap $h1:/dev/sdc
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd  prepare  $h1:/dev/sdc
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd activate  $h1:/dev/sdc1:/dev/sdc2

ceph-deploy --ceph-conf=/etc/ceph/ceph.conf disk zap $h1:/dev/sdd
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd  prepare  $h1:/dev/sdd
ceph-deploy --ceph-conf=/etc/ceph/ceph.conf  --overwrite-confosd activate  $h1:/dev/sdd1:/dev/sdd2

如此b机器上的osd就全部安装到位了

#卸载osd 如果要卸载一个osd,首先要将这个osd移出集群:

ceph osd out {osd-num}

运行了out之后,就会标准这块盘处于一个即将退盘的状态,他就会把自己的数据往外进行复杂转移,等待集群数据同步完毕之后就可以停止进程。

sudo /etc/init.d/ceph stop osd.{osd-num}

将osd从图中抹去,这样这块盘就不会在数据同步的列表中了

ceph osd crush remove {name}

将密钥环摘除

ceph auth del osd.{osd-num}

清理osd编号

ceph osd rm {osd-num}

具体看这里:http://docs.ceph.com/docs/master/rados/operations/add-or-rm-osds/和http://docs.openfans.org/ceph/ceph4e2d658765876863/ceph-1/ceph-storage-cluster3010ceph5b5850a896c67fa43011/deployment301090e87f723011/add-remove-osd-s-3010589e52a0-52209664osd3011

#增加mon Mon增加之前需要像上面的增加osd那样先去初始化好机器,特别是机器的hostname,ceph依赖高版本的内核,如果是操作系统首选centos7(centos6要退出历史舞台了),hostname中不要带- \等之类的特殊操作符号,就中规中矩字母+数字。安装好ceph各种包之后,然后初始化好目录,然后找一个临时目录比如/data/ceph/mon/tmp/ 导出mon的密钥环

ceph auth get mon. -o /data/ceph/mon/tmp/keyring

导出mon的现有图

ceph mon getmap -o /data/ceph/mon/tmp/monmap

制作mon的文件系统

ceph-mon -i t102 --mkfs --monmap /data/ceph/mon/tmp/monmap --keyring /data/ceph/mon/tmp/keyring

备注:要先创建好/data/ceph/mon/tmp/目录,做mon的文件系统命令中t102是一个自定义的编号(我这里用的是机器的hostname,建议你也这样)具体格式如下: sudo ceph-mon -i {mon-id} --mkfs --monmap {tmp}/{map-filename} --keyring {tmp}/{key-filename}

你看,是不是很简单,其实还有一步要注意一下,本来下来只需要启动mon进程就可以了,如下:

/etc/init.d/ceph start mon

但是你能会发现这样的错误(要多看看日志/var/log/ceph里):

2016-03-30 11:21:11.241145 7fb802dec880 0 mon.t102 does not exist in monmap, will attempt to join an existing cluster

2016-03-30 11:21:11.241362 7fb802dec880 -1 no public_addr or public_network specified, and mon.t102 not present in monmap or ceph.conf

大体的意思说mon.t102没有在mon的列表里,不能加到一个已经存在的集群中,说明白点就是先把你要新加的这个mon加到集群的配置map中才行。这样搞:

Ceph mon add <name> <IPaddr[:port]>

加到里面之后从上面从头到尾再来一遍就ok了。 对了,还有制作好mon的文件系统之后,要在对应的mon目录touch两个文件done和sysvinit 一个完整的mon目录大约长这个样子。

[root@c207 /data/lib/ceph/mon/ceph-c207]# ls

done keyring store.db sysvinit

#删除mon

有些东西,破坏起来总是很简单

停止mon进程

ceph -a stop mon.{mon-id}

或者 /etc/init.d/ceph stop mon

清理mon map

ceph mon remove {mon-id}

运维大多是起起停停,要想少点这种体力活,事先要有一个好的规划,比如mon的部署吧,mon线上一般需要至少三台机器,2n+1嘛,跟zookeeper一样,必须是个奇数,这样至少要保证n+1个节点是ok的就不会影响到文件系统,比如3个mon最多只能挂掉1个,5个最多可以挂2个,7个最多可以挂3个,以此类推。我们要搞异地容灾,两地三中心,采用2-2-1(总共5个节点)的方案,这样三个中心随便哪个数据中心被原子弹轰炸了,文件系统都不会受到影响(多好^_^)。

具体看这里:http://docs.ceph.com/docs/master/rados/operations/add-or-rm-mons/

#Cephfs 这个玩意相当的纠结(个人感受),本身ceph设计理念是无中心的,数据在哪算算就好。可偏偏cephfs就是有中心的(也就是所谓的master),我想可能没有某个文件系统是可以适配所有的文件场景的,cephfs(只是fs,注意区分)这种的结构和moosefs比较相似,都比较适合大量小文件的场景,我有时想,ceph可以精简一点,moosefs就怕metadata丢失,有的同学耗费精力去搞drbd,还不如用ceph的rbd做mfs的元数据盘,性能又好又安全。不过就是没有自动切换master的装置,还要自己去弄Keepalived实现,与其这样繁琐,还不如直接用cephfs,不过YY总是美好的。

列出文件系统列表

[root@c208 ~]# ceph fs ls

name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data]

删除一个文件系统

[root@c208 ~]# ceph fs rm cephfs

Error EINVAL: all MDS daemons must be inactive before removing filesystem

删除文件系统之前必须保证mds停机

/etc/init.d/ceph stop mds

将mds状态置为fail

[root@c207 /data/log/ceph]# ceph mds fail 0

failed mds.0

[root@c207 /data/log/ceph]# ceph mds stat

e56: 0/1/0 up, 1 failed

现在可以删除了

ceph fs rm cephfs --yes-i-really-mean-it

然后把对应的pool也清理掉

ceph osd pool delete {cephfs_metadatacephfs_metadata}--yes-i-really-really-mean-it

如果又想挂cephfs了,创建好metadata和datapool,然后看准pool编号,直接用如下的命令创建就好了,

ceph mds new fs 4 3 –yes-i-really-mean-it

记得在创建之前先把mds给启动起来。

具体看这里http://docs.ceph.com/docs/master/cephfs/createfs/

##Cephfs的挂载

首先要如上安装ceph-fuse相关的软件包,然后设置好配置文件,如下:

/etc/ceph/ceph.conf

[global]

fsid = 98523f30-600b-4ef8-b7c1-be05ee88439c

mon_host = 192.168.1.2,192.168.1.3,192.168.1.4

[client]

log file = /data/logs/ceph-client.log

keyring = /etc/ceph/keyring

然后要配置一下这个密钥环,可以如下查查:

ceph auth list

将client.admin的密钥环写入到/etc/ceph/keyring,别打懒复制粘贴,这里有一个坑,keyring的格式要正确,一般情况一下,他里面大约是这么写

[client.admin]

key=AQDFWtVWzPYkLBAAakzbeGIf/57BipUfdB4v3w==

注意[]和=,不是:重要的事情说一遍

出了什么错误就看log。

然后就是最后的挂载了:ceph-fuse /mnt/ceph(看,多么的漂亮、简单)

##Rbd的挂载

Rbd远程块设备的挂载需要内核支持,最好是tlinux2.0的系统,多谢os组把内核自动加上了,不过如果没有加载,可以尝试到这里找一下:

[root@p215 /mnt]# cd /lib/modules/3.10.90-1-tlinux2-0031.tl2/kernel/drivers/block/

fusion-io/ iomemory-vsl4/ rbd.ko

就是这个rbd.ko

insmod rbd.ko,然后modprobe rbd

Rbd挂载需要安装ceph的相关依赖的软件包,安装方法同上,同时需要像cephfs那样的ceph.conf的配置支持(不然rbd怎么知道到哪里去存数据啊),还要有对应的rbd pool。

这是一些比较常用的操作:

创建一个远程块设备,指定大小为100GB

rbd create --size 102400 foo(默认使用rbd的pool,也可以这样指定rbd create bar --size 1024 --pool swimmingpool)

查看块设备列表

rbd ls

产看块设备信息

rbd info foo

建立映射关系

rbd map rbd/foo --id admin --keyring /etc/ceph/keyring

查看映射关系

rbd showmapped

制作文件系统并挂载

mkfs.ext3 /dev/rbd1&&mount /dev/rbd1 /mnt/rbd

调节容量

rbd resize --size 2048 foo (to increase)

rbd resize --size 2048 foo --allow-shrink (to decrease)

取消映射关系

rbd unmap /dev/rbd/rbd/foo

删除块设备

rbd rm foo

#一些参考的测试数据: ##cephfs测试结果

[root@c207 /mnt/ceph]# dd if=/dev/zero of=1g bs=1M count=1024

记录了1024+0 的读入

记录了1024+0 的写出

1073741824字节(1.1 GB)已复制,9.20308 秒,117 MB/秒

[root@c207 /mnt/ceph]# dd if=/dev/zero of=512m bs=1M count=512

记录了512+0 的读入

记录了512+0 的写出

536870912字节(537 MB)已复制,4.4996 秒,119 MB/秒

[root@c207 /mnt/ceph]# dd if=/dev/zero of=5g bs=1M count=5000

记录了5000+0 的读入

记录了5000+0 的写出

5242880000字节(5.2 GB)已复制,45.2047 秒,116 MB/秒

大小文件写入数据正常,速度正常

文件覆盖写入数据正常

[root@c207 /mnt/ceph]# dd if=/dev/zero of=5g bs=1M count=5000

记录了5000+0 的读入

记录了5000+0 的写出

5242880000字节(5.2 GB)已复制,45.4655 秒,115 MB/秒

小文件写入速度

[root@c207 /mnt/ceph]# cat f/0

2016年 02月 18日星期四 20:45:00 CST

[root@c207 /mnt/ceph]# cat f/157000

2016年 02月 18日星期四 20:57:10 CST

总耗时12m10s=730s,平均一个客户端写入小文件速度为每秒215个

rbd写入测试结果

[root@c207 /mnt/rbd]# dd if=/dev/zero of=1g bs=1M count=1024

记录了1024+0 的读入

记录了1024+0 的写出

1073741824字节(1.1 GB)已复制,1.35318 秒,793 MB/秒

[root@c207 /mnt/rbd]# dd if=/dev/zero of=5g bs=1M count=5024

记录了5024+0 的读入

记录了5024+0 的写出

5268045824字节(5.3 GB)已复制,53.2081 秒,99.0 MB/秒

[root@c207 /mnt/rbd]# dd if=/dev/zero of=3g bs=1M count=3024

记录了3024+0 的读入

记录了3024+0 的写出

3170893824字节(3.2 GB)已复制,23.0463 秒,138 MB/秒

[root@c207 /mnt/rbd]# dd if=/dev/zero of=512m bs=1M count=512

记录了512+0 的读入

记录了512+0 的写出

536870912字节(537 MB)已复制,0.550973 秒,974 MB/秒

[root@c207 /mnt/rbd]# dd if=/dev/zero of=100m bs=1M count=100

记录了100+0 的读入

记录了100+0 的写出

104857600字节(105 MB)已复制,0.167676 秒,625 MB/秒

复写3g测试

[root@c207 /mnt/rbd]# dd if=/dev/zero of=3g bs=1M count=3024

记录了3024+0 的读入

记录了3024+0 的写出

3170893824字节(3.2 GB)已复制,23.1907 秒,137 MB/秒

© 著作权归作者所有

浪里个浪浪
粉丝 7
博文 120
码字总数 40303
作品 0
南宁
私信 提问
有状态容器实践:k8s集成ceph分布式存储

版权声明:本文为博主原创文章,转载请注明来源。开发合作联系luanpenguestc@sina.com https://blog.csdn.net/luanpeng825485697/article/details/82993323 Ceph安装原理 Ceph分布式存储集群...

数据架构师
2018/10/10
0
0
架构设计:系统存储(27)——分布式文件系统Ceph(安装)

1. 概述 从本篇文章开始介绍一款现在非常火的分布式文件系统Ceph,包括这款文件系统的安装、基本使用场景、常用管理命令和重要工作原理。特别是讨论了PaxOS算法的基本理后,就更容易理解Cep...

yinwenjie
2017/04/05
0
0
部署mimic版本的Ceph分布式存储系统

1.简介 Ceph: 开源的分布式存储系统。主要分为对象存储、块设备存储、文件系统服务。Ceph核心组件包括:Ceph OSDs、Monitors、Managers、MDSs。Ceph存储集群至少需要一个Ceph Monitor,Ceph ...

心远何方
2018/08/08
0
0
部署mimic版本的Ceph分布式存储系统

1.简介 Ceph: 开源的分布式存储系统。主要分为对象存储、块设备存储、文件系统服务。Ceph核心组件包括:Ceph OSDs、Monitors、Managers、MDSs。Ceph存储集群至少需要一个Ceph Monitor,Ceph ...

心远何方
2018/08/08
0
0
Ceph分布式存储学习笔记之jewel

本文介绍在Oracle Linux上创建配置ceph集群。Ceph软件代号为jewel。 一、操作系统设置 以下操作在每个ceph集群节点都要操作。 1、OS内核设置 2、软件仓库 3、禁用防火墙和Selinux 4、设置免密...

candon123
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

华为手机翻译功能怎么使用?这三种方法请务必收藏

华为手机翻译功能怎么使用?在我们的生活中会经常遇到翻译问题,许多外语不好的朋友该怎么办呢?华为手机已经为我们解决了这个问题,今天小编就教大家学会使用华为手机中的三种翻译技巧,需要...

翻译小天才
8分钟前
0
0
企业服务软件开发中需要注意的三个问题

在开发企业服务软件时,我们需要分为:业务需求、用户需求、产品需求,三大需求层次,三个层次互相关联,企业服务软件开发首先要服务业务,需要满足业务的需求,再关注用户体验,也就是用户需...

积木创意科技
11分钟前
1
0
C++容器底层数据结构

内置数组: int arr[10][10];memset(arr,0,10*10*sizeof(int)); //初始化int tmp[10][10];memcpy(arr, tmp, 10 * 10 * sizeof(int));//拷贝 void *memcpy(void *destin, void *source,......

SibylY
11分钟前
1
0
Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
39分钟前
6
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部