mkcephfs如何创建集群

84次阅读
没有评论

共计 3252 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章给大家分享的是有关 mkcephfs 如何创建集群的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

$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

感谢各位的阅读!关于“mkcephfs 如何创建集群”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3252字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)