ceph crush进阶

ceph 集群中由mon服务器维护的5中运行图

 monitor负责监控整个集群的监控状态,以及维护集群成员关系状态、对等节点的状态,和集群的配置信息等。Ceph monitor通过维护cluster map的主复制来实现这些功能。

1,monitor map: 它包含监视节点端到端的信息,包括Ceph集群ID、monitor节点名称(hostname)、IP地址和端口号等。它还保存自monitor map被创建以来的最新版本号(epoch:每种map都维护着其历史版本,每个版本被称为一个epoch,epoch是一个单调递增的序列)。以及最后修改时间等。查看monitor map的命令 

root@ceph-deploy:~# ceph mon dump

2,OSD map: 它保存一些常用的信息,包括集群ID、OSD map自创建以来的最新版本号(epoch)及其最后修改时间,以及存储池相关的信息,包括存储池名称、ID、类型、副本级别(replication level)和PG。它还保存着OSD的信息,比如数量、状态、权重、最后清理间隔(last clean interval)以及OSD节点的信息。查看OSD map的命令 ,每个OSD 6s 汇报一次状态 ,检测到其他OSD状态,检测不到20s后剔除

root@ceph-deploy:~# ceph osd dump

3,PG map:它保存的信息包括PG的版本、时间戳、OSD map的最新版本号(epoch)、容量已满百分比(full ratio,是指集群被认为容量已满时的最大使用百分比,此时Ceph集群禁止客户端读写数据)、容量将满百分比(near full ration,是指集群被认为容量将满时的最大使用百分比,此时Ceph集群将发出告警)等。它还记录了每个PG的ID(其格式为{pool-num}.{pg-id})、对象数量、状态、状态时间戳(state stamp)、up OSD sets(一个up OSD set指某些特定PG map版本的PG的所有副本所在的OSD列表,该I列表是有序的,第一个OSD为主OSD,其余为从OSD)、acting OSD sets(acting OSD set指该PG的所有副本所在的OSD的列表),以及清理(scrub)的信息。查看PG map的命令

root@ceph-deploy:~# ceph pg dump

4,CRUSH map: 基于OSD map创建新的PG组合列表用于存储数据。它保存的信息包括集群设备列表、bucket列表、故障域(failure domain)分层结构、保存数据时用到的为故障域定义的规则(rules)等。查看crush map命令

root@ceph-deploy:~# ceph osd crush dump

5,MDS map: 它保存的信息包括MDS map当前版本号(epoch)、MDS map的创建和修改时间、数据和元数据存储池的ID、集群MDS数量以及MDS状态。查看命令

root@ceph-deploy:~# ceph mds metadata

 

obg--pg hash(oid)%pg==pgig

obj--osd crush根据当前mon运行图返回pg内的最新的OSD组合,数据即可开始往主写然后往副本同步

crush算法针对目的节点选择

5种算法 Uniform List Tree Straw Straw2(默认)

root@ceph-deploy:~# ceph osd df

ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
0 hdd 0.04880 1.00000 50 GiB 73 MiB 51 MiB 4 KiB 22 MiB 50 GiB 0.14 0.90 175 up

WEIGHT

REWEIGHT

root@ceph-deploy:~# ceph osd crush reweight osd.3 10000 #立即生效 加pG

MIN/MAX VAR: 0.52/2.13 STDDEV: 0.09

root@ceph-deploy:~# ceph osd df 
ID  CLASS  WEIGHT       REWEIGHT  SIZE     RAW USE  DATA     OMAP    META     AVAIL    %USE  VAR   PGS  STATUS
 0    hdd      0.04880   1.00000   50 GiB  134 MiB   94 MiB   4 KiB   40 MiB   50 GiB  0.26  1.41  201      up
 1    hdd      0.04880   1.00000   50 GiB   89 MiB   64 MiB   5 KiB   26 MiB   50 GiB  0.17  0.94  172      up
 2    hdd      0.04880   1.00000   50 GiB   80 MiB   48 MiB   4 KiB   31 MiB   50 GiB  0.16  0.84  187      up
 3    hdd  10000.00000   1.00000   50 GiB  205 MiB  161 MiB   4 KiB   44 MiB   50 GiB  0.40  2.16  512      up
 4    hdd      0.04880   1.00000   50 GiB   51 MiB   14 MiB   5 KiB   36 MiB   50 GiB  0.10  0.54    8      up
 5    hdd      0.04880   1.00000   50 GiB   49 MiB   18 MiB   4 KiB   31 MiB   50 GiB  0.10  0.52   12      up
 6    hdd      0.04880   1.00000   50 GiB   74 MiB   38 MiB   3 KiB   35 MiB   50 GiB  0.14  0.77  169      up
 7    hdd      0.04880   1.00000   50 GiB  120 MiB   86 MiB   3 KiB   35 MiB   50 GiB  0.23  1.26  141      up
 8    hdd      0.04880   1.00000   50 GiB   54 MiB   22 MiB   7 KiB   31 MiB   50 GiB  0.11  0.57  134      up
                           TOTAL  450 GiB  856 MiB  546 MiB  43 KiB  309 MiB  449 GiB  0.19   

