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 主机中

相关脚本

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
目录
相关文章
|
12月前
|
存储 文件存储 对象存储
CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(下)
CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(下)
291 0
|
12月前
|
存储 算法 关系型数据库
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(上)
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用
1087 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

热门文章

最新文章