ceph - 扩容记录

时间点与步骤

事件 相关信息 相关机器 详细信息
12/15 10:00 服务器重装,把原来 glusterfs 服务器重装成 el7 240.30.128.54,240.30.128.71,240.30.128.72 利用 kickstart 重装
12/15 11:30 基础配置 维护系统常用基础配置 240.30.128.54,240.30.128.71,240.30.128.72 详情参考 p1
12/16 01:00 ceph 基础配置 配置 ceph 基础信息 240.30.128.54,240.30.128.71,240.30.128.72 详情参考 p2
12/16 01:30 启动 ceph 把新添加的 osd 及对应节点加入 ceph 集群 240.30.128.54,240.30.128.71,240.30.128.72 详情参考 p3
12/16 02:00 优化 ceph 优化 ceph 恢复 240.30.128.54,240.30.128.71,240.30.128.72 详情参考 p4

p1

参考事件

确认主机名正确
确认 ntp 正确
确认磁盘都已经能够被识别, 每个磁盘 4T,
调整内核参数 (echo 4194303 > /proc/sys/kernel/pid_max)
安装 ceph 软件 (0.87)
格式化所有 osd 相关磁盘, 确保开机自动挂载  (参考脚本 initdisk.sh)
导入 ssh 密钥到所有新 ceph 主机中

相关脚本

initdisk.sh

#!/bin/bash
LANG=en_US
disk=`fdisk -l | grep ^Disk  | grep sectors | grep sd | grep -v sda | awk -F[:\ ]  '{print $2}' | sort`
yum install -y hdparm
for partition in  $disk
do
  dd if=/dev/zero of=$partition bs=1M count=100
  parted -s $partition mklabel gpt
  parted $partition mkpart primary xfs 1 100%
  hdparm -z "$partition"1
  mkfs.xfs -f -i size=512  "$partition"1
done

p2

参考事件

创建 osd, 参考脚本 (createosd.sh)
初始化 osd,  参考下面脚本  (initosd.sh)
osd 授权, 参考下面脚本  (authosd.sh)
导出当前 ceph crush map,  并修改新的 crush map 规则,  参考下面 crush map 信息
启动 ceph

相关脚本

createosd.sh

#!/bin/bash
LANG=en_US
num=70                     <- 注意 osd 开始 number
for ip in $ips
do
        diskpart=`ssh $ip "fdisk -l  | grep Linux | grep -v sda" | awk '{print $1}' | sort`
                for partition in $diskpart
                do
                        ssh $ip "ceph osd create"
                        ssh $ip "mkdir /var/lib/ceph/osd/ceph-$num"
                        ssh $ip "echo $partition  /var/lib/ceph/osd/ceph-$num   xfs defaults 0 0 >> /etc/fstab"
                        let num++
                done
        ssh $ip "mount -a"
done

initosd.sh

#!/bin/bash
LANG=en_US
num=70               <--- 注意这里, 是新 osd 的开始 NUM
for ip in  $ips
do
        diskpart=`ssh $ip "fdisk -l  | grep GPT | grep -v sda" | awk '{print $1}' | sort`
        for partition in $diskpart
        do
                ssh $ip "ceph-osd -i $num --mkfs --mkkey --osd-uuid dc4f91c1-8792-4948-b68f-2fcea75f53b9"   <-- 主机 ceph fsid
                let num++
        done
done

authosd.sh

#!/bin/bash
LANG=en_US
num=70      <- 注意 osd 开始数字
for ip in  $ips
do
        diskpart=`ssh $ip "fdisk -l  | grep GPT | grep -v sda" | awk '{print $1}' | sort`
        for partition in $diskpart
        do
                ssh $ip "ceph auth add osd.$num osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-$num/keyring"
                let num++
        done
done

crushmap 获得及重新导入方法

获得默认 crushmap (加密)      [ ceph osd getcrushmap -o crushmap.dump ]
备份当前 crushmap  [ cp  crushmap.dump crushmap.dump_20151218  <- 备份这个当前 crush map ]
转换crushmap 格式(加密格式 -> 明文)  [ crushtool -d crushmap.dump -o crushmap.txt ]
转换 crushmap 格式(明文 -> 加密格式)   [ crushtool -c crushmap.txt -o crushmap.done ]
重新使用新 crushmap  [ ceph osd setcrushmap -i crushmap.done ]

p3

参考事件

先设定 norecovery,  noin 模式
    ceph osd set noin
    ceph osd set norecover
启动 osd
参考启动脚本  (startosd.sh)
恢复 noin,  norecovery
    ceph osd unset noin
    ceph osd unset norecover

startosd.sh

#!/bin/bash
start=1
while [ $start -le 3 ]
do
        for ip in $newceph
        do
                ssh_port=`nmap -p22 $ip | grep '22/tcp' | awk '{print $2}'`
                ssh_status=${ssh_port:-faile}
                if [ "$ssh_status" == "faile" ]
                then
                        start=1
                        break
                else
                        start=10
                fi
        done
done

for ip in $newceph
do
 ssh $ip 'find /var/lib/ceph/osd/ -maxdepth 1   -name "ceph-*" -exec  touch {}/sysvinit \;'
done

