ceph - crushmap 扩容记录

简介: 前提参考 ceph - 扩容记录 文档记录了如何进行 ceph 扩容的部署过程最后一步, 需要对 ceph crushmap 进行重定义容量计算新加入 3 台存储节点, 每个存储节点具有 10 个 OSD 节点, 每个 OSD 对应 4TB 空间, 即共增加 3* 10 * 4TB = 120 TB 由于一直都有业务在 ceph 存储

前提

参考 ceph - 扩容记录 文档记录了如何进行 ceph 扩容的部署过程

最后一步, 需要对 ceph crushmap 进行重定义

容量计算

新加入 3 台存储节点, 每个存储节点具有 10 个 OSD 节点, 每个 OSD 对应 4TB 空间, 即共增加 3* 10 * 4TB = 120 TB

由于一直都有业务在 ceph 存储中使用, 假如立即把所有新加入的 ceph 节点存储使用率设定为 100% 会导致 ceph 集群处于一个维护期中, CPU, 网络带宽都会被需要进行恢复的 ceph 影响, 所有业务都会出现数据卡顿问题,

因此, 计划每天晚上只对 ceph osd 进行部分部分扩容,

3台存储节点, 每个存储节点具有 10 个OSD 节点, 每个 OSD 对应 4TB 空间, 每个 OSD 晚上扩展 200GB 空间, 即 3 * 10 * 200GB = 6TB 空间

我们从 2015-12-26 开始, 对 ceph 通过修改 weight 方法, 对 ceph 进行扩容, 每次扩容约为 CEPH 添加 6 TB 磁盘空间

实施

参考脚本

#!/bin/bash
#
#   edit by terry.zeng@vipshop.com
#     last_version: 2015-12-25
#       modify: reweight -> 0.5   || ceph status  ( grep 'misplaced' )
#
#  目标: 自动进行 ceph weight 调整,
#  条件
#   调整时间 start_time 1,  end_time 8 之间
#   ceph 必须是 health_ok 状态
#   最大可用 weight 10
#               需要调整的主机 reweight_host
#
#               邮件辅助 sh: /root/ceph/check_ceph_reweight.sh [只有发生 ceph -s [出现 misplace] 或其状态改变时候才发邮件
#

time=`date +%Y-%m-%d-%H%M%S`
savecrushfile='/root/ceph/crushmap.txt'
start_time=1
end_time=7
reweight=0.5
reweight_host='hh-yun-ceph-cinder014-128054 hh-yun-ceph-cinder021-128071 hh-yun-ceph-cinder022-128072'
max_weight=10.000
now=`date +%k`


### time

if [[ $now -lt $start_time ]] || [[ $now -ge $end_time ]]
then
       exit
fi

#### ceph status

ceph -s | grep 'misplaced' > /dev/null
if [ $? -eq 0 ]
then
        exit
fi

echo $time 'reweight start' >> /root/ceph/reweight_record.txt

###  rewieght

if [ -f $savecrushfile ]
then
        mv $savecrushfile $savecrushfile-$time
fi


ceph osd getcrushmap -o /root/ceph/crushmap.dump
crushtool -d /root/ceph/crushmap.dump -o /root/ceph/crushmap.txt
for host in $reweight_host
do
        weight=`grep $host $savecrushfile | grep item | awk '{print $4}'`
        line=`grep  --line-number $host $savecrushfile  | grep item | awk -F: '{print $1}'`
        new_weight=`echo $weight + $reweight | bc -l`
                                if [ "$new_weight" == "$max_weight" ]
                                then
                                                exit
                                fi
        sed -i "$line"s#$weight#$new_weight# $savecrushfile
done
crushtool -c /root/ceph/crushmap.txt -o /root/ceph/crushmap.done
ceph osd setcrushmap -i /root/ceph/crushmap.done

优化

目前在扩容期间, 对 ceph 集群执行了下面的参数修改

ceph tell osd.\* injectargs '--osd_max_backfills 1  --osd_recovery_max_active=1 --osd_disk_thread_ioprio_class  idel --osd_disk_thread_ioprio_priority 7 --osd_recovery_threads 1 --osd_recovery_op_priority 10  --osd_backfill_scan_min 64 --osd_backfill_scan_max 512’
目录
相关文章
|
12月前
|
存储 算法 关系型数据库
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(上)
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用
1087 0
|
12月前
|
存储 文件存储 对象存储
CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(下)
CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(下)
291 0
|
存储 缓存 固态存储
Ceph缓冲池配置
Ceph缓冲池配置
|
存储 5G KVM
KVM存储池扩容
KVM存储池扩容
118 0
|
存储 Kubernetes 测试技术
k8s使用ceph实现动态持久化存储
简介 本文章介绍如何使用ceph为k8s提供动态申请pv的功能。ceph提供底层存储功能,cephfs方式支持k8s的pv的3种访问模式ReadWriteOnce,ReadOnlyMany ,ReadWriteMany ,RBD支持ReadWriteOnce,ReadOnlyMany两种模式 访问模式只是能力描述,并不是强制执行的,对于没有按pvc声明的方式使用pv,存储提供者应该负责访问时的运行错误。
3409 0
|
存储 安全 关系型数据库
如何从 Ceph (Luminous) 集群中安全移除 OSD
OSD.png 工作中需要从 Ceph 的集群中移除一台存储服务器,挪作他用。Ceph 存储空间即使在移除该存储服务器后依旧够用,所以操作是可行的,但集群已经运行了很长时间,每个服务器上都存储了很多数据,在数据无损的情况下移除,看起来也不简单。
1671 0
|
存储 块存储 测试技术
如何在单节点 Ceph 中配置多数据副本
crush.png 在服务器资源不足,或者测试环境下,Ceph 通常只有一个节点,就算有多个服务器组成集群,往往存储服务器也往往只有一台,Ceph 的默认配置下,只能设置单数据备份,也就是说数据只存了一份,如果磁盘坏了,数据就丢了。
1505 1

热门文章

最新文章