ceph - 扩容记录

来源:互联网 发布:mac os office 破解版 编辑:程序博客网 时间:2024/05/16 06:03

时间点与步骤

事件 相关信息 相关机器 详细信息 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/bashLANG=en_USdisk=`fdisk -l | grep ^Disk  | grep sectors | grep sd | grep -v sda | awk -F[:\ ]  '{print $2}' | sort`yum install -y hdparmfor partition in  $diskdo  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"1done

p2

参考事件

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

相关脚本

createosd.sh

#!/bin/bashLANG=en_USnum=70                     <- 注意 osd 开始 numberfor ip in $ipsdo        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/bashLANG=en_USnum=70               <--- 注意这里, 是新 osd 的开始 NUMfor ip in  $ipsdo        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++        donedone

authosd.sh

#!/bin/bashLANG=en_USnum=70      <- 注意 osd 开始数字for ip in  $ipsdo        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++        donedone

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/bashstart=1while [ $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        donedonefor ip in $newcephdo ssh $ip 'find /var/lib/ceph/osd/ -maxdepth 1   -name "ceph-*" -exec  touch {}/sysvinit \;'donefor ip in $newcephdo  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'; donefor num in `seq 70 99`; do  ceph tell osd.$num injectargs '--osd_recovery_op_priority 40'; donefor num in `seq 70 99`; do  ceph tell osd.$num injectargs '--osd_disk_threads 5'; done
0 0