for ip in $newceph
do
  ssh $ip "/etc/init.d/ceph -a start osd"
done

p4

参考事件

for num in `seq 70 99`; do  ceph tell osd.$num injectargs '--osd_recovery_threads 5'; done
for num in `seq 70 99`; do  ceph tell osd.$num injectargs '--osd_recovery_op_priority 40'; done
for num in `seq 70 99`; do  ceph tell osd.$num injectargs '--osd_disk_threads 5'; done
时间: 2024-10-25 11:12:31

ceph - 扩容记录的相关文章

ceph - crushmap 扩容记录

前提 参考 ceph - 扩容记录 文档记录了如何进行 ceph 扩容的部署过程 最后一步, 需要对 ceph crushmap 进行重定义 容量计算 新加入 3 台存储节点, 每个存储节点具有 10 个 OSD 节点, 每个 OSD 对应 4TB 空间, 即共增加 3* 10 * 4TB = 120 TB 由于一直都有业务在 ceph 存储中使用, 假如立即把所有新加入的 ceph 节点存储使用率设定为 100% 会导致 ceph 集群处于一个维护期中, CPU, 网络带宽都会被需要进行恢复的

ceph - 索引

架构与部署 openstack 与 ceph (架构) openstack 与 ceph (monitor初始化) openstack 与 ceph (osd 部署) openstack 与 ceph ( pool 管理 ) openstack 管理二十二 - cinder 连接多个存储 backend openstack 管理二十三 - nova compute 连接 ceph 集群 ceph - crush map 与 pool ceph - 更改 ceph journal 位置 故障与测试

ceph ( requests are blocked ) 异常解决方法

最近在执行 ceph 扩容 注: 如果有条件, 建议不要扩容, 直接创建新 POOL, 这样会避免很多异常与影响 扩容每天大约 2T 空间, 扩容过程中, pg 会对数据执行自动迁移, 但在迁移过程中会遇到下面异常错误 [root@hh-yun-puppet-129021 ~]# ceph -s cluster dc4f91c1-8792-4948-b68f-2fcea75f53b9 health HEALTH_WARN 1 requests are blocked > 32 sec monma

ceph 故障分析(backfill_toofull)

在执行了 ceph 扩容之前, 发现长时间内都具有下面的状态存在 参考下面信息 # ceph -s cluster dc4f91c1-8792-4948-b68f-2fcea75f53b9 health HEALTH_WARN 13 pgs backfill_toofull; 1 pgs degraded; 1 pgs stuck degraded; 13 pgs stuck unclean; 9 requests are blocked > 32 sec; recovery 190/54152

openstack 管理二十四 - ceph 与 vm 连接测试记录

目的 测试 ceph 与 vm 连接与使用 创建 vm 主机 128030 及 129094 是全新安装并利用 puppet 推送的 nova compute 主机 计划在这两个主机上进行 vm 连接 ceph 测试 nova boot --flavor b2c_web_1core --image Centos6.3_1.3 --security_group default --nic net-id=9106aee4-2dc0-4a6d-a789-10c53e2b88c1 ceph-test01

【翻译】 问HS:设计和实现可扩容服务?

翻译自:Ask HS: Design And Implementation Of Scalable Services? 我们通过网络编写代理来部署/分布.代理每15秒,甚至可以是每5秒发送一次数据.致力于服务/系统工作为了让所有代理能够通过临界有效载荷推送数据/元组.高达5%的下降率是可以接受的.最终的数据将会被隔离以及存入到数据库管理(DBMS)系统(目前我们使用MYSQL) 我正在寻找答案的问题. 1.  客户端/服务端通信,代理能张贴数据.发送数据的状态并不重要,但是,如果服务端系统基于数

阿里云如何扩容数据盘(Linux 实例)

阿里云如何扩容数据盘(Linux 实例) 随着业务的增长,您的磁盘容量可能无法满足数据存储的需要,这时您可以扩容磁盘. 本文档介绍的方法只适用于数据盘 .如果要扩容系统盘 ,需要采用更换系统盘的方式.请参考 更换系统盘. 扩容须知 扩容前 建议在扩容磁盘之前 手动创建快照,以备份数据. 磁盘上如果正在执行创建快照的操作,则此时不允许进行扩容操作. 只做磁盘容量的扩容,不做文件系统的扩容. 支持普通盘的扩容,不支持本地盘(本地磁盘.本地 SSD 盘)的扩容. 挂载在实例上的数据盘,只有实例 为 运

ceph distributed storage , suse storage based on it

早上起床的时候看朋友圈, 看到少聪分享的一个suse storage的链接(基于ceph改的), 非常棒. http://www.suse.com/company/press/2014/11/suse-offers-beta-preview-of-suse-storage.html ceph是一个很好的开源分布式存储, 光看介绍已经很兴奋了. 先记录一下, 好好研究. Ceph is a distributed object store and file system designed to p

kubernetes学习记录(7)——弹性伸缩与滚动升级

kubernetes学习记录(7)--弹性伸缩与滚动升级. 弹性伸缩 弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源. Pod的弹性伸缩就是修改Replication Controller的Pod副本数.可以通过Kubectl scale命令实现. 创建Replication Controller test-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: test-rc spec: replicas: 2