一、服务管理

(1)Sysinit(Centos)

命令格式:/etc/init.d/ceph  [options]  [command]  [daemons]

     示例:

     /etc/init.d/ceph  start  mon   #启动mon

      /etc/init.d/ceph  start  osd.0  #启动osd.0

      /etc/init.d/ceph stop     #关闭所有ceph组件

service  ceph   [command]  [daemons]

      示例:

      service   ceph  stop  mon

      service  ceph  stop  osd.0

      service  ceph   stop 

(2)sysinit (Ubuntu)

命令格式:[command]   ceph-[component]    id=[daemons]

        示例:

        start  ceph-mon  id=ubuntu-ceph-06

        start  mon   #启动mon

        start   ceph-osd  id=0    #启动osd.0

        stop   ceph-osd  id=0

        status   ceph-osd  id=0

(3)扩容

scale  up    向上扩展(相当于摩天大楼)

scale  out    向外扩展(相当于四合院)

dmesg 死机分析 ce dbvm 死机_ubuntu

查看节点硬盘储备

ceph-deploy  disk  list  [hostname]

        示例:

        ceph-deploy  disk  list  Ubuntu-ceph-07

使用ceph-deploy工具添加osd

ceph-deploy  osd   create  [hostname]:[disk]:[journal]

对于添加的硬盘若有分区表需要清空

ceph-deploy  disk   zap  [hostname]:[disk]

       可以直接在Create里指定  --zap-disk

create可以拆分成prepare、active两部分执行

日志大小

osd  journal  size = 5120     #默认大小5GB

(4)添加mon节点

在管理节点的配置目录下,使用ceph-deploy工具添加新的mon节点

更新配置文件,添加新的mon的信息

推送新的配置文件到所有节点,或者在添加时覆盖(ceph-deploy会提示)

使用ceph-deploy工具添加MON新节点

       ceph-deploy  mon  create  ubuntu-ceph-08

(5)删除osd

ceph-deploy相当不支持一键删除OSD

手动删除OSD

     停止OSD的相关进程,删除OSD有关的目录

     stop    ceph-osd    id=x

     从crush  map移除osd的信息(此时会进行rebuiding)

     ceph  osd  out  osd.x

     ceph   osd   crush   remove  osd.x

     删除OSD的认证信息

     cephauth  del   osd.x

    删除OSD

     ceph   osd  rm  x

(6)升级集群

原则:先中心再两边

升级MON:

      apt-get update ceph -y

      restart ceph-mon id=x

升级OSD

      apt-get update ceph -y

      restart ceph-osd id=x

二、CRUSH

(1)ceph数据读写流程

dmesg 死机分析 ce dbvm 死机_dmesg 死机分析_02

(2)CRUSH map在哪

dmesg 死机分析 ce dbvm 死机_Ubuntu_03

(3)什么是CRUSH

Controlled  Replication  Under  Scalable  Hashing(CRUSH)

dmesg 死机分析 ce dbvm 死机_dmesg 死机分析_04

CRUSH主要由“Device、Bucket Type、Bucket  Instance、Rule”这四部分组成

Device:devices由任意对象存储设备组成。每个OSD对应一个Device

Bucket Type:定义了CRUSH的分级结构的bucket类型。Bucket由逐级汇聚的存储位置(如row、host、room等等)及其权重组成。

Bucket  Instance:定义了桶类型后,还必须声明主机的桶类型、以及规划的其它故障域

Rule:PG选择bucket的规则

                                                                    CRUSH-multi_tree

dmesg 死机分析 ce dbvm 死机_Ubuntu_05



(4)定位OSD

ceph-crush-location  [--cluster  <cluster>]  --id  <id>  --type  <osd|mds|client>

示例:

ceph-crush-location  --id  2  --type  osd

(5)获取crush  map命令如下:

ceph osd getcrushmap   -o {compiled-crushmap-filename}

 

取得的map是个二进制文件,不能直接使用文本工具阅读,需要进行反编译,命令如下:

crushtool  -d  {compiled-crushmap-filename}  -o  {decompiled-crushmap-filename}

 

取得可编辑map之后,可以根据需求,设计相应的crush结构,来实现数据分落。编辑后首先进行编译成二jin
进制文件,如下命令:

crushtool  -c  {decompiled-crush-map-filename}  -o  {compiled-crush-map-filename}

 

最后把crushmap应用到ceph集群中,PG会根据新的map进行重新分布,如下所示:

ceph  osd  setcrushmap  -i  {compiled-crushmap-filename}

 

设置pool的crush rule

ceph  osd pool set  <poolname>  crush_ruleset 4      ##此处4是指rule里ruleset设置的值

 

添加bucket

ceph osd  crush add-bucket  <name>  <type>

 示例:   ceph  osd  crush  add-bucket  rack01  rack

 

移除bucket

ceph   osd  crush  remove   <name>   <location>

示例:ceph  osd  crush  remove  rack01   root=default

 

移动bucket

ceph   osd  crush  move   <name>   <location>

示例:ceph  osd  crush  move  rack01   root=default

 

添加OSD到crush map

ceph  osd  crush  add  {id-or-name}  {weight}  [{bucket-type}={bucket-name}  ...]

示例:ceph  osd  crush  add  osd.5  1.0  root=default  datacenter=dc1  room=room1  row=foo  rack=bar  host=foo-bar-1

 

移动OSD的crush位置

ceph  osd  crush create-or-move  {id-or-name}  {weight}  root={pool}  [{buckettype}={bucket-name}.....]

示例:ceph  osd  crush  create-or-move 4  0.09  root=default  host=host-192-168-0-17

 

从crushmap移除OSD

ceph  osd  crush  remove  {name}

示例:ceph  osd  crush remove  osd.3