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.12

时间点与步骤

事件 相关信息 相关机器 详细信息
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 主机中
AI 代码解读

相关脚本

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
AI 代码解读

p2

参考事件

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

相关脚本

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
AI 代码解读

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
AI 代码解读

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
AI 代码解读

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 ]
AI 代码解读

p3

参考事件

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

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
AI 代码解读

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
AI 代码解读
目录
打赏
0
0
0
0
10
分享
相关文章
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
|
9月前
|
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(二)
【TFT彩屏移植】STM32F4移植1.8寸TFT彩屏简明教程(二)
259 0
阿里云云效产品使用问题之 拉取阿里云acr仓库的镜像时,配置内网地址还是公网地址
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
如何使用Sentinel实现流控和降级
通过以上步骤,你可以使用Sentinel实现应用的流量控制和降级操作,以保护系统在高流量或不稳定情况下的稳定性。欢迎关注威哥爱编程,一起学习成长。
250 1
|
12月前
|
SpringBoot异步任务获取HttpServletRequest
这样的操作对于保持异步操作中的请求上下文十分有用,特别是当你需要在日志记录、权限检查或者其他需要请求信息的场景中。确保上下文的正确传递和管理对于构建可靠的,异步处理能力很强的Spring Boot应用至关重要。
224 0
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
219 0
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等