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