文档章节

mkcephfs创建集群过程分析

itfanr
 itfanr
发布于 2015/04/16 14:40
字数 751
阅读 410
收藏 1

$0指的就是mkcephfs

1. 校验conf文件,并创建随机的临时目录:


dir = /tmp/mkcephfs.jYWWOaxaTa


2 .执行 :$0 --prepare-monmap -d $dir -c $conf



1) 得到mon列表、mon的id以及mon的地址 :


mons=`$CCONF -c $conf -l mon | egrep -v '^mon$' | sort`

id=`echo $name | cut -c 4- | sed 's/^\\.//'`

get_conf addr "" "mon addr"

那么args:args =  --add 0 192.168.100.61:6789


2) 在$dir/monmap中创建monmap


$BINDIR/monmaptool --create --clobber $args --print $monmap || exit 1


在此之中,生成了fsid,并将 epoch 0 写入 /tmp/mkcephfs.jYWWOaxaTa/monmap


3) 复制ceph.conf文件:


cp $conf $dir/conf


至此,$0 --prepare-monmap -d $dir -c $conf 命令执行结束。


3. 只取出osd_list和mds_lilst组成name_list, 遍历name_llist并执行:



1)如果为远程主机,那么先调用scp推送conf 和monmap 到远程主机的临时目录 $host:$rdir:

rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`


2)do_root_cmd "$0 -d $rdir --init-daemon $name"


s1. 检查/var/run/ceph/$name.pid和/var/run/ceph/$name.asok,并创建相应的目录


s2 .如果$name的$type为osd,则:


$BINDIR/ceph-osd -c $conf --monmap $dir/monmap -i $id --mkfs --mkkey


get_conf osd_data "/var/lib/ceph/osd/ceph-$id" "osd data"

get_conf osd_keyring "$osd_data/keyring" "keyring"

$BINDIR/ceph-authtool -p -n $name $osd_keyring > $dir/key.$name


s3. 如果$type为mds,则:


get_conf mds_data "/var/lib/ceph/mds/ceph-$id" "mds data"

get_conf mds_keyring "$mds_data/keyring" "keyring"

test -d $mds_data || mkdir -p $mds_data

echo "creating private key for $name keyring $mds_keyring"

$BINDIR/ceph-authtool --create-keyring --gen-key -n $name $mds_keyring

$BINDIR/ceph-authtool -p -n $name $mds_keyring > $dir/key.$name


3) 如果带有--mkfs参数,那么同时格式化分区

do_root_cmd "$0 -d $rdir --prepare-osdfs $name"


4)如果为远程主机,从远程节点收集keys 


 scp -q $host:$rdir/key.$name $dir


4.  准备monitors,执行$0 -d $dir --prepare-mon $moreargs :


此时,moreargs已经包含了更多参数:numosd osdmap crushmapsrc  crushmap


1)如果useosdmap不为空,那么使用useosdmap:cp $useosdmap $dir/osdmap,否则根据conf文件创建通用的osdmap:

$BINDIR/osdmaptool --create-from-conf $dir/osdmap -c $conf


2) 得到crushmapsrc  :

get_conf crushmapsrc "" "crush map src" mon global

如果$crushmapsrc不为空,则根据crushmapsrc得到一个map文件,保存为$dir/crushmap:

$BINDIR/crushtool -c $crushmapsrc -o $dir/crushmap


3)得到crushmap:

get_conf crushmap "$usecrushmap" "crush map" mon global

如果$crushmap 不为空,则将$crushmap导入到$dir/crushmap:

$BINDIR/osdmaptool --import-crush $crushmap $dir/osdmap


4)产生admin keyring,保存到$dir/keyring.admin:

$BINDIR/ceph-authtool --create-keyring --gen-key -n client.admin $dir/keyring.admin


5)创建初始的monitor keyring:

s1.    cp $dir/keyring.admin $dir/keyring.mon


s2. $BINDIR/ceph-authtool -n client.admin --set-uid=0 \

--cap mon 'allow *' \

--cap osd 'allow *' \

--cap mds 'allow' \

$dir/keyring.mon


s3. $BINDIR/ceph-authtool --gen-key -n mon. $dir/keyring.mon --cap mon 'allow *'


6) 遍历$dir/key.*:


如果ktype为osd:

  $BINDIR/ceph-authtool -n $kname --add-key $secret $dir/keyring.mon \

--cap mon 'allow rwx' \

--cap osd 'allow *'

如果type为mds:

   $BINDIR/ceph-authtool -n $kname --add-key $secret $dir/keyring.mon \

--cap mon "allow rwx" \

--cap osd 'allow *' \

--cap mds 'allow'


5.遍历mon_list,并执行:


1)推送配置文件

如果为远程主机,先推送本地的$dir/* 到$rdir :

rdir=`mktemp -u /tmp/mkfs.ceph.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`

否则如果是本地主机,则cp $dir/conf /etc/ceph/ceph.conf


2)开始启动mon daemon:

do_root_cmd "$0 -d $rdir --init-daemon $name"


s1. 检查/var/run/ceph/$name.pid和/var/run/ceph/$name.asok,并创建相应的目录


s2.此时 $type为mon,则:


get_conf mon_data "/var/lib/ceph/mon/ceph-$id" "mon data"

mkdir -p "$mon_data"

$BINDIR/ceph-mon -c $conf --mkfs -i $id --monmap $dir/monmap --osdmap $dir/osdmap -k $dir/keyring.mon


6 .得到adminkerying:


get_conf adminkeyring "/etc/ceph/keyring" "keyring" global

cp $dir/keyring.admin $adminkeyring


© 著作权归作者所有

共有 人打赏支持
itfanr
粉丝 114
博文 467
码字总数 165540
作品 1
济南
程序员
私信 提问
加载中

评论(2)

itfanr
itfanr

引用来自“红薯”的评论

你也开始研究 #Ceph#
公司在用,木办法
红薯
红薯
你也开始研究 #Ceph#
Ubuntu下Ceph单节点和多节点安装小结

Ubuntu下Ceph单节点和多节点安装小结 崔炳华 2014年2月26日 1 概述 Ceph是一个分布式文件系统,在维持POSIX兼容性的同时加入了复制和容错功能。Ceph最大的特点是分布式的元数据服务器,通过C...

Yason_Luo
2014/04/04
0
0
单机Ceph从Firefly升级到Hammer

单机上部署了Firefly版的Ceph集群,其中包括:mon(一个)、osd(三个)和mds(一个)。单机上使用的操作系统是ubuntu-14.04-server-amd64版。此次升级的要求是数据不能丢失且不能停机升级。...

linuxhunter
2015/12/18
375
0
获取Ceph的CRUSH Map和CRUSH Map介绍

当你创建一个配置文件并用 mkcephfs部署Ceph, Ceph会在你的配置中生成一个默认CRUSH映射。默认CRUSH映射对你的Ceph sandbox环境很好。然而,当你部署一个大规模的数据集群,你应该着重考虑开...

dhb_oschina
2016/03/30
320
0
ceph 启动失败: unable to read magic from mon data.. did you run mkcephfs?

ceph 0.72 搭建两个osd,一个 mds+mon 初始化成功 mkcephfs -a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.keyring 启动失败: root@mon :/var/lib/ceph/mon/ceph-a# service ceph start ===......

Yashin
2014/04/10
1K
1
分布式存储Ceph的几种安装方法,源码,apt-get,deploy工具,Ubuntu CentOS

最近搞了下分布式PB级别的存储CEPH 尝试了几种不同的安装,使用 期间遇到很多问题,和大家一起分享。 一、源码安装 说明:源码安装可以了解到系统各个组件, 但是安装过程也是很费劲的,主要...

Yason_Luo
2014/04/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Python 批量修改图片exif属性

Python 批量修改图片exif属性 一共两个文件 config.ini  //放配置文件 exif.py   //主程序文件 config.ini 文件源码 [global]Artist = www.blmm.com ;作者DateTimeOriginal = now ;时...

阿锋zxf
31分钟前
0
0
一文说尽MySQL事务及ACID特性的实现原理

本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实现原理。MySQL 博大精深,文章疏漏之处在所难免,欢迎批评指正。 MySQL 事务基础概念 事务(Transaction)是访...

架构师springboot
53分钟前
8
0
Vue +Element UI后台管理模板搭建示例

一、蓝色主题 Element ui 后台管理 Demo https://github.com/taylorchen709/vueAdmin https://taylorchen709.github.io/vueAdmin/#/user Element ui 文档 http://element.eleme.io/#/zh-CN/......

tianma3798
今天
2
0
小白学习大数据的最详细的学习路线图就在这里

现如今大数据已经上升到国家战略层面,企业对于大数据的关注和重视程度也在不断提升。想要成为大数据工程师,大需要很多种基础理论知识与编程框架、分布式服务器等来支撑,这也是使得一个大数...

董黎明
今天
10
0
聊聊flink JobManager的High Availability

序 本文主要研究一下flink JobManager的High Availability 配置 flink-conf.yaml high-availability: zookeeperhigh-availability.zookeeper.quorum: zookeeper:2181high-availability.zo......

go4it
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部