root@ceph-deploy:~# ceph osd crush reweight osd.3 0  #迁移到0

root@ceph-deploy:~# ceph osd  reweight 0 0.5  #减少pg

root@ceph-deploy:~# ceph osd df 
ID  CLASS  WEIGHT   REWEIGHT  SIZE     RAW USE  DATA     OMAP    META     AVAIL    %USE  VAR   PGS  STATUS
 0    hdd  0.04880   0.50000   50 GiB   72 MiB   27 MiB   4 KiB   45 MiB   50 GiB  0.14  0.70   85      up
 1    hdd  0.04880   1.00000   50 GiB  109 MiB   78 MiB   5 KiB   31 MiB   50 GiB  0.21  1.08  227      up
 2    hdd  0.04880   1.00000   50 GiB  122 MiB   81 MiB   4 KiB   40 MiB   50 GiB  0.24  1.20  200      up
 3    hdd        0   1.00000   50 GiB   62 MiB   12 MiB   4 KiB   50 MiB   50 GiB  0.12  0.61    0      up
 4    hdd  0.04880   1.00000   50 GiB  138 MiB  111 MiB   5 KiB   27 MiB   50 GiB  0.27  1.36  249      up
 5    hdd  0.04880   1.00000   50 GiB  101 MiB   63 MiB   4 KiB   37 MiB   50 GiB  0.20  0.99  263      up
 6    hdd  0.04880   1.00000   50 GiB  107 MiB   66 MiB   3 KiB   40 MiB   50 GiB  0.21  1.05  174      up
 7    hdd  0.04880   1.00000   50 GiB  117 MiB   73 MiB   3 KiB   44 MiB   50 GiB  0.23  1.15  155      up
 8    hdd  0.04880   1.00000   50 GiB   88 MiB   47 MiB   7 KiB   41 MiB   50 GiB  0.17  0.86  183      up
                       TOTAL  450 GiB  915 MiB  558 MiB  43 KiB  357 MiB  449 GiB  0.20                   
MIN/MAX VAR: 0.61/1.36  STDDEV: 0.04

 

crush运行图管理

#导出crush运行图

root@ceph-deploy:~/ceph# ceph osd getcrushmap -o crushmap  
43

#叫运行图转换为文本

root@ceph-deploy:~/ceph# crushtool -d /root/ceph/crushmap > crushmap.txt

root@ceph-deploy:~/ceph# cat  crushmap.txt 
# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54

# devices
device 0 osd.0 class hdd
device 1 osd.1 class hdd
device 2 osd.2 class hdd
device 3 osd.3 class hdd
device 4 osd.4 class hdd
device 5 osd.5 class hdd
device 6 osd.6 class hdd
device 7 osd.7 class hdd
device 8 osd.8 class hdd

# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 zone
type 10 region
type 11 root

# buckets
host ceph-node01 {
    id -3        # do not change unnecessarily
    id -4 class hdd        # do not change unnecessarily
    # weight 0.146
    alg straw2
    hash 0    # rjenkins1
    item osd.0 weight 0.049
    item osd.1 weight 0.049
    item osd.2 weight 0.049
}
host ceph-node02 {
    id -5        # do not change unnecessarily
    id -6 class hdd        # do not change unnecessarily
    # weight 0.146
    alg straw2
    hash 0    # rjenkins1
    item osd.3 weight 0.049
    item osd.4 weight 0.049
    item osd.5 weight 0.049
}
host ceph-node03 {
    id -7        # do not change unnecessarily
    id -8 class hdd        # do not change unnecessarily
    # weight 0.146
    alg straw2
    hash 0    # rjenkins1
    item osd.6 weight 0.049
    item osd.7 weight 0.049
    item osd.8 weight 0.049
}
root default {
    id -1        # do not change unnecessarily
    id -2 class hdd        # do not change unnecessarily
    # weight 0.439
    alg straw2
    hash 0    # rjenkins1
    item ceph-node01 weight 0.146
    item ceph-node02 weight 0.146
    item ceph-node03 weight 0.146
}

# rules
rule replicated_rule {
    id 0
    type replicated
    min_size 1
    max_size 10
    step take default
    step chooseleaf firstn 0 type host
    step emit
}

# end crush map

 

上一篇:ceph块存储场景


下一篇:ceph bluestore 写操作源码分析(上)